From e9f17a50374d536873265b723392a2a9370bc67f Mon Sep 17 00:00:00 2001 From: HUANGBANGLIN Date: Wed, 29 Oct 2025 13:48:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=A5=9E=E7=A5=96=E7=89=8C=E4=BD=8D?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E7=B5=84=EF=BC=8C=E6=8E=9B=E5=96=AE?= =?UTF-8?q?=E6=A8=A1=E7=B5=84=E5=89=8D=E7=AB=AFURL=E6=B7=BB=E5=8A=A0HTTP?= =?UTF-8?q?=5FHOST?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/SQL/AncestralTabletStatus_script.sql | Bin 0 -> 14798 bytes data/memo/新增 文字文件.md | 11 + ...主牌管理系統資料字典設計.docx | Bin 0 -> 17666 bytes web/App_Code/Model/Model.Context.cs | 5 + web/App_Code/Model/Model.cs | 143 +++ web/App_Code/Model/Model.edmx | 426 ++++++++ web/App_Code/Model/Model.edmx.diagram | 11 + .../api/AncestralTabletAreaController.cs | 180 ++++ .../api/AncestralTabletPositionController.cs | 184 ++++ .../api/AncestralTabletRecordController.cs | 361 +++++++ .../AncestralTabletStatisticsController.cs | 38 + .../api/AncestralTabletStatusController.cs | 29 + web/App_Code/api/guadanOrderController.cs | 2 - .../ancestraltabletarea/index.aspx | 908 ++++++++++++++++++ .../ancestraltabletarea/index.aspx.cs | 14 + .../ancestraltabletposition/index.aspx | 569 +++++++++++ .../ancestraltabletposition/index.aspx.cs | 14 + .../ancestraltabletstatistics/index.aspx | 126 +++ .../ancestraltabletstatistics/index.aspx.cs | 14 + .../ancestraltabletuselist/create.aspx | 15 + .../ancestraltabletuselist/create.aspx.cs | 14 + .../ancestraltabletuselist/detail.aspx | 99 ++ .../ancestraltabletuselist/detail.aspx.cs | 14 + .../ancestraltabletuselist/edit.aspx | 419 ++++++++ .../ancestraltabletuselist/edit.aspx.cs | 14 + .../ancestraltabletuselist/index.aspx | 192 ++++ .../ancestraltabletuselist/index.aspx.cs | 14 + web/admin/guadan/create.aspx | 40 +- web/admin/guadan/guest/index.aspx | 2 +- web/admin/guadan/index.aspx | 72 +- web/admin/guadan/statistics_table.aspx | 2 +- web/admin/guadan/view.aspx | 6 +- web/admin/region/bed/bedstatus/index.aspx | 4 +- web/admin/region/bed/index.aspx | 4 +- web/admin/region/index.aspx | 16 +- web/admin/regiontype/index.aspx | 4 +- 36 files changed, 3889 insertions(+), 77 deletions(-) create mode 100644 data/SQL/AncestralTabletStatus_script.sql create mode 100644 data/memo/新增 文字文件.md create mode 100644 data/神主牌管理系統資料字典設計.docx create mode 100644 web/App_Code/api/AncestralTabletAreaController.cs create mode 100644 web/App_Code/api/AncestralTabletPositionController.cs create mode 100644 web/App_Code/api/AncestralTabletRecordController.cs create mode 100644 web/App_Code/api/AncestralTabletStatisticsController.cs create mode 100644 web/App_Code/api/AncestralTabletStatusController.cs create mode 100644 web/admin/ancestraltablet/ancestraltabletarea/index.aspx create mode 100644 web/admin/ancestraltablet/ancestraltabletarea/index.aspx.cs create mode 100644 web/admin/ancestraltablet/ancestraltabletposition/index.aspx create mode 100644 web/admin/ancestraltablet/ancestraltabletposition/index.aspx.cs create mode 100644 web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx create mode 100644 web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx.cs create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/create.aspx create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/create.aspx.cs create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx.cs create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx.cs create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/index.aspx create mode 100644 web/admin/ancestraltablet/ancestraltabletuselist/index.aspx.cs diff --git a/data/SQL/AncestralTabletStatus_script.sql b/data/SQL/AncestralTabletStatus_script.sql new file mode 100644 index 0000000000000000000000000000000000000000..86204e4f2fc6e9152a52bd72e34c1d43ab426fe9 GIT binary patch literal 14798 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 Fe*hue>em1O literal 0 HcmV?d00001 diff --git a/web/App_Code/Model/Model.Context.cs b/web/App_Code/Model/Model.Context.cs index b3af8b4..55693ea 100644 --- a/web/App_Code/Model/Model.Context.cs +++ b/web/App_Code/Model/Model.Context.cs @@ -89,6 +89,11 @@ namespace Model public virtual DbSet RegionRoomBedStatus { get; set; } public virtual DbSet RegionType { get; set; } public virtual DbSet Room { get; set; } + public virtual DbSet AncestralTabletArea { get; set; } + public virtual DbSet AncestralTabletPosition { get; set; } + public virtual DbSet AncestralTabletPositionRecord { get; set; } + public virtual DbSet AncestralTabletRegistrant { get; set; } + public virtual DbSet AncestralTabletStatus { get; set; } public virtual int pager_eztrust(Nullable startRowIndex, Nullable pageSize, string tableName, string columnName, string sqlWhere, string orderBy, ObjectParameter rowCount) { diff --git a/web/App_Code/Model/Model.cs b/web/App_Code/Model/Model.cs index 1f090d4..450d467 100644 --- a/web/App_Code/Model/Model.cs +++ b/web/App_Code/Model/Model.cs @@ -523,6 +523,139 @@ namespace Model using System; using System.Collections.Generic; + public partial class AncestralTabletArea + { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public AncestralTabletArea() + { + this.AncestralTabletArea1 = new HashSet(); + this.AncestralTabletPosition = new HashSet(); + } + + public int AreaId { get; set; } + public string AreaName { get; set; } + public string AreaCode { get; set; } + public Nullable ParentAreaId { get; set; } + public string AreaType { get; set; } + public Nullable Price { get; set; } + public Nullable SortOrder { get; set; } + public bool IsDisabled { get; set; } + public string Description { get; set; } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public virtual ICollection AncestralTabletArea1 { get; set; } + public virtual AncestralTabletArea AncestralTabletArea2 { get; set; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public virtual ICollection AncestralTabletPosition { get; set; } + } +} +namespace Model +{ + using System; + using System.Collections.Generic; + + public partial class AncestralTabletPosition + { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public AncestralTabletPosition() + { + this.AncestralTabletRegistrant = new HashSet(); + } + + public int PositionId { get; set; } + public int AreaId { get; set; } + public string PositionCode { get; set; } + public string PositionName { get; set; } + public Nullable Price { get; set; } + public string StatusCode { get; set; } + public string Description { get; set; } + public Nullable RowNo { get; set; } + public Nullable ColumnNo { get; set; } + + public virtual AncestralTabletArea AncestralTabletArea { get; set; } + public virtual AncestralTabletStatus AncestralTabletStatus { get; set; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public virtual ICollection AncestralTabletRegistrant { get; set; } + } +} +namespace Model +{ + using System; + using System.Collections.Generic; + + public partial class AncestralTabletPositionRecord + { + public int RecordId { get; set; } + public string RegistrantCode { get; set; } + public string NPTitle { get; set; } + public System.DateTime NPStandDate { get; set; } + public string NPYangShang { get; set; } + public string WPContent { get; set; } + public System.DateTime CreatedAt { get; set; } + public Nullable UpdatedAt { get; set; } + + public virtual AncestralTabletRegistrant AncestralTabletRegistrant { get; set; } + } +} +namespace Model +{ + using System; + using System.Collections.Generic; + + public partial class AncestralTabletRegistrant + { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public AncestralTabletRegistrant() + { + this.AncestralTabletPositionRecord = new HashSet(); + } + + public string RegistrantCode { get; set; } + public string Name { get; set; } + public string Phone { get; set; } + public string Address { get; set; } + public System.DateTime RegisterDate { get; set; } + public Nullable Price { get; set; } + public Nullable PositionId { get; set; } + public System.DateTime StartDate { get; set; } + public Nullable EndDate { get; set; } + public bool IsLongTerm { get; set; } + public bool IsActive { get; set; } + public System.DateTime CreatedAt { get; set; } + public Nullable UpdatedAt { get; set; } + public bool IsEnd { get; set; } + + public virtual AncestralTabletPosition AncestralTabletPosition { get; set; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public virtual ICollection AncestralTabletPositionRecord { get; set; } + } +} +namespace Model +{ + using System; + using System.Collections.Generic; + + public partial class AncestralTabletStatus + { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public AncestralTabletStatus() + { + this.AncestralTabletPosition = new HashSet(); + } + + public string StatusCode { get; set; } + public string StatusName { get; set; } + public string StatusType { get; set; } + + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public virtual ICollection AncestralTabletPosition { get; set; } + } +} +namespace Model +{ + using System; + using System.Collections.Generic; + public partial class appellation { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] @@ -857,6 +990,12 @@ namespace Model public partial class GuaDanOrder { + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public GuaDanOrder() + { + this.GuaDanOrderGuest = new HashSet(); + } + public Nullable StartDate { get; set; } public Nullable EndDate { get; set; } public Nullable CreateUser { get; set; } @@ -874,6 +1013,8 @@ namespace Model public virtual admin admin { get; set; } public virtual follower followers { get; set; } + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] + public virtual ICollection GuaDanOrderGuest { get; set; } } } namespace Model @@ -898,6 +1039,7 @@ namespace Model public Nullable CheckInAt { get; set; } public Nullable CheckOutAt { get; set; } public string StatusCode { get; set; } + public Nullable OrderUuid { get; set; } public virtual follower followers { get; set; } public virtual RegionRoomBed RegionRoomBed { get; set; } @@ -905,6 +1047,7 @@ namespace Model public virtual RegionRoomBedStatus RegionRoomBedStatus { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection RegionAndRoomAndBedSchedule { get; set; } + public virtual GuaDanOrder GuaDanOrder { get; set; } } } namespace Model diff --git a/web/App_Code/Model/Model.edmx b/web/App_Code/Model/Model.edmx index 8e40781..e887b85 100644 --- a/web/App_Code/Model/Model.edmx +++ b/web/App_Code/Model/Model.edmx @@ -254,6 +254,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -454,6 +522,7 @@ + @@ -910,6 +979,18 @@ + + + + + + + + + + + + @@ -1178,6 +1259,18 @@ + + + + + + + + + + + + @@ -1372,6 +1465,18 @@ + + + + + + + + + + + + @@ -1506,6 +1611,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -1718,6 +1847,18 @@ + + + + + + + + + + + + @@ -1966,6 +2107,11 @@ + + + + + @@ -2010,6 +2156,10 @@ + + + + @@ -2094,6 +2244,10 @@ + + + + @@ -2158,6 +2312,10 @@ + + + + @@ -2202,6 +2360,14 @@ + + + + + + + + @@ -2270,6 +2436,10 @@ + + + + @@ -4348,6 +4518,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4641,6 +4840,7 @@ + @@ -4660,6 +4860,8 @@ + + @@ -4912,6 +5114,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5773,6 +6125,7 @@ + @@ -5885,6 +6238,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/App_Code/Model/Model.edmx.diagram b/web/App_Code/Model/Model.edmx.diagram index c1722e4..4de4ec0 100644 --- a/web/App_Code/Model/Model.edmx.diagram +++ b/web/App_Code/Model/Model.edmx.diagram @@ -151,6 +151,17 @@ + + + + + + + + + + + diff --git a/web/App_Code/api/AncestralTabletAreaController.cs b/web/App_Code/api/AncestralTabletAreaController.cs new file mode 100644 index 0000000..614f134 --- /dev/null +++ b/web/App_Code/api/AncestralTabletAreaController.cs @@ -0,0 +1,180 @@ +using Model; +using PagedList; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Data.Entity; +using System.Linq; +using System.Threading.Tasks; +using System.Web; +using System.Web.Http; +using static AncestralTabletPositionController; +using static regionController; + +/// +/// AncestralTabletController 的摘要描述 +/// +public class AncestralTabletAreaController: ApiController +{ + private Model.ezEntities _db = new Model.ezEntities(); + public class AreaViewModel + { + public int? AreaId { get; set; } + public string AreaName { get; set; } + + [Required(ErrorMessage = "區域編號為必填")] + public string AreaCode { get; set; } + public int? ParentAreaId { get; set; } + public string AreaType { get; set; } + public int? Price { get; set; } + public int? SortOrder { get; set; } + public bool IsDisabled { get; set; } = false; + public string Description { get; set; } + } + public class RegionDto + { + public int AreaId { get; set; } + public string AreaName { get; set; } + public string AreaCode { get; set; } + public int? SortOrder { get; set; } + public int? ParentAreaId { get; set; } + public string AreaType { get; set; } + public bool IsDisabled { get; set; } + public string Description { get; set; } + public int? Price { set; get; } + + public List Children { get; set; } = new List(); + } + [HttpGet] + [Route("api/ancestraltablet/area/getlist")] + public IHttpActionResult GetList() + { + var allArea = _db.AncestralTabletArea.ToList(); + + var rootRegions = allArea + .Where(r => r.ParentAreaId == null) + .OrderBy(r => r.SortOrder) + .ToList(); + + var tree = rootRegions + .Select(r => BuildRegionDto(r, allArea)) + .ToList(); + return Ok(tree); + + } + [HttpGet] + [Route("api/ancestraltablet/area/getereawithposition")] + public IHttpActionResult GetEreaWithPosition() + { + //获取有神位位置的区域 + var allArea = _db.AncestralTabletArea + .Where(a => a.AncestralTabletPosition.Count()>0) + .Select(a => new + { + a.AreaId, + a.AreaName, + }) + .ToList(); + return Ok(allArea); + + } + private RegionDto BuildRegionDto(AncestralTabletArea area, List allArea) + { + return new RegionDto + { + AreaId = area.AreaId, + AreaName = area.AreaName, + AreaCode = area.AreaCode, + SortOrder = area.SortOrder, + ParentAreaId = area.ParentAreaId, + AreaType = area.AreaType, + IsDisabled = area.IsDisabled, + Description = area.Description, + Price = area.Price, + Children = allArea + .Where(r => r.ParentAreaId == area.AreaId) + .OrderBy(r => r.SortOrder) + .Select(child => BuildRegionDto(child, allArea)) + .ToList(), + }; + } + [HttpPost] + [Route("api/ancestraltablet/area/create")] + public async Task CreateArea([FromBody] AreaViewModel tabletArea) + { + if (!ModelState.IsValid) + return BadRequest(ModelState); + try + { + var area = new AncestralTabletArea + { + AreaName = tabletArea.AreaName, + AreaCode = tabletArea.AreaCode, + ParentAreaId = tabletArea.ParentAreaId, + AreaType = tabletArea.AreaType, + Price = tabletArea.Price, + SortOrder = tabletArea.SortOrder, + IsDisabled = tabletArea.IsDisabled, + Description = tabletArea.Description + }; + _db.AncestralTabletArea.Add(area); + await _db.SaveChangesAsync(); + tabletArea.AreaId = area.AreaId; + return Ok(new { message = "區域建立成功", area = tabletArea }); + } + catch (Exception ex) + { + return InternalServerError(ex); + } + } + [HttpPost] + [Route("api/ancestraltablet/area/edit")] + public async Task EditArea([FromBody] AreaViewModel tabletArea) + { + if (!ModelState.IsValid) + return BadRequest(ModelState); + try + { + var oldArea = _db.AncestralTabletArea.Find(tabletArea.AreaId); + if (oldArea == null) + { + return NotFound(); + } + oldArea.AreaName = tabletArea.AreaName; + oldArea.AreaCode = tabletArea.AreaCode; + oldArea.ParentAreaId = tabletArea.ParentAreaId; + oldArea.Price = tabletArea.Price; + oldArea.SortOrder = tabletArea.SortOrder; + oldArea.Description = tabletArea.Description; + oldArea.IsDisabled = tabletArea.IsDisabled; + await _db.SaveChangesAsync(); + return Ok(new { message = "區域修改成功", area = tabletArea }); + } + catch (Exception ex) + { + return InternalServerError(ex); + } + } + [HttpGet] + [Route("api/ancestraltablet/area/position/getlist")] + public IHttpActionResult GetPositionList([FromUri] int areaId) + { + var positions = _db.AncestralTabletPosition + .Where(p => p.AreaId == areaId) + .Select(p => new AncestralTabletPositionDto + { + PositionId = p.PositionId, + AreaId = p.AreaId, + PositionCode = p.PositionCode, + PositionName = p.PositionName, + Price = p.Price, + StatusCode = p.StatusCode, + Description = p.Description, + RowNo = p.RowNo, + ColumnNo = p.ColumnNo + }) + .ToList(); + + return Ok(positions); + } +} \ No newline at end of file diff --git a/web/App_Code/api/AncestralTabletPositionController.cs b/web/App_Code/api/AncestralTabletPositionController.cs new file mode 100644 index 0000000..c4e8316 --- /dev/null +++ b/web/App_Code/api/AncestralTabletPositionController.cs @@ -0,0 +1,184 @@ +using Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Web; +using System.Web.Http; + +/// +/// AncestralTabletPositionController 的摘要描述 +/// +public class AncestralTabletPositionController: ApiController +{ + private Model.ezEntities _db = new Model.ezEntities(); + + [HttpGet] + [Route("api/ancestraltablet/position/getlist")] + public IHttpActionResult GetList([FromUri] int areaId) + { + var positions = _db.AncestralTabletPosition + .Where(p => p.AreaId == areaId) + .Select(p => new + { + PositionId = p.PositionId, + AreaId = p.AreaId, + PositionCode = p.PositionCode, + PositionName = p.PositionName, + Price = p.Price, + StatusCode = p.StatusCode, + Description = p.Description, + RowNo = p.RowNo, + ColumnNo = p.ColumnNo, + AncestralTabletRegistrant = _db.AncestralTabletRegistrant + .Where(r => r.PositionId == p.PositionId && r.IsActive == true) + .Select(r => new + { + r.RegistrantCode, + r.Name, + r.Phone, + r.Address, + r.RegisterDate, + r.Price, + r.StartDate, + r.EndDate, + r.IsLongTerm, + r.IsActive, + + // 嵌套查询牌位记录(PositionRecord) + TabletRecord = r.AncestralTabletPositionRecord + .Select(pr => new + { + pr.RecordId, + pr.RegistrantCode, + pr.NPTitle, + pr.NPStandDate, + pr.NPYangShang, + pr.WPContent + }) + .FirstOrDefault() + }) + .FirstOrDefault() + }) + .ToList(); + + return Ok(positions); + } + [HttpGet] + [Route("api/ancestraltablet/position/shortlist")] + public IHttpActionResult GetListWithShort([FromUri] int areaId) + { + //获取位置列表,简单信息 + var positions = _db.AncestralTabletPosition + .Where(p => p.AreaId == areaId) + .Select(p => new + { + PositionId = p.PositionId, + AreaId = p.AreaId, + PositionCode = p.PositionCode, + PositionName = p.PositionName, + Price = p.Price, + StatusCode = p.StatusCode, + Description = p.Description, + RowNo = p.RowNo, + ColumnNo = p.ColumnNo, + isCanUse = p.StatusCode == "available" ? true : false, + }) + .ToList(); + + return Ok(positions); + } + [HttpPost] + [Route("api/ancestraltablet/position/batchcreate")] + public IHttpActionResult BatchCreatePosition([FromBody] List positions) + { + if (positions == null || positions.Count == 0) + return BadRequest("未接收到任何位置数据"); + + try + { + foreach (var dto in positions) + { + var entity = new AncestralTabletPosition + { + AreaId = dto.AreaId, + PositionCode = dto.PositionCode, + PositionName = dto.PositionName, + Price = dto.Price, + StatusCode = dto.StatusCode, + Description = dto.Description, + RowNo = dto.RowNo, + ColumnNo = dto.ColumnNo + }; + + _db.AncestralTabletPosition.Add(entity); + } + + _db.SaveChanges(); + + return Ok(new { message = "批量新增成功", count = positions.Count }); + } + catch (Exception ex) + { + string message = ex.InnerException?.InnerException?.Message ?? ex.Message; + + return Content(HttpStatusCode.InternalServerError, new + { + message = "批量新增失败", + exceptionMessage = message + }); + } + } + + [HttpPost] + [Route("api/ancestraltablet/position/edit")] + public IHttpActionResult EditPosition([FromBody] AncestralTabletPositionDto pos) + { + var oldPos = _db.AncestralTabletPosition + .FirstOrDefault(p => p.AreaId == pos.AreaId && p.PositionCode == pos.PositionCode); + if(oldPos == null) return NotFound(); + try + { + oldPos.PositionName = pos.PositionName; + oldPos.Price = pos.Price; + oldPos.StatusCode = pos.StatusCode; + + // 保存到数据库 + _db.SaveChanges(); + } + catch (Exception ex) + { + return InternalServerError(ex); + } + return Ok(new { message="更新成功", code=200}); + } + [HttpDelete] + [Route("api/ancestraltablet/position/delete/{positionId}")] + public IHttpActionResult DeletePosition(int positionId) + { + var pos = _db.AncestralTabletPosition.FirstOrDefault(p => p.PositionId == positionId); + + if (pos == null) + { + return NotFound(); + } + + _db.AncestralTabletPosition.Remove(pos); + _db.SaveChanges(); + + return Ok("删除成功"); + } + public class AncestralTabletPositionDto + { + public int PositionId { get; set; } + public int AreaId { get; set; } + public string PositionCode { get; set; } + public string PositionName { get; set; } + public int? Price { get; set; } + public string StatusCode { get; set; } + public string Description { get; set; } + public int? RowNo { get; set; } + public int? ColumnNo { get; set; } + } + +} \ No newline at end of file diff --git a/web/App_Code/api/AncestralTabletRecordController.cs b/web/App_Code/api/AncestralTabletRecordController.cs new file mode 100644 index 0000000..22c3e15 --- /dev/null +++ b/web/App_Code/api/AncestralTabletRecordController.cs @@ -0,0 +1,361 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; +using System.Web.UI.WebControls; + +/// +/// AncestralTabletRecordController 的摘要描述 +/// +public class AncestralTabletRecordController: ApiController +{ + private Model.ezEntities _db = new Model.ezEntities(); + [HttpGet] + [Route("api/ancestraltablet/registrant/getlist")] + public IHttpActionResult GetRegistrantList() + { + //获取登记人列表 + var data = _db.AncestralTabletRegistrant.Select(x => new + { + x.RegistrantCode, + x.Name, + x.Phone, + x.Address, + x.RegisterDate, + x.Price, + x.PositionId, + x.StartDate, + x.EndDate, + x.IsLongTerm, + x.IsActive, + x.CreatedAt, + x.UpdatedAt + }) + .Take(1000) // 取前1000条 + .ToList(); ; + return Ok(data); + } + [HttpPost] + [Route("api/ancestraltablet/registrant/getlistbypage")] + public IHttpActionResult GetRegistrantListByPage([FromBody] RegistrantSearchDto searchDto) + { + //获取登记人列表 + var query = _db.AncestralTabletRegistrant.AsQueryable(); + if( !string.IsNullOrEmpty(searchDto.searchName)) + { + query = query.Where(r => r.Name == searchDto.searchName); + } + var tatol = query.Count(); + var data = query.Select(x => new + { + x.RegistrantCode, + x.Name, + x.Phone, + x.Address, + x.RegisterDate, + x.Price, + x.PositionId, + x.StartDate, + x.EndDate, + x.IsLongTerm, + x.IsActive, + x.CreatedAt, + x.UpdatedAt + }) + .OrderByDescending(a => a.CreatedAt) + .Skip((searchDto.page - 1) * searchDto.pageSize) + .Take(searchDto.pageSize) // 取前1000条 + .ToList(); + return Ok(new + { + data = data, + total = tatol + + }); + } + + [HttpGet] + [Route("api/ancestraltablet/registrant/getbycode")] + public IHttpActionResult GetRegistrantByCode([FromUri] string registrantCode) + { + var r = _db.AncestralTabletRegistrant.Find(registrantCode); + if (r == null) + { + return NotFound(); + } + var rDto = new + { + r.RegistrantCode, + r.Name, + r.Phone, + r.Address, + r.RegisterDate, + r.Price, + r.StartDate, + r.EndDate, + r.IsLongTerm, + r.IsActive, + r.PositionId, + positionName = r.AncestralTabletPosition?.PositionName, + + + // 嵌套查询牌位记录(PositionRecord) + TabletRecord = r.AncestralTabletPositionRecord + .Select(pr => new + { + pr.RecordId, + pr.RegistrantCode, + pr.NPTitle, + pr.NPStandDate, + pr.NPYangShang, + pr.WPContent, + }) + .FirstOrDefault() + }; + return Ok(rDto); + } + + [HttpPost] + [Route("api/ancestraltablet/registrant/create")] + public IHttpActionResult CreateRegistrant([FromBody] AncestralTabletRegistrantDto dto) + { + //新增登记人api + if (dto == null) + { + return BadRequest("请求体不能为空"); + } + if(!string.IsNullOrEmpty(dto.RegistrantCode)) + { + return BadRequest("RegistrantCode 应传递空"); + } + try + { + dto.RegistrantCode = GenerateRegistrantCode(); + + // 设置默认创建时间 + dto.CreatedAt = DateTime.Now; + var entity = new Model.AncestralTabletRegistrant + { + RegistrantCode = dto.RegistrantCode, + Name = dto.Name, + Phone = dto.Phone, + Address = dto.Address, + RegisterDate = dto.RegisterDate, + Price = dto.Price, + PositionId = dto.PositionId, + StartDate = dto.startDate, + EndDate = dto.endDate, + IsLongTerm = dto.isLongTerm, + IsActive = dto.isActive, + CreatedAt = dto.CreatedAt, + UpdatedAt = dto.UpdatedAt + }; + + // 假设你有一个 EF DbContext(如 _db) + _db.AncestralTabletRegistrant.Add(entity); + if (dto.PositionId != null) + { + var position = _db.AncestralTabletPosition + .FirstOrDefault(p => p.PositionId == dto.PositionId); + + if (position != null) + { + position.StatusCode = "used"; // 或者根据你的枚举/字段设置 + } + } + + _db.SaveChanges(); + + return Ok(new { message = "登记成功", registrantCode = entity.RegistrantCode }); + } + catch (Exception ex) + { + return InternalServerError(ex); + } + } + [HttpPost] + [Route("api/ancestraltablet/registrant/update")] + public IHttpActionResult UpdateRegistrant([FromBody] AncestralTabletRegistrantDto dto) + { + if (dto == null) + { + return BadRequest("请求体不能为空"); + } + + if (string.IsNullOrWhiteSpace(dto.RegistrantCode)) + { + return BadRequest("缺少 RegistrantCode,无法进行更新操作"); + } + + try + { + // 查找原始资料 + var entity = _db.AncestralTabletRegistrant + .FirstOrDefault(r => r.RegistrantCode == dto.RegistrantCode); + + if (entity == null) + { + return NotFound(); // 没有对应记录 + } + + // ===== 处理安位状态 ===== + if (entity.PositionId != dto.PositionId) + { + // 1. 原来的安位设置为可用 + if (entity.PositionId != null) + { + var oldPosition = _db.AncestralTabletPosition + .FirstOrDefault(p => p.PositionId == entity.PositionId); + + if (oldPosition != null) + { + oldPosition.StatusCode = "available"; // 可用 + } + } + + // 2. 新的安位设置为已使用 + if (dto.PositionId != null) + { + var newPosition = _db.AncestralTabletPosition + .FirstOrDefault(p => p.PositionId == dto.PositionId); + + if (newPosition != null) + { + newPosition.StatusCode = "used"; // 已使用 + } + } + + // 更新登记人安位 + entity.PositionId = dto.PositionId; + } + + // 更新其它字段 + entity.Name = dto.Name; + entity.Phone = dto.Phone; + entity.Address = dto.Address; + entity.RegisterDate = dto.RegisterDate; + entity.Price = dto.Price; + entity.StartDate = dto.startDate; + entity.EndDate = dto.endDate; + entity.IsLongTerm = dto.isLongTerm; + entity.IsActive = dto.isActive; + entity.UpdatedAt = DateTime.Now; + + _db.SaveChanges(); + + return Ok(new { message = "登记人更新成功", registrantCode = entity.RegistrantCode }); + } + catch (Exception ex) + { + return InternalServerError(ex); + } + } + + [HttpPost] + [Route("api/ancestraltablet/pw/create")] + public IHttpActionResult CreatePW([FromBody] AncestralTabletPositionRecordDto dto) + { + if (dto == null) + return BadRequest("请求体不能为空"); + + if (string.IsNullOrEmpty(dto.RegistrantCode)) + return BadRequest("登记人编号(RegistrantCode)不能为空"); + + try + { + // 映射到数据库实体 + var entity = new Model.AncestralTabletPositionRecord + { + RegistrantCode = dto.RegistrantCode, + NPTitle = dto.NPTitle, + NPStandDate = dto.NPStandDate, + NPYangShang = dto.NPYangShang, + WPContent = dto.WPContent, + CreatedAt = DateTime.Now, + UpdatedAt = null + }; + + _db.AncestralTabletPositionRecord.Add(entity); + _db.SaveChanges(); + + return Ok(new { message = "牌位登记成功", recordId = entity.RecordId }); + } + catch (Exception ex) + { + return InternalServerError(ex); + } + } + [HttpPost] + [Route("api/ancestraltablet/pw/update")] + public IHttpActionResult UpdatePW([FromBody] AncestralTabletPositionRecordDto dto) + { + if (dto == null) + return BadRequest("请求体不能为空"); + try + { + var entity = _db.AncestralTabletPositionRecord.Find(dto.RecordId); + // 映射到数据库实体 + if (entity == null) + return BadRequest("牌位不存在,更新失败"); + entity.RegistrantCode = dto.RegistrantCode; + entity.NPTitle = dto.NPTitle; + entity.NPStandDate = dto.NPStandDate; + entity.NPYangShang = dto.NPYangShang; + entity.WPContent = dto.WPContent; + entity.UpdatedAt = DateTime.Now; + _db.SaveChanges(); + + return Ok(new { message = "牌位更新成功", recordId = entity.RecordId }); + } + catch (Exception ex) + { + return InternalServerError(ex); + } + } + + public string GenerateRegistrantCode(string prefix = "REG", int randomLength = 6) + { + string datePart = DateTime.Now.ToString("yyyyMMdd"); + + string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + var random = new Random(); + var suffix = new string(Enumerable.Repeat(chars, randomLength) + .Select(s => s[random.Next(s.Length)]).ToArray()); + + return $"{prefix}{datePart}{suffix}"; + } + public class AncestralTabletRegistrantDto + { + public string RegistrantCode { get; set; } + public string Name { get; set; } + public string Phone { get; set; } + public string Address { get; set; } + public DateTime RegisterDate { get; set; } + public int? Price { get; set; } + public int? PositionId { get; set; } + public DateTime startDate { get; set; } + public DateTime? endDate { get; set; } + public bool isLongTerm { get; set; } = false; + public bool isActive { get; set; } = true; + public DateTime CreatedAt { get; set; } + public DateTime? UpdatedAt { get; set; } + } + public class AncestralTabletPositionRecordDto + { + public int? RecordId { get; set; } + public string RegistrantCode { get; set; } + public string NPTitle { get; set; } + public DateTime NPStandDate { get; set; } + public string NPYangShang { get; set; } + public string WPContent { get; set; } + } + public class RegistrantSearchDto + { + public int page { get; set; } = 1; + public int pageSize { get; set; } = 10; + public string searchName { get; set; } + } + + +} \ No newline at end of file diff --git a/web/App_Code/api/AncestralTabletStatisticsController.cs b/web/App_Code/api/AncestralTabletStatisticsController.cs new file mode 100644 index 0000000..7d5f18f --- /dev/null +++ b/web/App_Code/api/AncestralTabletStatisticsController.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; + +/// +/// AncestralTabletStatisticsController 的摘要描述 +/// +public class AncestralTabletStatisticsController:ApiController +{ + private Model.ezEntities db = new Model.ezEntities(); + [HttpGet] + [Route("api/ancestraltablet/statistics/positions/availablepositions")] + public IHttpActionResult GetAvailablePositions() + { + var query = + from a in db.AncestralTabletArea // 区域表 + join p in db.AncestralTabletPosition + on a.AreaId equals p.AreaId into ap + from p in ap.DefaultIfEmpty() + join r in db.AncestralTabletRegistrant + on p.PositionId equals r.PositionId into pr + from r in pr.DefaultIfEmpty() + group new { a, p, r } by new { a.AreaId, a.AreaName } into g + select new + { + AreaId = g.Key.AreaId, + AreaName = g.Key.AreaName, + TotalPositions = g.Count(x => x.p != null), // 总位置数 + AvailableCount = g.Count(x => x.p != null && x.r == null) // 可用位置数(未登记) + }; + + var result = query.ToList(); + return Ok(result); + } + +} \ No newline at end of file diff --git a/web/App_Code/api/AncestralTabletStatusController.cs b/web/App_Code/api/AncestralTabletStatusController.cs new file mode 100644 index 0000000..8221830 --- /dev/null +++ b/web/App_Code/api/AncestralTabletStatusController.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; + +/// +/// AncestralTabletStatusController 的摘要描述 +/// +public class AncestralTabletStatusController:ApiController +{ + private Model.ezEntities _db = new Model.ezEntities(); + [HttpGet] + [Route("api/ancestraltablet/status/list")] + public IHttpActionResult GetStatusList() + { + var statusList = _db.AncestralTabletStatus + .Select(s => new + { + s.StatusCode, + s.StatusName, + s.StatusType + }) + .ToList(); + + return Ok(statusList); + } + +} \ No newline at end of file diff --git a/web/App_Code/api/guadanOrderController.cs b/web/App_Code/api/guadanOrderController.cs index 7cb068f..f35f755 100644 --- a/web/App_Code/api/guadanOrderController.cs +++ b/web/App_Code/api/guadanOrderController.cs @@ -7,8 +7,6 @@ using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Http; -using static regionController; - /// /// guadanOderController 的摘要描述 /// diff --git a/web/admin/ancestraltablet/ancestraltabletarea/index.aspx b/web/admin/ancestraltablet/ancestraltabletarea/index.aspx new file mode 100644 index 0000000..e00e9a8 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletarea/index.aspx @@ -0,0 +1,908 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/admin/Templates/TBS5ADM001/MasterPage.master" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="admin_ancestraltablet_ancestraltabletarea_index" %> + + + + + + + + +
+
+
+
+
神主牌區域列表
+
+
    +
  • + +
  • +
+
+
+
+
+
+
+
+ + {{ ' ' + currentSelectArea?.areaName + ' ' }} + + + 資料 + +
+ +
+ +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+
+
+
+
+
+
+
+ {{currentSelectArea.areaName + ' - ' + '神主牌位置'}} +
+
+ 批次新增神主牌位置 +
+
+
+
+
+
{{ pos.positionName }}
+
+ + + 修改 + 刪除 +
+
+
+
+
+
+
+
+ +
+ + + + 新增區域 + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+
+ + + + 取消 + 確定新增 + +
+
+
+ +
+ + + + 編輯區域 + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+
+ + + + 取消 + 送出修改 + +
+
+
+ +
+ + + + + 批次新增神主牌位置 + + + mdi-close + + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+
+
+

預覽新增位置

+
    +
  • + {{ pos.PositionCode }} - {{ pos.PositionName }} (行: {{ pos.RowNo }}, 列: {{ pos.ColumnNo }}) +
  • +
+
+
+ + + 生成預覽 + 清除預覽 + 確認新增 + +
+
+
+ +
+ + + + 編輯位置:{{ currentEditPosition?.positionName || '未選擇' }} + + + +
+ + +
+ +
+ + +
+ +
+ + +
+
+ + + + 保存 + 取消 + +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletarea/index.aspx.cs b/web/admin/ancestraltablet/ancestraltabletarea/index.aspx.cs new file mode 100644 index 0000000..b2843c3 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletarea/index.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class admin_ancestraltablet_ancestraltabletarea_index : MyWeb.config +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletposition/index.aspx b/web/admin/ancestraltablet/ancestraltabletposition/index.aspx new file mode 100644 index 0000000..ce85de6 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletposition/index.aspx @@ -0,0 +1,569 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/admin/Templates/TBS5ADM001/MasterPage.master" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="admin_ancestraltablet_ancestraltabletposition_index" %> + + + + + + +
+
+
+
+
神主牌區域列表
+
+
    +
  • + +
  • +
+
+
+
+
+
+
+
+ {{currentSelectArea.areaName + ' - ' + '神主牌位置'}} +
+
+
+
+
+
{{ pos.positionName }}
+
+ 維護中 + 登記 + +
+
登記人:{{ pos.ancestralTabletRegistrant?.name }}
+
登記日期:{{ pos.ancestralTabletRegistrant?.registerDate|timeString('YYYY/MM/DD') }}
+ + 詳細資訊 + + + +
+ + +
+
已使用
+
使用人:{{ pos.usedBy }}
+
使用日期:{{ pos.usedDate|timeString('YYYY/MM/DD') }}
+
+
+
+
+
+
+
+
+
+ +
+ + + 登記資料({{'位置: ' + selectedPos?.positionName}}) + + +
+
登記人資料
+
+
+
+
+
+
+
+
+
+
+ + +
+ + +
+
牌位資料
+
+
+
+ +
+
+ + +
+
+ + + + +
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletposition/index.aspx.cs b/web/admin/ancestraltablet/ancestraltabletposition/index.aspx.cs new file mode 100644 index 0000000..73dc75b --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletposition/index.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class admin_ancestraltablet_ancestraltabletposition_index : MyWeb.config +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx b/web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx new file mode 100644 index 0000000..e3e92fa --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx @@ -0,0 +1,126 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/admin/Templates/TBS5ADM001/MasterPage.master" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="admin_ancestraltablet_ancestraltabletstatistics_index" %> + + + + + + +
+

區域牌位統計

+ + + + + + + + + + + + + + + + + +
區域編號區域名稱總位置數可用位置數
{{ area.areaId }}{{ area.areaName }}{{ area.totalPositions }}{{ area.availableCount }}
+
+ +
+ + + + + + \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx.cs b/web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx.cs new file mode 100644 index 0000000..67c5212 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletstatistics/index.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class admin_ancestraltablet_ancestraltabletstatistics_index : MyWeb.config +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/create.aspx b/web/admin/ancestraltablet/ancestraltabletuselist/create.aspx new file mode 100644 index 0000000..02894f1 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/create.aspx @@ -0,0 +1,15 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/admin/Templates/TBS5ADM001/MasterPage.master" AutoEventWireup="true" CodeFile="create.aspx.cs" Inherits="admin_ancestraltablet_ancestraltabletuselist_create" %> + + + + + + +
+ 這是新增頁面 +
+
+ + + + \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/create.aspx.cs b/web/admin/ancestraltablet/ancestraltabletuselist/create.aspx.cs new file mode 100644 index 0000000..8ff8b66 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/create.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class admin_ancestraltablet_ancestraltabletuselist_create : MyWeb.config +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx b/web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx new file mode 100644 index 0000000..f2d2927 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx @@ -0,0 +1,99 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/admin/Templates/TBS5ADM001/MasterPage.master" AutoEventWireup="true" CodeFile="detail.aspx.cs" Inherits="admin_ancestraltablet_ancestraltabletuselist_detail" %> + + + + + + + +
+ {{registrantCode}} +
+
+
+

登記人資訊

+

登記編碼: {{ registrant.registrantCode }}

+

姓名: {{ registrant.name }}

+

電話: {{ registrant.phone }}

+

地址: {{ registrant.address }}

+

登記日期: {{ formatDate(registrant.registerDate) }}

+
+
+ + {{ registrant?.positionName || '未選擇' }} +
+
+

價格: {{ registrant.price }}

+

開始日期: {{ formatDate(registrant.startDate) }}

+

結束日期: {{ formatDate(registrant.endDate) }}

+

是否長期: {{ registrant.isLongTerm ? '是' : '否' }}

+

是否啟用: {{ registrant.isActive ? '是' : '否' }}

+
+ +
+

牌位資料

+

記錄ID: {{ registrant.tabletRecord.recordId }}

+

登記編碼: {{ registrant.tabletRecord.registrantCode }}

+ +

牌位標題: {{ registrant.tabletRecord.npTitle }}

+

立牌日期: {{ formatDate(registrant.tabletRecord.npStandDate) }}

+

陽上: {{ registrant.tabletRecord.npYangShang }}

+

內牌內容: {{ registrant.tabletRecord.wpContent }}

+
+ +
+

牌位資料

+

暫無牌位資料

+
+
+
+ + + + + + \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx.cs b/web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx.cs new file mode 100644 index 0000000..b151511 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/detail.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class admin_ancestraltablet_ancestraltabletuselist_detail : MyWeb.config +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx b/web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx new file mode 100644 index 0000000..ee471af --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx @@ -0,0 +1,419 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/admin/Templates/TBS5ADM001/MasterPage.master" AutoEventWireup="true" CodeFile="edit.aspx.cs" Inherits="admin_ancestraltablet_ancestraltabletuselist_edit" %> + + + + + + + +
+ +
+

編輯登記人資訊

+ + + + + + + + + + + + + + +
+
+ + {{ registrant?.positionName || '未選擇' }} +
+
+ + {{ this.newPositionEntity?.positionName }} +
+ +
+ + + + + + + + + +
+ + + +
+ +
+ + + +
+ + +
+ + +
+

編輯牌位資料

+ + + + + + + + + + + + + + + + + + + + +
+ +
+

牌位資料

+

暫無牌位資料

+ + +
+ + + + + + + + + + + + + +
+
+ +
+ + + + 選擇位置: + + + + + +
+
+
{{ pos.positionName }}
+
+ + 已被使用 +
+
+
+
+ + +
新位置:{{newPositionEntity?.positionName}}
+ 確定 + 取消 +
+
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx.cs b/web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx.cs new file mode 100644 index 0000000..abcb96e --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/edit.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class admin_ancestraltablet_ancestraltabletuselist_edit : MyWeb.config +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/index.aspx b/web/admin/ancestraltablet/ancestraltabletuselist/index.aspx new file mode 100644 index 0000000..13051c4 --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/index.aspx @@ -0,0 +1,192 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/admin/Templates/TBS5ADM001/MasterPage.master" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="admin_ancestraltablet_ancestraltabletuselist_index" %> + + + + + + + + 神主牌使用記錄 +
+ + + + + + + + + + + + + + + + + 共 {{ total }} 筆, 頁數: + + + + + + + + + + +
+
+ + + + + \ No newline at end of file diff --git a/web/admin/ancestraltablet/ancestraltabletuselist/index.aspx.cs b/web/admin/ancestraltablet/ancestraltabletuselist/index.aspx.cs new file mode 100644 index 0000000..a92db8c --- /dev/null +++ b/web/admin/ancestraltablet/ancestraltabletuselist/index.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class admin_ancestraltablet_ancestraltabletuselist_index : MyWeb.config +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/web/admin/guadan/create.aspx b/web/admin/guadan/create.aspx index d4ee875..e0b8a1b 100644 --- a/web/admin/guadan/create.aspx +++ b/web/admin/guadan/create.aspx @@ -1084,7 +1084,7 @@ newCheckoutDate: this.guadanguest.xuzhu.newCheckoutDate }; - axios.post('/api/guadanorderguest/xuzhu', payload) + axios.post(HTTP_HOST + 'api/guadanorderguest/xuzhu', payload) .then((res) => { this.$refs.messageModal.open({ title: '续住成功', @@ -1113,13 +1113,13 @@ }, //续住相關方法--------------------end getActivityList() { - axios.post('/api/activity/GetList?page=1&pageSize=500', { kind: 0, subject: "" }) + axios.post(HTTP_HOST + 'api/activity/GetList?page=1&pageSize=500', { kind: 0, subject: "" }) .then((res) => { this.activityList = res.data.list }) }, getavailablebedcountbytime(startTime, endTime) { - axios.get('/api/region/bed/getavailablebedcountbytime', { + axios.get(HTTP_HOST + 'api/region/bed/getavailablebedcountbytime', { params: { startTime: startTime, endTime: endTime @@ -1141,7 +1141,7 @@ }, confirmAllocation() { //確認分配 - axios.post('/api/region/bed/confirmallocation', { + axios.post(HTTP_HOST + 'api/region/bed/confirmallocation', { preBeds: this.automaticBedAllocation.preBeds, orderNo: this.guadanorder.order_form.orderNo, checkInAt: this.guadanorder.order_form.startdate, @@ -1169,7 +1169,7 @@ CheckInAt: this.guadanorder.order_form.startdate || new Date(), // 入住時間 CheckOutAt: this.guadanorder.order_form.enddate || null // 退房時間,可為空 }; - axios.post('/api/region/bed/preallocation', payload) + axios.post(HTTP_HOST + 'api/region/bed/preallocation', payload) .then(res => { this.automaticBedAllocation.preBeds = res.data.data; }) @@ -1217,7 +1217,7 @@ getMultiSelectFollowers: function () { var fm = this.automaticBedAllocation.followerModal; var self = this; - axios.post('/api/lianyou/getfollowers', null, { + axios.post(HTTP_HOST + 'api/lianyou/getfollowers', null, { params: { page: fm.page, pageSize: fm.pageSize, @@ -1288,7 +1288,7 @@ }, getGuadanOrderById() { if (this.guadanorder.order_form.uuid) { - axios.get('/api/guadan/getorderbyid', { + axios.get(HTTP_HOST + 'api/guadan/getorderbyid', { params: { orderId: this.guadanorder.order_form.uuid } @@ -1307,7 +1307,7 @@ }, getGuadanOrderGuestByOrderNo() { if (this.guadanorder.order_form.orderNo) { - axios.get('/api/guadanorderguest/getbyorderno', { + axios.get(HTTP_HOST + 'api/guadanorderguest/getbyorderno', { params: { orderNo: this.guadanorder.order_form.orderNo } @@ -1317,7 +1317,7 @@ } }, getGuadanOrderStatus() { - axios.get('/api/region/guadan/status/list') + axios.get(HTTP_HOST + 'api/region/guadan/status/list') .then((res) => { this.guadanorder.status_items = res.data; }) @@ -1326,7 +1326,7 @@ if (!this.validateOrderForm()) { return; } - axios.post('/api/guadan/create', this.guadanorder.order_form) + axios.post(HTTP_HOST + 'api/guadan/create', this.guadanorder.order_form) .then((res => { this.$refs.messageModal.open({ title: '掛單提示', @@ -1350,7 +1350,7 @@ if (!this.validateOrderForm()) { return; } - axios.post('/api/guadan/update', this.guadanorder.order_form) + axios.post(HTTP_HOST + 'api/guadan/update', this.guadanorder.order_form) .then((res => { this.$refs.messageModal.open({ title: '掛單提示', @@ -1495,13 +1495,13 @@ }, createCheckInGuest() { - return axios.post('/api/guadanorderguest/create', this.checkInGuest.inGuest) + return axios.post(HTTP_HOST + 'api/guadanorderguest/create', this.checkInGuest.inGuest) }, checkBedAndFollower() { this.checkInGuest.inGuest }, getGuadanGuestStatus() { - axios.get('/api/region/bed/status/list') + axios.get(HTTP_HOST + 'api/region/bed/status/list') .then((res) => { this.checkInGuest.status = res.data.filter(item => item.category === 4 && item.code != '404'); }) @@ -1524,7 +1524,7 @@ pageSize: itemsPerPage, searchName: this.selectGuestModal.searchNameOrPhone }; - axios.post('/api/lianyou/getfollowers', null, { + axios.post(HTTP_HOST + 'api/lianyou/getfollowers', null, { params: params }).then((res) => { this.selectGuestModal.items = res.data.data @@ -1559,7 +1559,7 @@ }, async saveEditGuadanOrderGuest() { try { - const res = await axios.post('/api/guadanorderguest/update', this.checkInGuest.inGuest) + const res = await axios.post(HTTP_HOST + 'api/guadanorderguest/update', this.checkInGuest.inGuest) this.getGuadanOrderGuestByOrderNo(); this.closeCheckInModal(); } catch (error) { @@ -1570,7 +1570,7 @@ }, deleteGuadanOrderGuest(guest) { - axios.post('/api/guadanorderguest/cancel?uuid=' + guest.uuid) + axios.post(HTTP_HOST + 'api/guadanorderguest/cancel?uuid=' + guest.uuid) .then((res) => { this.guadanguest.items = this.guadanguest.items.filter(i => i.uuid != guest.uuid); }).catch((error) => { @@ -1628,7 +1628,7 @@ //床位選擇相關方法----------------start async loadRegions() { - const res = await axios.post('/api/region/getRegionList'); + const res = await axios.post(HTTP_HOST + 'api/region/getRegionList'); this.region_modal.regions = res.data; }, async loadRegionsByGender() { @@ -1643,7 +1643,7 @@ } } - const res = await axios.post('/api/region/getRegionListByGender', { + const res = await axios.post(HTTP_HOST + 'api/region/getRegionListByGender', { IsMale: isMale }); @@ -1660,7 +1660,7 @@ this.region_modal.selectedType = 'room'; this.region_modal.currentSelectBeds = room.beds; if (this.checkInGuest.inGuest.checkInAt && this.checkInGuest.inGuest.checkOutAt) { - axios.get('/api/region/room/bed/list', { + axios.get(HTTP_HOST + 'api/region/room/bed/list', { params: { roomUuid: room.uuid, StartTime: this.checkInGuest.inGuest.checkInAt, @@ -1678,7 +1678,7 @@ }, GetRegionRoomBedListByRoomId(roomUuid) { if (this.checkInGuest.inGuest.checkInAt && this.checkInGuest.inGuest.checkOutAt) { - axios.get('/api/region/bed/list') + axios.get(HTTP_HOST + 'api/region/bed/list') .then((res) => { }) diff --git a/web/admin/guadan/guest/index.aspx b/web/admin/guadan/guest/index.aspx index 4f8ca6a..943be3b 100644 --- a/web/admin/guadan/guest/index.aspx +++ b/web/admin/guadan/guest/index.aspx @@ -198,7 +198,7 @@ button:hover { } if (this.loading) return; this.loading = true; - axios.post('/api/guadan/guest/query/list', + axios.post(HTTP_HOST + 'api/guadan/guest/query/list', { page: this.options.page, pageSize: this.options.itemsPerPage, diff --git a/web/admin/guadan/index.aspx b/web/admin/guadan/index.aspx index aa28e0d..7ce806d 100644 --- a/web/admin/guadan/index.aspx +++ b/web/admin/guadan/index.aspx @@ -72,40 +72,40 @@ - - - - - - - 共 {{ total }} 筆, 頁數: - - - - - - - - - - + + + + + + + 共 {{ total }} 筆, 頁數: + + + + + + + + + + @@ -198,7 +198,7 @@ }, getGuadanOrder() { if (this.loading) return; - axios.post('/api/guadan/list', { + axios.post(HTTP_HOST + 'api/guadan/list', { startDate: this.search.startDate, endDate: this.search.endDate, guadanUser: this.search.guadanUser, @@ -219,7 +219,7 @@ this.$refs.confirmModal.open({ message: '確認取消掛單?', onConfirm: () => { - axios.post('/api/guadan/cancel', null, { + axios.post(HTTP_HOST + 'api/guadan/cancel', null, { params: { uuid: order.uuid } diff --git a/web/admin/guadan/statistics_table.aspx b/web/admin/guadan/statistics_table.aspx index 699a4d5..f675441 100644 --- a/web/admin/guadan/statistics_table.aspx +++ b/web/admin/guadan/statistics_table.aspx @@ -326,7 +326,7 @@ saveAs(new Blob([wbout], { type: "application/octet-stream" }), "statistics.xlsx"); }, GetGuadanStatistics() { - axios.get('/api/guadanStatistics/GetGuadanStatistics') + axios.get(HTTP_HOST + 'api/guadanStatistics/GetGuadanStatistics') .then((res) => { this.guadanStatistics = res.data.guadanStatistics; }) diff --git a/web/admin/guadan/view.aspx b/web/admin/guadan/view.aspx index 3209306..4c83f22 100644 --- a/web/admin/guadan/view.aspx +++ b/web/admin/guadan/view.aspx @@ -429,7 +429,7 @@ }, methods: { getActivityList() { - axios.post('/api/activity/GetList?page=1&pageSize=500', { kind: 0, subject: "" }) + axios.post(HTTP_HOST + 'api/activity/GetList?page=1&pageSize=500', { kind: 0, subject: "" }) .then((res) => { this.activityList = res.data.list }) @@ -467,7 +467,7 @@ }, getGuadanOrderById() { if (this.guadanorder.order_form.uuid) { - axios.get('/api/guadan/getorderbyid', { + axios.get(HTTP_HOST + 'api/guadan/getorderbyid', { params: { orderId: this.guadanorder.order_form.uuid } @@ -486,7 +486,7 @@ }, getGuadanOrderGuestByOrderNo() { if (this.guadanorder.order_form.orderNo) { - axios.get('/api/guadanorderguest/getbyorderno', { + axios.get(HTTP_HOST + 'api/guadanorderguest/getbyorderno', { params: { orderNo: this.guadanorder.order_form.orderNo } diff --git a/web/admin/region/bed/bedstatus/index.aspx b/web/admin/region/bed/bedstatus/index.aspx index 754acdb..39797a0 100644 --- a/web/admin/region/bed/bedstatus/index.aspx +++ b/web/admin/region/bed/bedstatus/index.aspx @@ -58,7 +58,7 @@ }, methods: { getStatusList() { - axios.get('/api/region/bed/status/list') + axios.get(HTTP_HOST + 'api/region/bed/status/list') .then((res) => { this.items = res.data this.loading = false; @@ -73,7 +73,7 @@ }) }, deleteStatus(item) { - axios.post('/api/region/bed/status/delete', null, { + axios.post(HTTP_HOST + 'api/region/bed/status/delete', null, { params: { code: item.code } }) .then(() => { diff --git a/web/admin/region/bed/index.aspx b/web/admin/region/bed/index.aspx index d514e38..6b38472 100644 --- a/web/admin/region/bed/index.aspx +++ b/web/admin/region/bed/index.aspx @@ -316,7 +316,7 @@ unoccupied: this.filter.unoccupied, gender: this.filter.Gender, }; - axios.post('/api/region/list', payload) + axios.post(HTTP_HOST + 'api/region/list', payload) .then((res) => { this.regions = res.data.regions; this.summary = res.data.summary; // 保存後端統計 @@ -347,7 +347,7 @@ console.log(this.filter.Gender); }, getRegionWithRoom() { - axios.get('/api/region/regionwithroom') + axios.get(HTTP_HOST + 'api/region/regionwithroom') .then((res) => { this.filter.areas = res.data; }) diff --git a/web/admin/region/index.aspx b/web/admin/region/index.aspx index c3f1480..f33d2e9 100644 --- a/web/admin/region/index.aspx +++ b/web/admin/region/index.aspx @@ -578,7 +578,7 @@ this.expandAllFlag = false; }, async loadRegions() { - const res = await axios.post('/api/region/getRegionList'); + const res = await axios.post(HTTP_HOST + 'api/region/getRegionList'); this.regions = res.data; this.flatRegions = this.flatten(res.data); if (this.currentSelectRoom) { @@ -586,7 +586,7 @@ } }, loadRegionType() { - axios.post('/api/region/getRegionType') + axios.post(HTTP_HOST + 'api/region/getRegionType') .then(res => { this.regionTypes = res.data }); @@ -799,7 +799,7 @@ }); }, confirmDeleteBed(bed) { - axios.post('/api/region/bed/delete', null, { + axios.post(HTTP_HOST + 'api/region/bed/delete', null, { params: { uuid: bed.uuid } }) // 假設後端吃的是 id .then(() => { @@ -840,7 +840,7 @@ async saveEditBed() { try { - await axios.post('/api/region/bed/update', this.room_bed.newBedForm); + await axios.post(HTTP_HOST + 'api/region/bed/update', this.room_bed.newBedForm); this.room_bed.showBedModal = false; const updated = this.room_bed.newBedForm; @@ -882,7 +882,7 @@ }, getBedStatus() { //獲取床位狀態 - axios.get('/api/region/bed/status/list') + axios.get(HTTP_HOST + 'api/region/bed/status/list') .then((res) => { this.room_bed.bed_status = res.data; }) @@ -907,7 +907,7 @@ }); return; } - axios.post('/api/region/room/create', this.room.room_form) + axios.post(HTTP_HOST + 'api/region/room/create', this.room.room_form) .then((res) => { this.room.showCreateRoomDialog = false; this.currentSelectRegion.rooms.push(res.data); @@ -924,7 +924,7 @@ }, async roomUpdate() { try { - const res = await axios.post('/api/region/room/update', this.room.room_form); + const res = await axios.post(HTTP_HOST + 'api/region/room/update', this.room.room_form); this.$refs.messageModal.open({ message: '客房資料更新成功' }); @@ -950,7 +950,7 @@ }, roomDelete() { - axios.post('/api/region/room/delete', { uuid: this.currentSelectRoom.uuid }) + axios.post(HTTP_HOST + 'api/region/room/delete', { uuid: this.currentSelectRoom.uuid }) .then((res) => { const region = this.findRegionById(this.regions, this.currentSelectRoom.regionUuid)//當前room所在的region if (region) { diff --git a/web/admin/regiontype/index.aspx b/web/admin/regiontype/index.aspx index 84e0f04..cf90a97 100644 --- a/web/admin/regiontype/index.aspx +++ b/web/admin/regiontype/index.aspx @@ -61,7 +61,7 @@ }, methods: { getRegionTypeList() { - axios.post('/api/regiontype/getreiontypelist') + axios.post(HTTP_HOST + 'api/regiontype/getreiontypelist') .then((res) => { this.items = res.data; }) @@ -71,7 +71,7 @@ 'title': '刪除提示', 'message': `確定要刪除 ${item.name} ?`, onConfirm: () => { - axios.post('/api/regiontype/delete',null, { + axios.post(HTTP_HOST + 'api/regiontype/delete',null, { params: { uuid: item.uuid } }) .then(() => { From b776b411b4aa35791a784504d33f2d96594019bd Mon Sep 17 00:00:00 2001 From: HUANGBANGLIN Date: Wed, 29 Oct 2025 13:54:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E8=B5=84=E6=96=99?= =?UTF-8?q?=E5=BA=93=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...包含其它分支更新)_script_1029.sql | Bin 0 -> 204680 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/SQL/完整資料結構(僅限本地,不包含其它分支更新)_script_1029.sql diff --git a/data/SQL/完整資料結構(僅限本地,不包含其它分支更新)_script_1029.sql b/data/SQL/完整資料結構(僅限本地,不包含其它分支更新)_script_1029.sql new file mode 100644 index 0000000000000000000000000000000000000000..1756f98e1c0451735739dbedc66439284284f222 GIT binary patch literal 204680 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