feat:检测画面改修

master
sunhonglei 8 months ago
parent 4c984f2a55
commit bf3c38820e
  1. 3
      App.xaml
  2. 2
      Language/en_US.xaml
  3. 26
      Language/zh_CN.xaml
  4. 14
      Model/Entity/CutterConfigEntity.cs
  5. 19
      Model/Helper/DataBaseHelper.cs
  6. 5
      SparkClient.csproj
  7. BIN
      SparkDB.db
  8. 10
      ViewModel/BaseWindow/HomeWindowVM.cs
  9. 28
      ViewModel/Configuration/AlgorithmConfigVM.cs
  10. 8
      ViewModel/Configuration/ConfigMenuPageVM.cs
  11. 43
      ViewModel/Configuration/CutConfigVM.cs
  12. 8
      ViewModel/Grading/DiamondSelectVM.cs
  13. 54
      ViewModel/Grading/GradingResultVM.cs
  14. 18
      Views/Configuration/ConfigMenuPage.xaml
  15. 14
      Views/Configuration/ConfigMenuPage.xaml.cs
  16. 2
      Views/Dialog/StartDialog.xaml
  17. 1
      Views/Grading/DiamondSelect.xaml
  18. 91
      Views/Grading/GradingResult.xaml
  19. 10
      Views/Grading/GradingResult.xaml.cs

@ -57,6 +57,9 @@
<DataTemplate DataType="{x:Type dialogVM:StartDialogVM}"> <DataTemplate DataType="{x:Type dialogVM:StartDialogVM}">
<dialogView:StartDialog/> <dialogView:StartDialog/>
</DataTemplate> </DataTemplate>
<DataTemplate DataType="{x:Type configVM:SettingsVM}">
<configView:SettingsPage/>
</DataTemplate>
</ResourceDictionary> </ResourceDictionary>
</Application.Resources> </Application.Resources>
</Application> </Application>

@ -26,7 +26,7 @@
<sys:String x:Key="STANDARD_NAME">STANDARD_EN_NAME</sys:String> <sys:String x:Key="STANDARD_NAME">STANDARD_EN_NAME</sys:String>
<sys:String x:Key="SHAPE_NAME">SHAPE_EN_NAME</sys:String> <sys:String x:Key="SHAPE_NAME">SHAPE_EN_NAME</sys:String>
<sys:String x:Key="INSTITUTE_NAME">INSTITUTE_EN_NAME</sys:String> <sys:String x:Key="INSTITUTE_NAME">INSTITUTE_EN_NAME</sys:String>
<sys:String x:Key="RULE_NAME">RULE_EN_NAME</sys:String>
<!--检测结果 报表--> <!--检测结果 报表-->
<sys:String x:Key="Avg">Average</sys:String> <sys:String x:Key="Avg">Average</sys:String>

@ -27,12 +27,20 @@
<sys:String x:Key="UglifyJson">压缩Json</sys:String> <sys:String x:Key="UglifyJson">压缩Json</sys:String>
<!-- 检测结果 --> <!-- 检测结果 -->
<sys:String x:Key="Standard">标准</sys:String>
<sys:String x:Key="Shape">形状</sys:String>
<sys:String x:Key="Crown">冠部</sys:String>
<sys:String x:Key="Pav">亭部</sys:String>
<sys:String x:Key="Wight">重量(ct)</sys:String>
<sys:String x:Key="CutLevel">切工等级</sys:String>
<sys:String x:Key="SymLevel">对称等级</sys:String>
<sys:String x:Key="resAvg">平均</sys:String> <sys:String x:Key="resAvg">平均</sys:String>
<sys:String x:Key="resYuan">圆度</sys:String> <sys:String x:Key="resYuan">圆度</sys:String>
<sys:String x:Key="resShen">深度</sys:String> <sys:String x:Key="resShen">深度</sys:String>
<sys:String x:Key="resMin">最小值</sys:String> <sys:String x:Key="resMin">最小值</sys:String>
<sys:String x:Key="resMax">最大值</sys:String> <sys:String x:Key="resMax">最大值</sys:String>
<sys:String x:Key="resLevel">SYM等级</sys:String> <sys:String x:Key="resLevel">SYM等级</sys:String>
<sys:String x:Key="Export">导出</sys:String>
<sys:String x:Key="ExitAsk">是否退出程序?</sys:String> <sys:String x:Key="ExitAsk">是否退出程序?</sys:String>
<sys:String x:Key="ExitAskTitle">是否退出</sys:String> <sys:String x:Key="ExitAskTitle">是否退出</sys:String>
@ -54,6 +62,9 @@
<sys:String x:Key="ok">确定</sys:String> <sys:String x:Key="ok">确定</sys:String>
<sys:String x:Key="Skip">跳过</sys:String> <sys:String x:Key="Skip">跳过</sys:String>
<sys:String x:Key="NoDiamondCode">没有输入钻石编码</sys:String> <sys:String x:Key="NoDiamondCode">没有输入钻石编码</sys:String>
<!-- 算法配置画面 -->
<sys:String x:Key="SaveSuccess">保存成功</sys:String>
<sys:String x:Key="SaveFail">保存失败</sys:String>
<!-- 钻石选择画面 --> <!-- 钻石选择画面 -->
<sys:String x:Key="圆形">圆形</sys:String> <sys:String x:Key="圆形">圆形</sys:String>
<sys:String x:Key="心形">心形</sys:String> <sys:String x:Key="心形">心形</sys:String>
@ -73,4 +84,19 @@
<!--算法配置 报表--> <!--算法配置 报表-->
<sys:String x:Key="Demo1">按钮</sys:String> <sys:String x:Key="Demo1">按钮</sys:String>
<!-- 系统配置 -->
<sys:String x:Key="SaveAs">保存</sys:String>
<sys:String x:Key="System Settings">系统配置</sys:String>
<sys:String x:Key="Language settings">语言设置</sys:String>
<sys:String x:Key="UpdateFile">上传文件</sys:String>
<sys:String x:Key="TxtFile">TXT文件</sys:String>
<sys:String x:Key="StlFile">STL文件</sys:String>
<sys:String x:Key="ExcelFile">Excel文件</sys:String>
<sys:String x:Key="DatFile">Dat文件</sys:String>
<sys:String x:Key="SavePath">保存路径</sys:String>
<sys:String x:Key="Please enter">请输入</sys:String>
<sys:String x:Key="Select">选择</sys:String>
<sys:String x:Key="GradeStandard">定级标准</sys:String>
<sys:String x:Key="SavePathIsnotExists">保存路径不存在</sys:String>
<sys:String x:Key="RULE_NAME">RULE_NAME</sys:String>
</ResourceDictionary> </ResourceDictionary>

@ -8,26 +8,26 @@ namespace SparkClient.Model.Entity;
/// 系统设置实体 /// 系统设置实体
/// </summary> /// </summary>
public class CutterConfigEntity : BaseEntity public class CutterConfigEntity
{ {
public static readonly new string TableName = "CUTTER_CONFIG"; public static readonly string TableName = "CUTTER_CONFIG";
[DbField("GUID")] [DbField("GUID")]
public Guid GUID { get; set; } public Guid GUID { get; set; }
/// <summary> /// <summary>
/// 项目名称 /// 项目名称
/// </summary> /// </summary>
[DbField("ITEM_NAME")] [DbField("ITEM_NAME")]
public string ItemName { get; set; } public required string ItemName { get; set; }
/// <summary> /// <summary>
/// key /// key
/// </summary> /// </summary>
[DbField("KEY")] [DbField("KEY")]
public string Key { get; set; } public required string Key { get; set; }
/// <summary> /// <summary>
/// value /// value
/// </summary> /// </summary>
[DbField("VALUE")] [DbField("VALUE")]
public string Value { get; set; } public required string Value { get; set; }
private static Dictionary<string, string> GetFieldMappings() private static Dictionary<string, string> GetFieldMappings()
{ {
var properties = typeof(CutterConfigEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance); var properties = typeof(CutterConfigEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance);
@ -49,7 +49,7 @@ public class CutterConfigEntity : BaseEntity
} }
// 生成 Update 语句 // 生成 Update 语句
public string GenerateUpdateSQL(Dictionary<string, object> fieldsToUpdate = null) public string GenerateUpdateSQL(Dictionary<string, object>? fieldsToUpdate = null)
{ {
if (fieldsToUpdate == null || fieldsToUpdate.Count == 0) if (fieldsToUpdate == null || fieldsToUpdate.Count == 0)
{ {
@ -67,7 +67,7 @@ public class CutterConfigEntity : BaseEntity
} }
// 生成 Delete 语句 // 生成 Delete 语句
public string GenerateDeleteSQL(Dictionary<string, object> conditions = null) public string GenerateDeleteSQL(Dictionary<string, object>? conditions = null)
{ {
if (conditions == null || conditions.Count == 0) if (conditions == null || conditions.Count == 0)
{ {

@ -1,5 +1,7 @@
using System.Data; using System.Data;
using System.IO; using System.IO;
using log4net;
using log4net.Repository.Hierarchy;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
namespace SparkClient.Model.Helper; namespace SparkClient.Model.Helper;
@ -8,12 +10,13 @@ namespace SparkClient.Model.Helper;
/// </summary> /// </summary>
public class DataBaseHelper public class DataBaseHelper
{ {
private static readonly ILog Logger = LogManager.GetLogger(typeof(MainWindow));
//连接、查询、查询、关闭 //连接、查询、查询、关闭
public static void InitDataBase() public static void InitDataBase()
{ {
string databasePath = Path.Combine(Common.BasePath, Common.DataBaseTempFileName); string databasePath = Path.Combine(Common.BasePath, Common.DataBaseTempFileName);
Logger logger;
if (File.Exists(databasePath)) if (File.Exists(databasePath))
return; return;
else else
@ -36,8 +39,8 @@ public class DataBaseHelper
static readonly string password = Common.DatabasePwd; static readonly string password = Common.DatabasePwd;
static readonly string dbPath = Common.DataBaseFileName; static readonly string dbPath = Common.DataBaseFileName;
static SqliteConnection connection; static SqliteConnection? connection;
static SqliteTransaction sqliteTransaction; static SqliteTransaction? sqliteTransaction;
public static void CreateConnection() public static void CreateConnection()
{ {
@ -58,9 +61,12 @@ public class DataBaseHelper
} }
public static void CloseConnection() public static void CloseConnection()
{
if (connection != null)
{ {
connection.Close(); connection.Close();
} }
}
public static void BeginTransaction() public static void BeginTransaction()
{ {
if (connection != null) if (connection != null)
@ -95,7 +101,10 @@ public class DataBaseHelper
SqliteCommand cmd = new SqliteCommand(); SqliteCommand cmd = new SqliteCommand();
cmd.Connection = connection; cmd.Connection = connection;
cmd.CommandText = sql; cmd.CommandText = sql;
if (sqliteTransaction != null)
{
cmd.Transaction = sqliteTransaction; cmd.Transaction = sqliteTransaction;
}
if (sqlParameters != null) if (sqlParameters != null)
{ {
cmd.Parameters.AddRange(sqlParameters); cmd.Parameters.AddRange(sqlParameters);
@ -135,8 +144,8 @@ public class DataBaseHelper
} }
catch (Exception ex) catch (Exception ex)
{ {
System.Windows.MessageBox.Show("检索失败"); Logger.Error($"全局异常捕获:{ex.Message}", ex);
Console.WriteLine(ex.ToString()); System.Windows.MessageBox.Show($"应用程序出现错误:{ex.Message}");
} }
return null; return null;
} }

@ -33,6 +33,9 @@
<None Remove="Resource\Images\Princess-shaped.png" /> <None Remove="Resource\Images\Princess-shaped.png" />
<None Remove="Resource\Images\round_3x.png" /> <None Remove="Resource\Images\round_3x.png" />
<None Remove="Resource\Images\round_P8-P8.png" /> <None Remove="Resource\Images\round_P8-P8.png" />
<None Remove="Resource\Images\Setting%403x.png" />
<None Remove="Resource\Images\Setting_Def%403x.png" />
<None Remove="Resource\Images\Setting_Sel%403x.png" />
<None Remove="Resource\Images\ze-add-o 1%403x.png" /> <None Remove="Resource\Images\ze-add-o 1%403x.png" />
<Resource Include="Resource\Images\Cushion-shaped.png" /> <Resource Include="Resource\Images\Cushion-shaped.png" />
<Resource Include="Resource\Images\Emerald-shape.png" /> <Resource Include="Resource\Images\Emerald-shape.png" />
@ -46,6 +49,8 @@
<Resource Include="Resource\Images\Princess-shaped.png" /> <Resource Include="Resource\Images\Princess-shaped.png" />
<Resource Include="Resource\Images\round_3x.png" /> <Resource Include="Resource\Images\round_3x.png" />
<Resource Include="Resource\Images\round_P8-P8.png" /> <Resource Include="Resource\Images\round_P8-P8.png" />
<Resource Include="Resource\Images\Setting_Def@3x.png" />
<Resource Include="Resource\Images\Setting_Sel@3x.png" />
<Resource Include="Resource\Images\ze-add-o 1@3x.png" /> <Resource Include="Resource\Images\ze-add-o 1@3x.png" />
<None Update="log4net.config"> <None Update="log4net.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>

Binary file not shown.

@ -62,9 +62,13 @@ public class HomeWindowVM : BaseViewModel
// WindowManager.mainViewModel.Content = vm; // WindowManager.mainViewModel.Content = vm;
// WindowManager.openContent.Add(vm); // WindowManager.openContent.Add(vm);
// } // }
BaseControlVM vm = new BaseControlVM(new GradingResultVM(null), MultilingualHelper.getString("DetectionResult")); //BaseControlVM vm = new BaseControlVM(new GradingResultVM(null), MultilingualHelper.getString("DetectionResult"));
WindowManager.mainViewModel.Content = vm; //WindowManager.mainViewModel.Content = vm;
WindowManager.openContent.Add(vm); //WindowManager.openContent.Add(vm);
StartDialog startDialog = new StartDialog();
startDialog.ShowDialog();
} }
catch (Exception e) catch (Exception e)
{ {

@ -34,7 +34,7 @@ public class AlgorithmConfigVM : BaseViewModel
public void InitAlgorithmData(object param) public void InitAlgorithmData(object param)
{ {
AlgorithmConfigJson = "{}"; AlgorithmConfigJson = "{}";
string sql = @"SELECT JSON as json FROM METHOD_CONFIG ORDER BY JSON_ORDER"; string sql = @"SELECT JSON as json FROM ALGORITHM_CONFIG ORDER BY JSON_ORDER";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql); DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (dataTable != null) if (dataTable != null)
@ -59,16 +59,18 @@ public class AlgorithmConfigVM : BaseViewModel
{ {
DataBaseHelper.BeginTransaction(); DataBaseHelper.BeginTransaction();
string temp = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(AlgorithmConfigJson)); string temp = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(AlgorithmConfigJson));
string deleteSql = @"DELETE FROM METHOD_CONFIG"; string deleteSql = @"DELETE FROM ALGORITHM_CONFIG";
DataBaseHelper.ExecuteNonQuery(deleteSql); DataBaseHelper.ExecuteNonQuery(deleteSql);
int order = 0; int order = 0;
int insertCount = 0; int insertCount = 0;
while (temp.Length>2000) while (temp.Length>2000)
{ {
MethodConfigEntity entity = new MethodConfigEntity(); AlgorithmConfigEntity entity = new AlgorithmConfigEntity()
entity.GUID = Guid.NewGuid(); {
entity.JsonOrder = order++; GUID = Guid.NewGuid(),
entity.Json = temp.Substring(0,2000); JsonOrder = order++,
Json = temp.Substring(0, 2000),
};
temp = temp.Substring(2000); temp = temp.Substring(2000);
string sql = entity.GenerateInsertSQL(); string sql = entity.GenerateInsertSQL();
SqliteParameter[] sqliteParameters = { SqliteParameter[] sqliteParameters = {
@ -80,10 +82,12 @@ public class AlgorithmConfigVM : BaseViewModel
} }
if (temp.Length>0) if (temp.Length>0)
{ {
MethodConfigEntity entity = new MethodConfigEntity(); AlgorithmConfigEntity entity = new AlgorithmConfigEntity()
entity.GUID = Guid.NewGuid(); {
entity.JsonOrder = order++; GUID = Guid.NewGuid(),
entity.Json = temp; JsonOrder = order++,
Json = temp
};
string sql = entity.GenerateInsertSQL(); string sql = entity.GenerateInsertSQL();
SqliteParameter[] sqliteParameters = { SqliteParameter[] sqliteParameters = {
new SqliteParameter("@Json", entity.Json), new SqliteParameter("@Json", entity.Json),
@ -94,12 +98,12 @@ public class AlgorithmConfigVM : BaseViewModel
} }
if (insertCount >= 0) if (insertCount >= 0)
{ {
Growl.Info("保存成功"); Growl.Info(MultilingualHelper.getString("SaveSuccess"));
DataBaseHelper.commit(); DataBaseHelper.commit();
} }
else else
{ {
Growl.Error("保存失败"); Growl.Error(MultilingualHelper.getString("SaveFail"));
DataBaseHelper.rollback(); DataBaseHelper.rollback();
} }
} }

@ -10,12 +10,14 @@ public class ConfigMenuPageVM : BaseViewModel
public ICommand LevelConfigCommand { get; } public ICommand LevelConfigCommand { get; }
public ICommand AlgorithmConfigCommand { get; } public ICommand AlgorithmConfigCommand { get; }
public ICommand CutConfigCommand { get; } public ICommand CutConfigCommand { get; }
public ICommand SettingConfigCommand { get; }
public ConfigMenuPageVM() public ConfigMenuPageVM()
{ {
CloseCommand = new RelayCommand(CloseVM); CloseCommand = new RelayCommand(CloseVM);
LevelConfigCommand = new RelayCommand(LevelConfig); LevelConfigCommand = new RelayCommand(LevelConfig);
AlgorithmConfigCommand = new RelayCommand(AlgorithmConfig); AlgorithmConfigCommand = new RelayCommand(AlgorithmConfig);
CutConfigCommand = new RelayCommand(CutConfig); CutConfigCommand = new RelayCommand(CutConfig);
SettingConfigCommand = new RelayCommand(SettingConfig);
} }
/// <summary> /// <summary>
@ -60,4 +62,10 @@ public class ConfigMenuPageVM : BaseViewModel
WindowManager.openContent.Add(vm); WindowManager.openContent.Add(vm);
} }
public void SettingConfig(object parameter)
{
BaseControlVM vm = new BaseControlVM(new SettingsVM(), MultilingualHelper.getString("System Settings"));
WindowManager.mainViewModel.Content = vm;
WindowManager.openContent.Add(vm);
}
} }

@ -80,18 +80,20 @@ public class CutConfigVM: BaseViewModel
int insertCount = 0; int insertCount = 0;
foreach (DataRow row in CutterInfos.Rows) foreach (DataRow row in CutterInfos.Rows)
{ {
if (row["Key"] == "") if (row["Key"].ToString() == "")
{ {
continue; continue;
} }
DataRow removerow = dataTable.AsEnumerable().Where(r => r["GUID"].ToString() == row["GUID"].ToString()).FirstOrDefault(); DataRow? removerow = dataTable.AsEnumerable().Where(r => r["GUID"].ToString() == row["GUID"].ToString()).FirstOrDefault();
if (removerow != null) if (removerow != null)
{ {
CutterConfigEntity entity = new CutterConfigEntity(); CutterConfigEntity entity = new CutterConfigEntity()
entity.ItemName = row["ItemName"].ToString(); {
entity.Key = row["Key"].ToString(); ItemName = row["ItemName"].ToString() ?? "",
entity.Value = row["Value"].ToString(); Key = row["Key"].ToString() ?? "",
entity.GUID = Guid.Parse(row["GUID"].ToString()); Value = row["Value"].ToString() ?? "",
GUID = Guid.Parse(row["GUID"].ToString()??"")
};
sql = entity.GenerateUpdateSQL(); sql = entity.GenerateUpdateSQL();
SqliteParameter[] sqliteParameters = { SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ITEM_NAME", row["ItemName"].ToString()), new SqliteParameter("@ITEM_NAME", row["ItemName"].ToString()),
@ -104,10 +106,12 @@ public class CutConfigVM: BaseViewModel
} }
else else
{ {
CutterConfigEntity entity = new CutterConfigEntity(); CutterConfigEntity entity = new CutterConfigEntity()
entity.ItemName = row["ItemName"].ToString(); {
entity.Key = row["Key"].ToString(); ItemName = row["ItemName"].ToString() ?? "",
entity.Value = row["Value"].ToString(); Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? ""
};
sql = entity.GenerateInsertSQL(); sql = entity.GenerateInsertSQL();
SqliteParameter[] sqliteParameters = { SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ItemName", row["ItemName"].ToString()), new SqliteParameter("@ItemName", row["ItemName"].ToString()),
@ -120,12 +124,14 @@ public class CutConfigVM: BaseViewModel
} }
foreach (DataRow row in dataTable.Rows) foreach (DataRow row in dataTable.Rows)
{ {
CutterConfigEntity entity = new CutterConfigEntity();
entity.ItemName = row["ItemName"].ToString();
entity.Key = row["Key"].ToString();
entity.Value = row["Value"].ToString();
Guid.TryParse(row["GUID"].ToString(), out Guid result); Guid.TryParse(row["GUID"].ToString(), out Guid result);
entity.GUID = result; CutterConfigEntity entity = new CutterConfigEntity()
{
ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? "",
GUID = result
};
sql = entity.GenerateDeleteSQL(); sql = entity.GenerateDeleteSQL();
insertCount += DataBaseHelper.ExecuteNonQuery(sql); insertCount += DataBaseHelper.ExecuteNonQuery(sql);
} }
@ -145,7 +151,10 @@ public class CutConfigVM: BaseViewModel
/// <param name="row">行</param> /// <param name="row">行</param>
public void DelCutRow(object row) public void DelCutRow(object row)
{ {
DataRowView a = row as DataRowView; DataRowView? a = row as DataRowView;
if (a != null)
{
CutterInfos.Rows.Remove(a.Row); CutterInfos.Rows.Remove(a.Row);
} }
}
} }

@ -109,7 +109,7 @@ public class DiamondSelectVM : BaseViewModel
{ {
// 模拟耗时操作 // 模拟耗时操作
//System.Threading.Thread.Sleep(50); // 休眠50毫秒 //System.Threading.Thread.Sleep(50); // 休眠50毫秒
await Task.Delay(1000); await Task.Delay(5);
// 更新进度条的值(需要在UI线程上执行) // 更新进度条的值(需要在UI线程上执行)
loading.Dispatcher.Invoke(() => loading.Dispatcher.Invoke(() =>
{ {
@ -117,8 +117,9 @@ public class DiamondSelectVM : BaseViewModel
}); });
} }
GradingResult(null);
}); });
await Task.Delay(5);
loading.Close(); loading.Close();
} }
} }
@ -129,7 +130,8 @@ public class DiamondSelectVM : BaseViewModel
/// <param name="param"></param> /// <param name="param"></param>
public void GradingResult(object param) public void GradingResult(object param)
{ {
BaseControlVM vm = new BaseControlVM(new GradingResultVM(null), MultilingualHelper.getString("GradingResult")); WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
BaseControlVM vm = new BaseControlVM(new GradingResultVM(null), MultilingualHelper.getString("DetectionResult"));
vm.ShowFunctionButton = System.Windows.Visibility.Hidden; vm.ShowFunctionButton = System.Windows.Visibility.Hidden;
WindowManager.mainViewModel.Content = vm; WindowManager.mainViewModel.Content = vm;
WindowManager.openContent.Add(vm); WindowManager.openContent.Add(vm);

@ -1,6 +1,7 @@
using System.Data; using System.Data;
using System.Windows.Input; using System.Windows.Input;
using HandyControl.Controls; using HandyControl.Controls;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolTip;
namespace SparkClient.ViewModel.Grading; namespace SparkClient.ViewModel.Grading;
@ -9,9 +10,28 @@ public class GradingResultVM : BaseViewModel
private DataTable _dtResults; private DataTable _dtResults;
private DataTable _info;
private DataTable _dsList;
private DataTable _gradeList;
private string _standard;
private string _shape;
private string _crownType;
private string _pavType;
private string _wight;
private string _cutLevelTotal;
private string _symLevelTotal;
public ICommand ChangeNormCommand { get; } public ICommand ChangeNormCommand { get; }
public DataTable DtResults{ get { return _dtResults; } set { _dtResults = value; OnPropertyChanged("DtResults"); } } public DataTable DtResults{ get { return _dtResults; } set { _dtResults = value; OnPropertyChanged(nameof(DtResults)); } }
public DataTable Info { get { return _info; } set { _info = value; OnPropertyChanged(nameof(Info)); } }
public string Standard { get { return _standard; } set { _standard = value; OnPropertyChanged(nameof(Standard)); } }
public string Shape { get { return _shape; } set { _shape = value; OnPropertyChanged(nameof(Shape)); } }
public string CrownType { get { return _crownType; } set { _crownType = value; OnPropertyChanged(nameof(CrownType)); } }
public string PavType { get { return _pavType; } set { _pavType = value; OnPropertyChanged(nameof(PavType)); } }
public string Wight { get { return _wight; } set { _wight = value; OnPropertyChanged(nameof(Wight)); } }
public string CutLevelTotal { get { return _cutLevelTotal; } set { _cutLevelTotal = value; OnPropertyChanged(nameof(CutLevelTotal)); } }
public string SymLevelTotal { get { return _symLevelTotal; } set { _symLevelTotal = value; OnPropertyChanged(nameof(SymLevelTotal)); } }
public DataTable DSList { get { return _dsList; } set { _dsList = value; OnPropertyChanged(nameof(DSList)); } }
public DataTable GradeList { get { return _gradeList; } set { _gradeList = value; OnPropertyChanged(nameof(GradeList)); } }
/// <summary> /// <summary>
/// 构造 /// 构造
/// </summary> /// </summary>
@ -20,9 +40,7 @@ public class GradingResultVM : BaseViewModel
{ {
ChangeNormCommand = new RelayCommand(ChangeNorm); ChangeNormCommand = new RelayCommand(ChangeNorm);
_dtResults = new DataTable(); _dtResults = new DataTable();
InitCombobox();
} }
/// <summary> /// <summary>
@ -34,6 +52,32 @@ public class GradingResultVM : BaseViewModel
} }
private void InitCombobox()
{
// DS下拉列表初始化
InitDSlist();
// 等级下拉列表初始化
InitGradeList();
}
private void InitDSlist()
{
DSList = new DataTable();
DSList.Columns.Add("Key");
DSList.Columns.Add("Value");
DSList.Rows.Add("pass", "pass");
DSList.Rows.Add("refer", "refer");
}
private void InitGradeList()
{
GradeList = new DataTable();
GradeList.Columns.Add("Key");
GradeList.Columns.Add("Value");
GradeList.Rows.Add("极好", "Exc");
GradeList.Rows.Add("很好", "VG");
GradeList.Rows.Add("好", "G");
GradeList.Rows.Add("一般", "F");
GradeList.Rows.Add("差", "P");
}
#region 钻石操作相关 #region 钻石操作相关
//暂略 //暂略
//部分代码(直接操作控件)需要在xaml.cs里边写 //部分代码(直接操作控件)需要在xaml.cs里边写

@ -45,6 +45,7 @@
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
@ -101,6 +102,23 @@
</Grid> </Grid>
</Viewbox> </Viewbox>
</Button> </Button>
<Button Grid.Column="4" Width="230" Height="400" Background="Transparent" BorderBrush="Transparent"
VerticalAlignment="Center" HorizontalAlignment="Center"
MouseEnter="SettingButton_OnMouseEnter" MouseLeave="SettingButton_OnMouseLeave"
Command="{Binding SettingConfigCommand}">
<Viewbox>
<Grid Margin="0 " Width="200" Height="400">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image Grid.Row="0" x:Name="imgSet" Source="../../Resource/Images/Setting_Def@3x.png" Width="180" Height="180" ></Image>
<TextBlock Grid.Row="1" x:Name="tbSet" Text="{DynamicResource System Settings}" TextWrapping="Wrap" Width="180" Height="100" FontSize="24"
TextAlignment="Center" Foreground="Azure"/>
</Grid>
</Viewbox>
</Button>
</Grid> </Grid>
</Grid> </Grid>

@ -54,4 +54,18 @@ public partial class ConfigMenuPage
imgCut.Source = new BitmapImage(new Uri(@"pack://application:,,,/Resource/Images/Cut_Def@3x.png")); imgCut.Source = new BitmapImage(new Uri(@"pack://application:,,,/Resource/Images/Cut_Def@3x.png"));
tbCut.Foreground = new SolidColorBrush(Colors.Azure); tbCut.Foreground = new SolidColorBrush(Colors.Azure);
} }
private void SettingButton_OnMouseEnter(object sender, MouseEventArgs e)
{
var brushConverter = new BrushConverter();
imgSet.Source = new BitmapImage(new Uri(@"pack://application:,,,/Resource/Images/Setting_Sel@3x.png"));
tbSet.Foreground = (Brush)brushConverter.ConvertFromString("#9C7C5E"); ;
}
private void SettingButton_OnMouseLeave(object sender, MouseEventArgs e)
{
var brushConverter = new BrushConverter();
imgSet.Source = new BitmapImage(new Uri(@"pack://application:,,,/Resource/Images/Setting_Def@3x.png"));
tbSet.Foreground = new SolidColorBrush(Colors.Azure);
}
} }

@ -56,7 +56,7 @@
BorderBrush="Transparent" BorderBrush="Transparent"
FontSize="16" FontFamily="AlibabaPuHui-regular" /> FontSize="16" FontFamily="AlibabaPuHui-regular" />
<TextBox TextWrapping="Wrap" Name ="Id" Grid.Column="2" Text="{Binding InputText}" /> <TextBox TextWrapping="Wrap" Name ="Id" Grid.Column="2" Text="{Binding InputText}" />
<TextBlock Text="请输入" Grid.Column="2" Foreground="Gray" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5"> <TextBlock Text="{DynamicResource Please enter}" Grid.Column="2" Foreground="Gray" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5">
<TextBlock.Style> <TextBlock.Style>
<Style TargetType="TextBlock"> <Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/> <Setter Property="Visibility" Value="Collapsed"/>

@ -90,7 +90,6 @@
</Button.Style> </Button.Style>
</Button> </Button>
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>
</ItemsControl> </ItemsControl>
</Border> </Border>

@ -22,11 +22,88 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Background="White" Height="50"> <Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Background="White" Height="50">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25"></RowDefinition>
<RowDefinition Height="25"></RowDefinition>
</Grid.RowDefinitions>
<Button Content="{DynamicResource SaveAs}" Foreground="#ffffff" Background="#A7896F" Width="70"/>
<Button Grid.Column="1" Content="{DynamicResource Export}" Foreground="#ffffff" Background="#A7896F" Width="70"/>
<Border Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" BorderThickness="1" BorderBrush="#6E6A6A">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="DS" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<ComboBox Grid.Column="1" ItemsSource="{Binding DSList}"
DisplayMemberPath="Key" SelectedValuePath="Value" SelectedValue="{Binding DS, Mode=TwoWay}"/>
</Grid>
</Border>
<Border Grid.Column="2" Grid.Row="0" Background="#E7E7E7" BorderBrush="#BBBBBB" CornerRadius="3" BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{DynamicResource Standard}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="1" Text="{DynamicResource Shape}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="2" Text="{DynamicResource Crown}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="3" Text="{DynamicResource Pav}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="4" Text="{DynamicResource Wight}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
</Grid>
</Border>
<Border Grid.Column="2" Grid.Row="1" Background="Transparent" BorderBrush="#D9D9D9" CornerRadius="3" BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Standard}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="1" Text="{Binding Shape}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="2" Text="{Binding CrownType}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="3" Text="{Binding PavType}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
<TextBlock Grid.Column="4" Text="{Binding Wight}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
</Grid>
</Border>
<Border Grid.Column="3" Grid.Row="0" Background="#E7E7E7" BorderBrush="#BBBBBB" CornerRadius="3" BorderThickness="1">
<Grid>
<TextBlock Grid.Column="0" Text="{DynamicResource CutLevel}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
</Grid>
</Border>
<Border Grid.Column="3" Grid.Row="1" Background="#d1d1d1" BorderBrush="#BBBBBB" CornerRadius="3" BorderThickness="1">
<Grid>
<TextBlock Grid.Column="0" Text="{Binding CutLevelTotal}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False" Foreground="#848484"/>
</Grid>
</Border>
<Border Grid.Column="4" Grid.Row="0" Background="#E7E7E7" BorderBrush="#BBBBBB" CornerRadius="3" BorderThickness="1">
<Grid>
<TextBlock Grid.Column="0" Text="{DynamicResource SymLevel}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False"/>
</Grid>
</Border>
<Border Grid.Column="4" Grid.Row="1" Background="#d1d1d1" BorderBrush="#BBBBBB" CornerRadius="3" BorderThickness="1">
<Grid>
<TextBlock Grid.Column="0" Text="{Binding SymLevelTotal}" VerticalAlignment="Center" HorizontalAlignment="Center" IsEnabled="False" Foreground="#848484"/>
</Grid>
</Border>
</Grid>
</Border> </Border>
<Border Grid.Row="1" Grid.Column="0" Background="Aqua"> <Border Grid.Row="1" Grid.Column="0" Background="Aqua">
<DataGrid HeadersVisibility="All" AutoGenerateColumns="False" ItemsSource="{Binding DtResults}"> <DataGrid HeadersVisibility="All" AutoGenerateColumns="False" ItemsSource="{Binding DtResults}" SelectionChanged="DataGrid_SelectionChanged">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Width="120" IsReadOnly="True" Header="" Binding="{Binding Name}"/> <DataGridTextColumn Width="120" IsReadOnly="True" Header="" Binding="{Binding Name}"/>
<DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resAvg}" Binding="{Binding Avg}"/> <DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resAvg}" Binding="{Binding Avg}"/>
@ -34,7 +111,15 @@
<DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resShen}" Binding="{Binding Shen}"/> <DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resShen}" Binding="{Binding Shen}"/>
<DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resMin}" Binding="{Binding Min}" /> <DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resMin}" Binding="{Binding Min}" />
<DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resMax}" Binding="{Binding Max}"/> <DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resMax}" Binding="{Binding Max}"/>
<DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource resLevel}" Binding="{Binding Level}"/> <DataGridTextColumn Width="Auto" IsReadOnly="True" Header="{DynamicResource CutLevel}" Binding="{Binding CutLevel}"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding GradeList}"
DisplayMemberPath="Key" SelectedValuePath="Value" SelectedValue="{Binding SymLevel, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<!-- <DataGridTemplateColumn Width="Auto" IsReadOnly="True" Header="操作" > --> <!-- <DataGridTemplateColumn Width="Auto" IsReadOnly="True" Header="操作" > -->
<!-- <DataGridTemplateColumn.CellTemplate> --> <!-- <DataGridTemplateColumn.CellTemplate> -->
<!-- <DataTemplate> --> <!-- <DataTemplate> -->

@ -119,4 +119,14 @@ public partial class GradingResult
Console.WriteLine("点击的对象不是 MeshGeometryModel3D"); Console.WriteLine("点击的对象不是 MeshGeometryModel3D");
} }
} }
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void DataGrid_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
}
} }
Loading…
Cancel
Save