Update 程序配置页增加权限明细

This commit is contained in:
Ling 2024-05-21 11:47:05 +08:00
parent 8b19d9c7f2
commit 85b4b39237
11 changed files with 210 additions and 108 deletions

View File

@ -5,13 +5,13 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CeramicProjectTool"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
Title="MainWindow" Height="500" Width="800" MinHeight="500" MinWidth="800" Loaded="Window_Loaded">
<Grid>
<DockPanel>
<ToolBar DockPanel.Dock="Top" Height="30">
<Button x:Name="ModelConfigButton" Content="模块配置" Click="ModelConfigButton_Click"/>
<Separator/>
<Button x:Name="PermissionButton" Content="权限配置" Click="PermissionConfigButton_Click"/>
<Button x:Name="PermissionButton" Content="权限列表" Click="PermissionConfigButton_Click"/>
<Separator/>
</ToolBar>
<Frame DockPanel.Dock="Bottom"

View File

@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace CeramicProjectTool.Model
{
[SugarTable("nr_sys_mk")]
public sealed class MKModel
public sealed class ModuleModel
{
/*
[id]
@ -20,7 +20,7 @@ namespace CeramicProjectTool.Model
/// <summary>
/// ID
/// </summary>
[SugarColumn(ColumnName = "id")]
[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
public int Id { get; set; }
/// <summary>
///
@ -32,7 +32,7 @@ namespace CeramicProjectTool.Model
/// 模块名称
/// </summary>
[SugarColumn(ColumnName = "mc")]
public string MC { get; set; }
public string ModuleName { get; set; }
/// <summary>
/// 模块路径
/// </summary>

View File

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace CeramicProjectTool.Model
{
[SugarTable("view_quanxian")]
[SugarTable(tableName: "nr_sys_gn")]
public class PermissonModel
{
/* dbo.nr_sys_gn.mokuan,
@ -17,43 +17,19 @@ namespace CeramicProjectTool.Model
* dbo.nr_z_quanxian.jsid,
* dbo.nr_z_quanxian.gnid,
* dbo.nr_z_yhjs.mingcheng*/
/// <summary>
/// 模块名称
/// </summary>
//Id
[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
public int Id { get; set; }
[SugarColumn(ColumnName = "mokuan")]
public string ModuleName { get; set; }
/// <summary>
/// 表名
/// </summary>
[SugarColumn(ColumnName = "biao")]
public string Table { get; set; }
/// <summary>
/// 功能名称
/// </summary>
[SugarColumn(ColumnName = "gongneng")]
public string Gongneng { get; set; }
/// <summary>
/// 序号
/// </summary>
public string Feature { get; set; }
[SugarColumn(ColumnName = "xuhao")]
public int SeqNo { get; set; }
/// <summary>
/// 角色Id
/// </summary>
[SugarColumn(ColumnName = "jsid")]
public int RuleId { get; set; }
/// <summary>
/// 功能编号
/// </summary>
[SugarColumn(ColumnName = "gnid")]
public int Gnid { get; set; }
/// <summary>
/// 角色名称
/// </summary>
[SugarColumn(ColumnName = "mingcheng")]
public string RuleName { get; set; }
[SugarColumn(ColumnName = "jieshi")]
public string Remark { get; set; }
public int gen { get; set; }
}
}

View File

@ -14,7 +14,7 @@ namespace CeramicProjectTool.Model
id,
mingcheng
*/
[SugarColumn(ColumnName = "id")]
[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
public int Id { get; set; }
[SugarColumn(ColumnName = "mingcheng")]
public string RuleName { get; set; }

View File

@ -5,7 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:CeramicProjectTool.Pages"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
d:DesignHeight="600" d:DesignWidth="800"
MinHeight="450"
MinWidth="800"
Title="模块配置"
@ -19,7 +19,7 @@
<ListView x:Name="ModelListView" Grid.Column="0" SelectionChanged="ModelListView_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding MC}" FontSize="18"/>
<TextBlock Text="{Binding ModuleName}" FontSize="18"/>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
@ -28,11 +28,12 @@
</Style>
</ListView.ItemContainerStyle>
</ListView>
<StackPanel Grid.Column="1" x:Name="ModelConfigView" Background="White">
<Grid Grid.Column="1" x:Name="ModelConfigView" Background="White">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
@ -45,52 +46,53 @@
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- /*
[id]
,[belongmkid]
,[mc]
,[gnurl]
,[isview]
,[xh]*/-->
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Text="模块Id: "/>
<TextBox Text="{Binding Path=SelectedMKModel.Id}" Width="100" IsReadOnly="True" />
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Margin="10" Text="模块Id: "/>
<TextBox Margin="10" Text="{Binding Path=SelectedModule.Id}" Width="100" IsReadOnly="True" />
</StackPanel>
<StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Text="模块名称: "/>
<TextBox Text="{Binding Path=SelectedMKModel.MC}" Width="100"/>
<StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Margin="10" Text="模块名称: "/>
<TextBox Margin="10" Text="{Binding Path=SelectedModule.ModuleName}" Width="100"/>
</StackPanel>
</Grid>
<Grid Grid.Column="1">
<Grid Grid.Column="1" Grid.ColumnSpan="2">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal" Margin="10">
<TextBlock Text="菜单Id: "/>
<TextBox Text="{Binding Path=SelectedMKModel.BelongMKId}" Width="100"/>
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Margin="10" Text="菜单Id: "/>
<TextBox Margin="10" Text="{Binding Path=SelectedModule.BelongMKId}" Width="100"/>
<TextBlock Margin="10" Text="模块序号: "/>
<TextBox Margin="10" Text="{Binding Path=SelectedModule.XH}" IsReadOnly="True" />
<TextBlock Margin="10" Text="是否可见: "/>
<CheckBox Margin="10" IsChecked="{Binding Path=SelectedModule.IsView}" />
</StackPanel>
<StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Text="模块页面地址: "/>
<TextBox Text="{Binding Path=SelectedMKModel.GNURL}" Width="auto"/>
<StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Margin="10" Text="模块地址: "/>
<TextBox Margin="10" Text="{Binding Path=SelectedModule.GNURL}" Width="auto"/>
</StackPanel>
</Grid>
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Text="是否可见: "/>
<CheckBox IsChecked="{Binding Path=SelectedMKModel.IsView}" />
</Grid>
<StackPanel Grid.Row="1" Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Button Margin="10,0,0,10" Content="增加权限项" Height="40" Width="100"/>
<DataGrid Margin="10,0,0,0" x:Name="permissonData" AutoGenerateColumns="False" IsReadOnly="False">
<DataGrid.Columns>
<DataGridTextColumn Header="功能Id" Binding="{Binding Id}" IsReadOnly="True"/>
<DataGridTextColumn Header="功能" Binding="{Binding Feature}" />
<DataGridTextColumn Header="序号" Binding="{Binding SeqNo}"/>
<DataGridTextColumn Header="模块名称" Binding="{Binding ModuleName}" Width="100"/>
<DataGridTextColumn Header="表名" Binding="{Binding Table}" Width="100"/>
<DataGridTextColumn Header="备注" Binding="{Binding Remark}" Width="100"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
<StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock Text="模块序号: "/>
<TextBox Text="{Binding Path=SelectedMKModel.XH}" />
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center">
<Button x:Name="SaveBtn" Content="保存" Width="40" Margin="10" Click="SaveBtn_Click" />
<Button x:Name="ResetBtn" Content="重置" Width="40" Margin="10" />
</StackPanel>
</Grid>
</Grid>
</Grid>
</StackPanel>
</Grid>
</Page>

View File

@ -4,6 +4,7 @@ using CeramicProjectTool.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
@ -32,6 +33,31 @@ namespace CeramicProjectTool.Pages
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
LoadData();
}
private async void ModelListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var datas = ((ListView)sender).ItemsSource as List<ModuleModel>;
var selectedIndex = ((ListView)sender).SelectedIndex;
var mkModel = datas?[selectedIndex == -1 ? 0 : selectedIndex];
if (mkModel != null)
{
configViewModel.SetSelectMKModel(mkModel);
var permissonList = await configViewModel.GetPermissons(mkModel.ModuleName);
if (permissonList != null)
{
permissonData.Dispatcher.Invoke(() =>
{
permissonData.ItemsSource = permissonList;
});
}
}
}
private void LoadData()
{
var modelList = configViewModel.GetMkList();
modelList.ContinueWith((task) =>
@ -39,20 +65,28 @@ namespace CeramicProjectTool.Pages
ModelListView.Dispatcher.Invoke(() =>
{
ModelListView.ItemsSource = task.Result;
ModelListView.SelectedIndex = 0;
});
});
}
private async void SaveBtn_Click(object sender, RoutedEventArgs e)
{
var module = configViewModel.SelectedModule;
if (module == null)
{
MessageBox.Show("请选择一个模块");
return;
}
await configViewModel.UpdateModule(module);
var permissonList = permissonData.ItemsSource as List<PermissonModel>;
if (permissonList != null)
{
await configViewModel.UpdatePermissons(permissonList);
}
private void ModelListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var datas = ((ListView)sender).ItemsSource as List<MKModel>;
var selectedIndex = ((ListView)sender).SelectedIndex;
var mkModel = datas?[selectedIndex == -1 ? 0 : selectedIndex];
if (mkModel != null)
{
configViewModel.SetSelectMKModel(mkModel);
}
}
}
}

View File

@ -14,17 +14,16 @@
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<TextBox x:Name="searchBox" Height="40" TextInput="searchBox_TextInput" KeyDown="searchBox_KeyDown" />
</StackPanel>
<DataGrid Grid.Row="1" x:Name="permissonData" AutoGenerateColumns="False">
<DataGrid Grid.Row="1" x:Name="permissonData" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="模块名称" Binding="{Binding ModuleName}"/>
<DataGridTextColumn Header="表名" Binding="{Binding Table}"/>
<DataGridTextColumn Header="功能Id" Binding="{Binding Id}"/>
<DataGridTextColumn Header="功能" Binding="{Binding Feature}"/>
<DataGridTextColumn Header="序号" Binding="{Binding SeqNo}"/>
<DataGridTextColumn Header="功能Id" Binding="{Binding Gnid}"/>
<DataGridTextColumn Header="功能" Binding="{Binding Gongneng}"/>
<DataGridTextColumn Header="角色Id" Binding="{Binding RuleId}"/>
<DataGridTextColumn Header="角色名称" Binding="{Binding RuleName}"/>
<DataGridTextColumn Header="模块名称" Binding="{Binding ModuleName}" Width="100"/>
<DataGridTextColumn Header="表名" Binding="{Binding Table}" Width="100"/>
<DataGridTextColumn Header="备注" Binding="{Binding Remark}" Width="100"/>
</DataGrid.Columns>
</DataGrid>
</Grid>

View File

@ -1,4 +1,5 @@
using CeramicProjectTool.ViewModel;
using CeramicProjectTool.Model;
using CeramicProjectTool.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
@ -31,7 +32,22 @@ namespace CeramicProjectTool.Pages
private void Page_Loaded(object sender, RoutedEventArgs e)
{
var task = viewModel.GetPermissons();
LoadData();
}
private void LoadData(string searchText = "")
{
Task<List<PermissonModel>> task;
if (string.IsNullOrWhiteSpace(searchText))
{
task = viewModel.GetPermissons();
}
else
{
task = viewModel.GetPermissons(searchText);
}
task.ContinueWith((t) =>
{
permissonData.Dispatcher.Invoke(() =>
@ -40,5 +56,23 @@ namespace CeramicProjectTool.Pages
});
});
}
private void searchBox_TextInput(object sender, TextCompositionEventArgs e)
{
}
private void searchBox_KeyDown(object sender, KeyEventArgs e)
{
var enterKey = Key.Enter;
if (e.Key == enterKey)
{
var searchText = searchBox.Text;
if (!string.IsNullOrWhiteSpace(searchText))
{
LoadData(searchText);
}
}
}
}
}

View File

@ -23,12 +23,23 @@ namespace CeramicProjectTool.Util
}
}
public static async Task<List<MKModel>> GetModelList()
public static async Task<List<ModuleModel>> GetModuleList()
{
var result = await _db.Queryable<MKModel>().ToListAsync();
var result = await _db.Queryable<ModuleModel>().ToListAsync();
return result;
}
public static async Task<ModuleModel> Getodule(int id)
{
var result = await _db.Queryable<ModuleModel>().Where(i => i.Id == id).FirstAsync();
return result;
}
public static async Task UpdateModule(ModuleModel module)
{
await _db.Updateable<ModuleModel>(module).ExecuteCommandAsync();
}
public static async Task<List<PermissonModel>> GetPermissons()
{
var result = await _db.Queryable<PermissonModel>().ToListAsync();
@ -40,6 +51,25 @@ namespace CeramicProjectTool.Util
return result;
}
public static async Task UpdatePermissons(List<PermissonModel> permissons)
{
var ids = permissons.Select(x => x.Id).ToList();
try
{
_db.BeginTran();
//await _db.Deleteable<PermissonModel>().Where(x => !ids.Contains(x.Id)).ExecuteCommandAsync();
await _db.Updateable(permissons).ExecuteCommandAsync();
_db.CommitTran();
}
catch (Exception)
{
_db.RollbackTran();
throw;
}
}
public static async Task<List<RuleModel>> GetRules()
{
var result = await _db.Queryable<RuleModel>().ToListAsync();

View File

@ -21,22 +21,22 @@ namespace CeramicProjectTool.ViewModel
/// <summary>
/// 选中的模块信息
/// </summary>
private MKModel? selectedMKModel;
private ModuleModel? selectedModulel;
public MKModel? SelectedMKModel
public ModuleModel? SelectedModule
{
get { return selectedMKModel; }
get { return selectedModulel; }
set
{
selectedMKModel = value;
OnPropertyChanged(nameof(SelectedMKModel));
selectedModulel = value;
OnPropertyChanged(nameof(SelectedModule));
}
}
public Task<List<MKModel>> GetMkList()
public Task<List<ModuleModel>> GetMkList()
{
Task<List<MKModel>> modelList = DBHelper.GetModelList();
Task<List<ModuleModel>> modelList = DBHelper.GetModuleList();
return modelList;
//modelList.ContinueWith((task) =>
@ -48,9 +48,31 @@ namespace CeramicProjectTool.ViewModel
//});
}
public void SetSelectMKModel(MKModel model)
public void SetSelectMKModel(ModuleModel model)
{
SelectedMKModel = model;
SelectedModule = model;
}
public Task<List<PermissonModel>> GetPermissons()
{
var result = DBHelper.GetPermissons();
return result;
}
public Task<List<PermissonModel>> GetPermissons(string searchText)
{
var result = DBHelper.GetPermissonsByModule(searchText);
return result;
}
public async Task UpdateModule(ModuleModel module)
{
await DBHelper.UpdateModule(module);
}
public async Task UpdatePermissons(List<PermissonModel> permissons)
{
await DBHelper.UpdatePermissons(permissons);
}
}
}

View File

@ -24,5 +24,10 @@ namespace CeramicProjectTool.ViewModel
var result = DBHelper.GetPermissons();
return result;
}
public Task<List<PermissonModel>> GetPermissons(string searchText)
{
var result = DBHelper.GetPermissonsByModule(searchText);
return result;
}
}
}