添加页面

This commit is contained in:
yxw
2025-12-17 17:16:11 +08:00
parent da8ac8a22b
commit 903d6d9304
14 changed files with 348 additions and 175 deletions

View File

@@ -0,0 +1,24 @@
@page "/content/blog/create"
@page "/content/blog/edit/{id:long}"
@page "/{locale}/content/blog/create"
@page "/{locale}/content/blog/edit/{id:long}"
<PageContainer Title="@(Id > 0 ? "编辑博客文章" : "新增博客文章")">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>博客文章</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
[Parameter]
public string Locale { get; set; } = string.Empty;
[Parameter]
public long? Id { get; set; }
}

View File

@@ -0,0 +1,20 @@
@page "/content/blog/list"
@page "/{locale}/content/blog/list"
<PageContainer Title="博客文章">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>博客文章</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
[Parameter]
public string Locale { get; set; } = string.Empty;
}

View File

@@ -1,5 +1,24 @@
<h3>PageEdit</h3>
@page "/content/page/create"
@page "/content/page/edit/{id:long}"
@page "/{locale}/content/page/create"
@page "/{locale}/content/page/edit/{id:long}"
<PageContainer Title="@(Id > 0 ? "编辑主题页面" : "新增主题页面")">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>主题页面</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
}
[Parameter]
public string Locale { get; set; } = string.Empty;
[Parameter]
public long? Id { get; set; }
}

View File

@@ -1,8 +1,20 @@
@page "/content/page/list"
@page "/{locale}/content/page/list"
<h3>PageList</h3>
<PageContainer Title="主题页面">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>主题页面</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
}
[Parameter]
public string Locale { get; set; } = string.Empty;
}

View File

@@ -0,0 +1,20 @@
@page "/deposit/list"
@page "/{locale}/deposit/list"
<PageContainer Title="储值订单">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>储值订单</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
[Parameter]
public string Locale { get; set; } = string.Empty;
}

View File

@@ -0,0 +1,22 @@
@page "/deposit/detail/{id:long}"
@page "/{locale}/deposit/detail/{id:long}"
<PageContainer Title="@($"订单{Id}详情")">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>主题页面</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
[Parameter]
public string Locale { get; set; } = string.Empty;
[Parameter]
public long? Id { get; set; }
}

View File

@@ -1,5 +1,20 @@
<h3>OrderList</h3>
@page "/order/list"
@page "/{locale}/order/list"
<PageContainer Title="购物订单">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>购物订单</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
}
[Parameter]
public string Locale { get; set; } = string.Empty;
}

View File

@@ -1,18 +1,25 @@
@page "/product/category/edit"
@page "/product/category/edit/{Id:long?}"
@page "/{locale}/product/category/edit"
@page "/{locale}/product/category/edit/{Id:long?}"
@inject ILogger<CategoryEdit> Logger
@attribute [Authorize]
<PageTitle>分类编辑</PageTitle>
<Title Level="4">分类信息</Title>
<Spin Spinning="pageLoading">
<Card Title="" Class="hideborder"
Style="margin-top: 24px;"
BodyStyle="padding: 0 32px 40px 32px">
<Form @ref="editform" Model="@model" LabelColSpan="5" WrapperColSpan="19" OnFinish="OnFormFinishAsync">
@* @if (languages.Count > 1 && Id > 0)
<PageContainer Title="编辑产品分类">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/product/list">系统功能</BreadcrumbItem>
<BreadcrumbItem>分类管理</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<Spin Spinning="pageLoading">
<Card Title="分类信息">
<Form @ref="editform" Model="@model" LabelColSpan="5" WrapperColSpan="19" OnFinish="OnFormFinishAsync">
@* @if (languages.Count > 1 && Id > 0)
{
<Tabs ActiveKey="@context.Language" OnTabClick="OnLanguageTabChange">
<TabPane Key="0">
@@ -59,28 +66,33 @@
}
</Button> <Button Size="@ButtonSize.Large" Type="@ButtonType.Text" Icon="@formModel.Image"></Button>
</FormItem> *@
<FormItem Label="Meta描述">
<Input @bind-Value="@context.MetaDescription" Placeholder="Meta描述" />
</FormItem>
<FormItem Label="Meta关键词">
<Input @bind-Value="@context.MetaKeywords" Placeholder="Meta关键词" />
</FormItem>
<FormItem Label="显示排序">
<Input @bind-Value="@context.DisplayOrder" Placeholder="显示排序" />
</FormItem>
<FormItem Label="状态">
<Checkbox @bind-Checked="@context.Enabled">启用</Checkbox>
</FormItem>
<FormItem WrapperCol="new ColLayoutParam { Span = 24, Offset = 5 }">
<Button Type="@ButtonType.Primary" HtmlType="submit">
提交保存
</Button>
</FormItem>
</Form>
</Card>
</Spin>
<FormItem Label="Meta描述">
<Input @bind-Value="@context.MetaDescription" Placeholder="Meta描述" />
</FormItem>
<FormItem Label="Meta关键词">
<Input @bind-Value="@context.MetaKeywords" Placeholder="Meta关键词" />
</FormItem>
<FormItem Label="显示排序">
<Input @bind-Value="@context.DisplayOrder" Placeholder="显示排序" />
</FormItem>
<FormItem Label="状态">
<Checkbox @bind-Checked="@context.Enabled">启用</Checkbox>
</FormItem>
<FormItem WrapperCol="new ColLayoutParam { Span = 24, Offset = 5 }">
<Button Type="@ButtonType.Primary" HtmlType="submit">
提交保存
</Button>
</FormItem>
</Form>
</Card>
</Spin>
</ChildContent>
</PageContainer>
@code {
[Parameter]
public string Locale { get; set; } = string.Empty;
[SupplyParameterFromQuery]
int? Lang { get; set; }

View File

@@ -1,141 +1,153 @@
@page "/category/list"
@page "/{locale}/category/list"
@inject ILogger<CategoryList> Logger
@attribute [Authorize]
<PageTitle>分类管理</PageTitle>
<Title Level="4">菜单管理</Title>
<Card>
<Form @ref="searchForm" Model="search" Layout="FormLayout.Inline" Class="search-form" OnFinish="OnSearchFinish">
<Row Justify="RowJustify.Start" Gutter="16">
<Col>
<FormItem Label="名称">
<Input @bind-Value="search.Name" Placeholder="名称" AllowClear />
</FormItem>
</Col>
<PageContainer Title="产品分类管理">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/product/list">系统功能</BreadcrumbItem>
<BreadcrumbItem>分类管理</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<Card>
<Form @ref="searchForm" Model="search" Layout="FormLayout.Inline" Class="search-form" OnFinish="OnSearchFinish">
<Row Justify="RowJustify.Start" Gutter="16">
<Col>
<FormItem Label="名称">
<Input @bind-Value="search.Name" Placeholder="名称" AllowClear />
</FormItem>
</Col>
<Col>
<div class="ant-form-item" style="width:200px;display:flex;">
<Button Type="ButtonType.Primary" HtmlType="submit">查询</Button>
<Button Style="margin: 0 8px;" OnClick="OnSearchReset">重置</Button>
</div>
</Col>
</Row>
</Form>
</Card>
<Card Class="mt-3">
<Table DataSource="categories" PageSize="100" HidePagination="true" Resizable>
<TitleTemplate>
<Flex Justify="FlexJustify.SpaceBetween">
菜单列表
<div>
<Button Class="me-3" OnClick="OnCreateClick" Type="ButtonType.Primary">新增</Button>
</div>
<Col>
<div class="ant-form-item" style="width:200px;display:flex;">
<Button Type="ButtonType.Primary" HtmlType="submit">查询</Button>
<Button Style="margin: 0 8px;" OnClick="OnSearchReset">重置</Button>
</div>
</Col>
</Row>
</Form>
</Card>
<br/>
<Card Class="mt-3">
<Table DataSource="categories" PageSize="100" HidePagination="true" Resizable>
<TitleTemplate>
<Flex Justify="FlexJustify.SpaceBetween">
菜单列表
<div>
<Button Class="me-3" OnClick="OnCreateClick" Type="ButtonType.Primary">新增</Button>
</div>
</Flex>
</TitleTemplate>
<ColumnDefinitions>
<PropertyColumn Property="c=>c.Name" Title="名称">
<AntDesign.Text>@GetName(context)</AntDesign.Text>
</PropertyColumn>
<PropertyColumn Property="c=>c.Slug" Title="缩略名" Width="80px" Align="ColumnAlign.Center">
</Flex>
</TitleTemplate>
<ColumnDefinitions>
<PropertyColumn Property="c => c.Name" Title="名称">
<AntDesign.Text>@GetName(context)</AntDesign.Text>
</PropertyColumn>
<PropertyColumn Property="c => c.Slug" Title="缩略名" Width="80px" Align="ColumnAlign.Center">
</PropertyColumn>
<PropertyColumn Property="c=>c.DisplayOrder" Title="排序" Width="100px" />
<PropertyColumn Property="c=>c.Enabled" Title="状态" Width="80px" Align="ColumnAlign.Center">
@if (context.Enabled)
{
<AntDesign.Text Type="TextElementType.Success"><Icon Type="check" Theme=" IconThemeType.Outline" Width="1.3em" Height="1.3em" /></AntDesign.Text>
</PropertyColumn>
<PropertyColumn Property="c => c.DisplayOrder" Title="排序" Width="100px" />
<PropertyColumn Property="c => c.Enabled" Title="状态" Width="80px" Align="ColumnAlign.Center">
@if (context.Enabled)
{
<AntDesign.Text Type="TextElementType.Success"><Icon Type="check" Theme=" IconThemeType.Outline" Width="1.3em" Height="1.3em" /></AntDesign.Text>
}
else
{
<Icon Type="close" Theme="IconThemeType.Outline" Width="1.3em" Height="1.3em" />
}
</PropertyColumn>
<PropertyColumn Property="c=>c.CreateTime" Title="时间" Width="190px" />
<ActionColumn Title="操作" Align="ColumnAlign.Right" Width="160px">
<Space>
@if (context.IsLast)
{
<SpaceItem>
<a Href="@($"/attribute/list?categoryid={context.Id}")">属性</a>
}
else
{
<Icon Type="close" Theme="IconThemeType.Outline" Width="1.3em" Height="1.3em" />
}
</PropertyColumn>
<PropertyColumn Property="c => c.CreateTime" Title="时间" Width="190px" />
<ActionColumn Title="操作" Align="ColumnAlign.Right" Width="160px">
<Space>
@if (context.IsLast)
{
<SpaceItem>
<a Href="@($"/attribute/list?categoryid={context.Id}")">属性</a>
</SpaceItem>
<SpaceItem>
<a Href="@($"/specification/list?categoryid={context.Id}")">规格</a>
</SpaceItem>
<SpaceItem>
<a Href="@($"/specification/list?categoryid={context.Id}")">规格</a>
</SpaceItem>
}
<SpaceItem>
<Dropdown Trigger="@(new Trigger[] { Trigger.Click })">
<Overlay>
<Menu>
<MenuItem>
<a @onclick="(e)=>OnEditClick(context)"> <Icon Type="@IconType.Outline.Edit" /> 编辑</a>
</MenuItem>
<MenuDivider />
<MenuItem>
<Popconfirm Placement="@Placement.Left" Title="@("删除这条数据无法恢复,您确定要删除吗?")"
OnConfirm="@(e=>HandleDeleteConfirmAsync(e,context.Id))"
OkText="确定"
CancelText="取消">
<a> <Icon Type="@IconType.Outline.Delete" /> 删除</a>
</Popconfirm>
</MenuItem>
</Menu>
</Overlay>
<ChildContent>
<a class="ant-dropdown-link" @onclick:preventDefault>
<Icon Type="@IconType.Outline.Menu" />
</a>
</ChildContent>
</Dropdown>
</SpaceItem>
</Space>
</ActionColumn>
</ColumnDefinitions>
</Table>
</Card>
</SpaceItem>
}
<Drawer Closable="true" Width="520" Visible="drawerVisible" Title='("设置菜单")' OnClose="_=>CloseDrawer()">
<Form LabelColSpan="5" @ref="@editform" Model="@model" OnFinish="OnFormFinish">
<FluentValidationValidator />
<FormItem Label="名称">
<Input @bind-Value="model.Name" For="(()=>model.Name)" />
</FormItem>
<FormItem Label="缩略名">
<Input @bind-Value="model.Slug" For="(()=>model.Slug)" />
</FormItem>
<FormItem Label="上级分类">
<Select @bind-Value="@model.ParentId" TItemValue="long" TItem="string" Placeholder="请选择上级分类">
<SelectOptions>
<SelectOption Value="0L" Label="无" />
@foreach (var item in categories)
{
<SelectOption Value="@item.Id" Label="@GetName(item)" />
}
<SpaceItem>
<Dropdown Trigger="@(new Trigger[] { Trigger.Click })">
<Overlay>
<Menu>
</SelectOptions>
</Select>
</FormItem>
<FormItem Label="排序">
<Input @bind-Value="model.DisplayOrder" For="(()=>model.DisplayOrder)" />
</FormItem>
<FormItem Label="状态">
<Checkbox @bind-Value="model.Enabled" For="(()=>model.Enabled)">启用</Checkbox>
</FormItem>
<FormItem WrapperColOffset="4">
<Button Type="ButtonType.Primary" HtmlType="submit" Style="width: 100%;">保存</Button>
</FormItem>
</Form>
</Drawer>
<MenuItem>
<a @onclick="(e) => OnEditClick(context)"> <Icon Type="@IconType.Outline.Edit" /> 编辑</a>
</MenuItem>
<MenuDivider />
<MenuItem>
<Popconfirm Placement="@Placement.Left" Title="@("删除这条数据无法恢复,您确定要删除吗?")"
OnConfirm="@(e=>HandleDeleteConfirmAsync(e,context.Id))"
OkText="确定"
CancelText="取消">
<a> <Icon Type="@IconType.Outline.Delete" /> 删除</a>
</Popconfirm>
</MenuItem>
</Menu>
</Overlay>
<ChildContent>
<a class="ant-dropdown-link" @onclick:preventDefault>
<Icon Type="@IconType.Outline.Menu" />
</a>
</ChildContent>
</Dropdown>
</SpaceItem>
</Space>
</ActionColumn>
</ColumnDefinitions>
</Table>
</Card>
<Drawer Closable="true" Width="520" Visible="drawerVisible" Title='("设置菜单")' OnClose="_ => CloseDrawer()">
<Form LabelColSpan="5" @ref="@editform" Model="@model" OnFinish="OnFormFinish">
<FluentValidationValidator />
<FormItem Label="名称">
<Input @bind-Value="model.Name" For="(()=>model.Name)" />
</FormItem>
<FormItem Label="缩略名">
<Input @bind-Value="model.Slug" For="(()=>model.Slug)" />
</FormItem>
<FormItem Label="上级分类">
<Select @bind-Value="@model.ParentId" TItemValue="long" TItem="string" Placeholder="请选择上级分类">
<SelectOptions>
<SelectOption Value="0L" Label="无" />
@foreach (var item in categories)
{
<SelectOption Value="@item.Id" Label="@GetName(item)" />
}
</SelectOptions>
</Select>
</FormItem>
<FormItem Label="排序">
<Input @bind-Value="model.DisplayOrder" For="(()=>model.DisplayOrder)" />
</FormItem>
<FormItem Label="状态">
<Checkbox @bind-Value="model.Enabled" For="(()=>model.Enabled)">启用</Checkbox>
</FormItem>
<FormItem WrapperColOffset="4">
<Button Type="ButtonType.Primary" HtmlType="submit" Style="width: 100%;">保存</Button>
</FormItem>
</Form>
</Drawer>
</ChildContent>
</PageContainer>
@code {
[Parameter]
public string Locale { get; set; } = string.Empty;
[SupplyParameterFromQuery]
int? Page { get; set; }
@@ -333,4 +345,4 @@
drawerVisible = false;
editform.Reset();
}
}
}

View File

@@ -4,12 +4,12 @@
@attribute [Authorize]
<PageContainer Title="管理员帐号">
<PageContainer Title="管理员管理">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/admin/list">系统功能</BreadcrumbItem>
<BreadcrumbItem>版本管理</BreadcrumbItem>
<BreadcrumbItem>管理员管理</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>

View File

@@ -23,11 +23,12 @@
</Flex>
</TitleTemplate>
<ColumnDefinitions>
<PropertyColumn Property="c => c.Name" Title="语言名称">
</PropertyColumn>
<PropertyColumn Property="c => c.Title" Title="语言标题">
<PropertyColumn Property="c => c.Title" Title="语言名称">
</PropertyColumn>
<PropertyColumn Property="c => c.Name" Title="语言本地化">
</PropertyColumn>
<PropertyColumn Property="c => c.Culture" Title="语言文化" Width="100px" />
<PropertyColumn Property="c => c.Enabled" Title="状态" Width="80px" Align="ColumnAlign.Center">
@if (context.Enabled)
@@ -83,10 +84,10 @@
<Form LabelColSpan="5" @ref="@editform" Model="@model" OnFinish="OnFormFinish">
<FluentValidationValidator />
<FormItem Label="语言标题">
<Input @bind-Value="model.Title" For="(()=>model.Title)" Placeholder="语言标题" />
<Input @bind-Value="model.Title" For="(()=>model.Title)" Placeholder="语言名称" />
</FormItem>
<FormItem Label="语言名称">
<Input @bind-Value="model.Name" For="(()=>model.Name)" Placeholder="语言名称" />
<Input @bind-Value="model.Name" For="(()=>model.Name)" Placeholder="语言本地化" />
</FormItem>
<FormItem Label="语言文化">
<SimpleSelect @bind-Value="model.Culture" For="(()=>model.Culture)" Placeholder="语言文化">

View File

@@ -1,5 +1,20 @@
<h3>UserList</h3>
@page "/user/list"
@page "/{locale}/user/list"
<PageContainer Title="用户列表">
<Breadcrumb>
<Breadcrumb>
<BreadcrumbItem Href="/">管理后台</BreadcrumbItem>
<BreadcrumbItem Href="/content/page/list">内容管理</BreadcrumbItem>
<BreadcrumbItem>用户列表</BreadcrumbItem>
</Breadcrumb>
</Breadcrumb>
<ChildContent>
<h3>Tools</h3>
</ChildContent>
</PageContainer>
@code {
}
[Parameter]
public string Locale { get; set; } = string.Empty;
}