master
sunhonglei 5 months ago
parent 87e63b5dda
commit 681bc64930
  1. 2
      Language/zh_CN.xaml
  2. 28
      ViewModel/Configuration/AlgorithmConfigVM.cs
  3. 183
      ViewModel/Configuration/CutConfigVM.cs
  4. 128
      ViewModel/Configuration/LevelConfigVM.cs
  5. 32
      ViewModel/Configuration/SettingBaseVM.cs
  6. 3
      ViewModel/Dialog/StartDialogVM.cs
  7. 8
      ViewModel/Grading/DiamondSelectVM.cs
  8. 54
      ViewModel/Grading/GradingResultVM.cs
  9. 2
      Views/Configuration/LevelConfigPage.xaml

@ -198,5 +198,5 @@
<sys:String x:Key="CUDANoInstall">CUDA未安装,程序执行中可能会出错</sys:String>
<sys:String x:Key="MSVCRuntimeNoInstall">MSVC Runtime未安装,程序执行中可能会出错</sys:String>
<sys:String x:Key="FilePathNotExists">文件路径不存在</sys:String>
<sys:String x:Key="LevelConfigFormatError">定级配置文件格式不正</sys:String>
</ResourceDictionary>

@ -39,20 +39,28 @@ public class AlgorithmConfigVM : BaseViewModel
/// <param name="param"></param>
public void InitAlgorithmData(object param)
{
AlgorithmConfigJson = "{}";
string sql = @"SELECT JSON as json FROM ALGORITHM_CONFIG ORDER BY JSON_ORDER";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
StringBuilder sb = new StringBuilder();
if (dataTable != null)
try
{
foreach (DataRow row in dataTable.Rows)
AlgorithmConfigJson = "{}";
string sql = @"SELECT JSON as json FROM ALGORITHM_CONFIG ORDER BY JSON_ORDER";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
StringBuilder sb = new StringBuilder();
if (dataTable != null)
{
sb.Append(row["json"].ToString());
foreach (DataRow row in dataTable.Rows)
{
sb.Append(row["json"].ToString());
}
}
if (sb.Length > 0)
{
AlgorithmConfigJson = JToken.Parse(sb.ToString()).ToString();
}
}
if (sb.Length > 0)
catch (Exception ex)
{
AlgorithmConfigJson = JToken.Parse(sb.ToString()).ToString();
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
@ -118,7 +126,7 @@ public class AlgorithmConfigVM : BaseViewModel
catch (Exception ex)
{
Growl.Error(MultilingualHelper.getString("SaveFail"));
Logger.Error(ex);
Logger.Error($"全局异常捕获:{ex.Message}",ex);
}
}
private void IsEnabledByRole (){

@ -8,11 +8,13 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolTip;
using System.Text.RegularExpressions;
using Microsoft.Data.Sqlite;
using SparkClient.ViewModel.Configuration.SettingsPages;
using log4net;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.Configuration;
public class CutConfigVM: BaseViewModel
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(CutConfigVM));
public ICommand AddRowsCommand { get; }
public ICommand SaveCutConfigDataCommand { get; }
public ICommand DelCutRowCommand { get; }
@ -23,17 +25,26 @@ public class CutConfigVM: BaseViewModel
public DataTable CutterInfos { get { return _cutterInfos; } set { _cutterInfos = value; OnPropertyChanged("CutterInfos"); } }
private int RowNo = 0;
public CutConfigVM()
{
AddRowsCommand = new RelayCommand(AddRows);
try
{
AddRowsCommand = new RelayCommand(AddRows);
SaveCutConfigDataCommand = new RelayCommand(SaveCutConfigData);
SaveCutConfigDataCommand = new RelayCommand(SaveCutConfigData);
DelCutRowCommand = new RelayCommand(DelCutRow);
// 初始化VIEW层参数
// 初始化VIEW层Command
this.InitCutConfigData(null);
IsEnabledByRole();
DelCutRowCommand = new RelayCommand(DelCutRow);
// 初始化VIEW层参数
// 初始化VIEW层Command
this.InitCutConfigData(null);
IsEnabledByRole();
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
@ -43,15 +54,23 @@ public class CutConfigVM: BaseViewModel
/// <param name="param"></param>
public void InitCutConfigData(object param)
{
string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
if (dataTable!=null) {
dataTable.Columns.Add(new DataColumn("RowNo", typeof(int)));
foreach (DataRow row in dataTable.Rows)
{
row["RowNo"] = RowNo++;
try
{
string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
if (dataTable!=null) {
dataTable.Columns.Add(new DataColumn("RowNo", typeof(int)));
foreach (DataRow row in dataTable.Rows)
{
row["RowNo"] = RowNo++;
}
CutterInfos = dataTable;
}
CutterInfos = dataTable;
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
@ -61,7 +80,15 @@ public class CutConfigVM: BaseViewModel
/// <param name="row">行数</param>
public void AddRows(object row)
{
CutterInfos.Rows.Add("", "", "",Guid.NewGuid(), RowNo++);
try
{
CutterInfos.Rows.Add("", "", "",Guid.NewGuid(), RowNo++);
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
/// <summary>
@ -70,79 +97,87 @@ public class CutConfigVM: BaseViewModel
/// <param name="param"></param>
public void SaveCutConfigData(object param)
{
int count = CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").GroupBy(r => new { key = r.Field<string>("Key") }).Count();
if (count < CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").Count())
{
Growl.Error("Key有重复数据");
return;
}
string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
int insertCount = 0;
foreach (DataRow row in CutterInfos.Rows)
try
{
if (row["Key"].ToString() == "")
int count = CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").GroupBy(r => new { key = r.Field<string>("Key") }).Count();
if (count < CutterInfos.AsEnumerable().Where(r => r["Key"].ToString() != "").Count())
{
continue;
Growl.Error("Key有重复数据");
return;
}
DataRow? removerow = dataTable.AsEnumerable().Where(r => r["GUID"].ToString() == row["GUID"].ToString()).FirstOrDefault();
if (removerow != null)
string sql = @"SELECT ITEM_NAME as ItemName , KEY AS Key, VALUE AS Value, GUID FROM CUTTER_CONFIG";
DataTable dataTable = DataBaseHelper.ExecuteQuery(sql);
int insertCount = 0;
foreach (DataRow row in CutterInfos.Rows)
{
CutterConfigEntity entity = new CutterConfigEntity()
if (row["Key"].ToString() == "")
{
ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? "",
GUID = Guid.Parse(row["GUID"].ToString()??"")
};
sql = entity.GenerateUpdateSQL();
SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ITEM_NAME", row["ItemName"].ToString()),
new SqliteParameter("@KEY", row["Key"].ToString()),
new SqliteParameter("@VALUE", row["Value"].ToString()),
new SqliteParameter("@GUID", row["GUID"].ToString()),
};
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters);
dataTable.Rows.Remove(removerow);
continue;
}
DataRow? removerow = dataTable.AsEnumerable().Where(r => r["GUID"].ToString() == row["GUID"].ToString()).FirstOrDefault();
if (removerow != null)
{
CutterConfigEntity entity = new CutterConfigEntity()
{
ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? "",
GUID = Guid.Parse(row["GUID"].ToString()??"")
};
sql = entity.GenerateUpdateSQL();
SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ITEM_NAME", row["ItemName"].ToString()),
new SqliteParameter("@KEY", row["Key"].ToString()),
new SqliteParameter("@VALUE", row["Value"].ToString()),
new SqliteParameter("@GUID", row["GUID"].ToString()),
};
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters);
dataTable.Rows.Remove(removerow);
}
else
{
CutterConfigEntity entity = new CutterConfigEntity()
{
ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? ""
};
sql = entity.GenerateInsertSQL();
SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ItemName", row["ItemName"].ToString()),
new SqliteParameter("@Key", row["Key"].ToString()),
new SqliteParameter("@Value", row["Value"].ToString()),
new SqliteParameter("@GUID", row["GUID"].ToString()),
};
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters);
}
}
else
foreach (DataRow row in dataTable.Rows)
{
Guid.TryParse(row["GUID"].ToString(), out Guid result);
CutterConfigEntity entity = new CutterConfigEntity()
{
ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? ""
};
sql = entity.GenerateInsertSQL();
SqliteParameter[] sqliteParameters = {
new SqliteParameter("@ItemName", row["ItemName"].ToString()),
new SqliteParameter("@Key", row["Key"].ToString()),
new SqliteParameter("@Value", row["Value"].ToString()),
new SqliteParameter("@GUID", row["GUID"].ToString()),
Value = row["Value"].ToString() ?? "",
GUID = result
};
insertCount += DataBaseHelper.ExecuteNonQuery(sql, sqliteParameters);
sql = entity.GenerateDeleteSQL();
insertCount += DataBaseHelper.ExecuteNonQuery(sql);
}
}
foreach (DataRow row in dataTable.Rows)
{
Guid.TryParse(row["GUID"].ToString(), out Guid result);
CutterConfigEntity entity = new CutterConfigEntity()
if (insertCount>=0)
{
ItemName = row["ItemName"].ToString() ?? "",
Key = row["Key"].ToString() ?? "",
Value = row["Value"].ToString() ?? "",
GUID = result
};
sql = entity.GenerateDeleteSQL();
insertCount += DataBaseHelper.ExecuteNonQuery(sql);
}
if (insertCount>=0)
{
Growl.Info("保存成功");
Growl.Info("保存成功");
}
else
{
Growl.Error("保存失败");
}
}
else
catch (Exception ex)
{
Growl.Error("保存失败");
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
private void IsEnabledByRole()

@ -16,7 +16,7 @@ namespace SparkClient.ViewModel.Configuration;
public class LevelConfigVM : BaseViewModel
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResultVM));
private static readonly ILog Logger = LogManager.GetLogger(typeof(LevelConfigVM));
public ICommand ChangeShapeModelCommand { get; }
public ICommand ChangeInstituteModelCommand { get; }
public ICommand LoadLevelConfigCommand { get; }
@ -54,16 +54,24 @@ public class LevelConfigVM : BaseViewModel
private string STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
public LevelConfigVM(DataGrid dataGrid)
{
if (dataGrid == null) return;
this.dataGrid = dataGrid;
ChangeShapeModelCommand = new RelayCommand(ChangeShapeModel);
ChangeInstituteModelCommand = new RelayCommand(ChangeInstituteModel);
LoadLevelConfigCommand = new RelayCommand(LoadLevelConfig);
DelLevelConfigCommand = new RelayCommand(DelLevelConfig);
SaveLevelConfigCommand = new RelayCommand(SaveLevelConfig);
InitLevelConfig(null);
InitData();
IsUpdateButtonEnabled = false;
try
{
if (dataGrid == null) return;
this.dataGrid = dataGrid;
ChangeShapeModelCommand = new RelayCommand(ChangeShapeModel);
ChangeInstituteModelCommand = new RelayCommand(ChangeInstituteModel);
LoadLevelConfigCommand = new RelayCommand(LoadLevelConfig);
DelLevelConfigCommand = new RelayCommand(DelLevelConfig);
SaveLevelConfigCommand = new RelayCommand(SaveLevelConfig);
InitLevelConfig(null);
InitData();
IsUpdateButtonEnabled = false;
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
/// <summary>
@ -72,13 +80,24 @@ public class LevelConfigVM : BaseViewModel
/// <param name="param"></param>
public void InitLevelConfig(object param)
{
Save_successful_message = MultilingualHelper.getString("Save_successful_message");
save_fail_message = MultilingualHelper.getString("save_fail_message");
no_data_message = MultilingualHelper.getString("no_data_message");
grade_config_left_top = MultilingualHelper.getString("grade_config_left_top");
GRADE_NAME = MultilingualHelper.getString("GRADE_NAME");
STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
try
{
Save_successful_message = MultilingualHelper.getString("Save_successful_message");
save_fail_message = MultilingualHelper.getString("save_fail_message");
no_data_message = MultilingualHelper.getString("no_data_message");
grade_config_left_top = MultilingualHelper.getString("grade_config_left_top");
GRADE_NAME = MultilingualHelper.getString("GRADE_NAME");
STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
/// <summary>
/// 初始化数据(形状列表检索)
/// </summary>
private void InitData()
{
dataGrid.Columns.Clear();
@ -89,13 +108,20 @@ public class LevelConfigVM : BaseViewModel
ShapeId = Shapes.AsEnumerable().FirstOrDefault()["SHAPE_ID"].ToString();
}
}
/// <summary>
/// 初始化数据(规则列表检索)
/// </summary>
private string setInstitutes(string id)
{
string insituteSql = $"SELECT RULE_ID,RULE_NAME,RULE_EN_NAME FROM RULE WHERE RULE_ID NOT LIKE '%_TA_%';";
Institutes = DataBaseHelper.ExecuteQuery(insituteSql);
return Institutes.AsEnumerable().FirstOrDefault()["RULE_ID"].ToString();
}
/// <summary>
/// 页面数据初始化(检索)
/// </summary>
/// <param name="shapeId"></param>
/// <param name="ruleId"></param>
private void setDataGrid(string shapeId, string ruleId)
{
string gradeSql = $"SELECT GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER FROM GRADE WHERE SHAPE_ID = '{shapeId}' AND RULE_ID LIKE '{ruleId}%' GROUP BY GRADE_NAME,GRADE_EN_NAME,GRADE_ORDER ORDER BY GRADE_ORDER;";
@ -105,23 +131,32 @@ public class LevelConfigVM : BaseViewModel
DataTable rowInfos = DataBaseHelper.ExecuteQuery(standardSql);
setStandardList(columnInfos, rowInfos);
}
/// <summary>
/// 页面数据初始化(页面值设定)
/// </summary>
/// <param name="gradeList"></param>
/// <param name="standardList"></param>
private void setStandardList(DataTable gradeList, DataTable standardList)
{
try
{
// 定义单元格样式
Style cellStyle = new Style(typeof(TextBlock));
Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);
cellStyle.Setters.Add(setSellStyle);
Setter setSellStyle1 = new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
cellStyle.Setters.Add(setSellStyle1);
// 清空datagrid中的数据
dataGrid.Columns.Clear();
if (gradeList != null)
{
StandardList = new DataTable();
List<DataColumn> columns = new List<DataColumn>();
// 循环等级列表,设定datagrid中的列
foreach (DataRow columnInfo in gradeList.Rows)
{
// 最高等的情况列放置于中间
if ("1".Equals(columnInfo["GRADE_ORDER"].ToString()))
{
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString()));
@ -129,6 +164,7 @@ public class LevelConfigVM : BaseViewModel
//this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString()),ElementStyle = cellStyle });
this.dataGrid.Columns.Add(GetDataGridColumn(columnInfo[GRADE_NAME].ToString() ?? "", columnInfo["GRADE_EN_NAME"].ToString() ?? ""));
}
// 最高等级以外情况的列放置于两侧
else
{
//this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"), ElementStyle = cellStyle });
@ -141,15 +177,18 @@ public class LevelConfigVM : BaseViewModel
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX" + "_" + 1));
}
}
// 在最左侧放置测试项目列
columns.Insert(0, new DataColumn("title"));
this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = grade_config_left_top, Binding = new Binding("title"), ElementStyle = cellStyle });
StandardList.Columns.AddRange(columns.ToArray());
// 以标准名分组表示每一行
if (standardList != null)
{
// 以规则id分组(国标时会有多中规则id的情况)
var standardRules = standardList.AsEnumerable().GroupBy(r => r["RULE_ID"].ToString());
foreach (var ruleStandardList in standardRules)
{
// 以测试项目名分组表示每一行
var standards = ruleStandardList.AsEnumerable().GroupBy(r => r[STANDARD_NAME].ToString());
foreach (var standard in standards)
{
@ -159,6 +198,7 @@ public class LevelConfigVM : BaseViewModel
// 每一行单元格内数据
var row = standard.Where(s => s["GRADE_ORDER"].ToString() == columnInfo["GRADE_ORDER"].ToString()).FirstOrDefault();
string value = "";
// 国标时有空场合,为空时做以下处理
if (row == null)
{
if ("1".Equals(columnInfo["GRADE_ORDER"].ToString()))
@ -175,10 +215,14 @@ public class LevelConfigVM : BaseViewModel
}
continue;
}
// 把获取的数据按照定级排序放置与单元格中
// 最高等级放中间,其他的依次往两侧排列
// 最高等级
if ("1".Equals(row["GRADE_ORDER"].ToString()))
{
string Min = row["STANDARD_MIN"].ToString();
string Max = row["STANDARD_MAX"].ToString();
// 最大值并且最小值不为空时 以最小值-最大值显示
if (!string.IsNullOrEmpty(Min) && !string.IsNullOrEmpty(Max))
{
value = getFix(row, "MIN_PREFIX") +
@ -187,6 +231,7 @@ public class LevelConfigVM : BaseViewModel
+ getFix(row, "MIN_SUFFIX")
;
}
// 最小值不为空,最大值为空时 显示最小值
else if (!string.IsNullOrEmpty(Min))
{
value = getFix(row, "MIN_PREFIX") +
@ -194,6 +239,7 @@ public class LevelConfigVM : BaseViewModel
+ getFix(row, "MIN_SUFFIX")
;
}
// 最大值不为空,最小值为空时 显示最大值
else if (!string.IsNullOrEmpty(Max))
{
value = getFix(row, "MIN_PREFIX") +
@ -201,7 +247,7 @@ public class LevelConfigVM : BaseViewModel
+ getFix(row, "MIN_SUFFIX")
;
}
// 有换行符时 分两行显示
var arr = value.Split("\r\n", 2);
rowInfo.Add(arr[0]);
if (arr.Length > 1)
@ -213,6 +259,7 @@ public class LevelConfigVM : BaseViewModel
rowInfo.Add("");
}
}
// 其他等级 依次放两边
else
{
// 每一行单元格内数据
@ -290,6 +337,8 @@ public class LevelConfigVM : BaseViewModel
if (ruleId != null && !string.IsNullOrEmpty(ruleId))
{
string ta = ruleId.Substring(ruleId.Length - 2);
// 国标场合 按照规则id中涵盖信息不同 对测试项目有不同描述
if (ruleId.StartsWith("GB"))
{
if ("49".Equals(ta))
@ -321,6 +370,13 @@ public class LevelConfigVM : BaseViewModel
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
/// <summary>
/// 设置单元格内部元素(现在单元格内部元素为两个textblock)
/// </summary>
/// <param name="Header"></param>
/// <param name="Binding"></param>
/// <param name="lineCount"></param>
/// <returns></returns>
private DataGridColumn GetDataGridColumn(string Header,string Binding,int lineCount = 2)
{
//Style cellStyle = new Style(typeof(TextBlock));
@ -463,7 +519,7 @@ public class LevelConfigVM : BaseViewModel
catch (Exception ex) {
DataBaseHelper.rollback();
Logger.Error($"全局异常捕获:{ex.Message}", ex);
Growl.Error(save_fail_message);
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
}
}
/// <summary>
@ -483,9 +539,7 @@ public class LevelConfigVM : BaseViewModel
{
try
{
InstitutesEnabled = false;
ShapesEnabled = false;
IsUpdateButtonEnabled = true;
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*";
jsonEntity = null;
@ -495,8 +549,17 @@ public class LevelConfigVM : BaseViewModel
string content = "";
if (File.Exists(filename))
{
content = AESHelper.DecryptFile(filename, "000000");
jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content);
try
{
content = AESHelper.DecryptFile(filename, "000000");
jsonEntity = JsonConvert.DeserializeObject<JsonEntity>(content);
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("LevelConfigFormatError")}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
return;
}
}
}
else
@ -549,6 +612,17 @@ public class LevelConfigVM : BaseViewModel
string standardInfosJson = JsonConvert.SerializeObject(jsonEntity.standardInfos);
DataTable standardInfos = Common.JsonToDataTable(standardInfosJson);
setStandardList(gradeInfos, standardInfos);
InstitutesEnabled = false;
ShapesEnabled = false;
IsUpdateButtonEnabled = true;
}
else
{
new MessageBox().Show($"{MultilingualHelper.getString("LevelConfigFormatError")}");
InstitutesEnabled = true;
ShapesEnabled = true;
IsUpdateButtonEnabled = false;
return;
}
}
catch (Exception ex)

@ -1,11 +1,15 @@
using log4net;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.BaseWindow;
using SparkClient.ViewModel.Configuration.SettingsPages;
using System.Windows.Input;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.Configuration;
public class SettingBaseVM : BaseViewModel
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(SettingBaseVM));
public SettingsVM CustomSetContent { get; }
public ModelColorSetPageVM ModelColorSetContent { get; }
@ -13,17 +17,33 @@ public class SettingBaseVM : BaseViewModel
public SettingBaseVM()
{
CustomSetContent = new SettingsVM();
ModelColorSetContent = new ModelColorSetPageVM();
SaveCommand = new RelayCommand(Save);
try
{
CustomSetContent = new SettingsVM();
ModelColorSetContent = new ModelColorSetPageVM();
SaveCommand = new RelayCommand(Save);
}
catch (Exception ex)
{
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
public void Save(object param)
{
if(CustomSetContent.SaveUpdate(param)&&
ModelColorSetContent.SaveUpdate(param))
try
{
if (CustomSetContent.SaveUpdate(param)&&
ModelColorSetContent.SaveUpdate(param))
{
WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
}
}
catch (Exception ex)
{
WindowManager.mainViewModel.Content = WindowManager.PreviousVM();
new MessageBox().Show($"{MultilingualHelper.getString("ApplicationError")}{ex.Message}");
Logger.Error($"全局异常捕获:{ex.Message}", ex);
}
}
}

@ -11,6 +11,9 @@ using System.Windows.Input;
namespace SparkClient.ViewModel.Dialog
{
/// <summary>
/// 开始检测dialog 已作废
/// </summary>
internal class StartDialogVM : BaseViewModel
{
public ICommand SkipCommand { get; }

@ -24,6 +24,9 @@ using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.Grading;
/// <summary>
/// 钻石选择画面VM
/// </summary>
public class DiamondSelectVM : BaseViewModel
{
@ -68,8 +71,13 @@ public class DiamondSelectVM : BaseViewModel
Buttons = tempButtons;
}
/// <summary>
/// 画面按钮添加
/// </summary>
/// <returns></returns>
private List<ButtonInfo> GetButtonInfos()
{
List<ButtonInfo> buttonInfos = new List<ButtonInfo>();
buttonInfos.Add(new ButtonInfo() { Type = "round", IsEnabled = true, ImageName = "round.png", ButtonName = MultilingualHelper.getString("圆形") });
buttonInfos.Add(new ButtonInfo() { Type = "Hexagon", IsEnabled = false, ImageName = "Hexagon.png", ButtonName = MultilingualHelper.getString("六边形") });

@ -25,10 +25,15 @@ using log4net;
using SparkClient.ViewModel.Configuration;
namespace SparkClient.ViewModel.Grading;
/// <summary>
/// 检测结果画面VM
/// </summary>
public class GradingResultVM : BaseViewModel
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResultVM));
/// <summary>
/// 钻石编码
/// </summary>
private string DiamondCode { get; set; }
private List<DataInfo> _dtResults;
// ViewportData
@ -46,23 +51,68 @@ public class GradingResultVM : BaseViewModel
private string _ds;
private RowDetail _selRowDataDetail;
private bool _isEnabled;
/// <summary>
/// 保存按钮状态
/// </summary>
public bool isSaved = false;
public ICommand SaveFileCommand { get; }
public ICommand SaveAsCommand { get; }
/// <summary>
/// 左侧计算结果展示数据
/// </summary>
public List<DataInfo> DtResults { get { return _dtResults; } set { _dtResults = value; OnPropertyChanged(nameof(DtResults)); } }
/// <summary>
/// 右侧钻石3D模型展示控件
/// </summary>
public ViewportData ViewportData { get { return _viewportData; } set { _viewportData = value; OnPropertyChanged(nameof(ViewportData)); } }
/// <summary>
/// 画面上方定级标准
/// </summary>
public string Standard { get { return _standard; } set { _standard = value; OnPropertyChanged(nameof(Standard)); } }
/// <summary>
/// 形状
/// </summary>
public string Shape { get { return _shape; } set { _shape = value; OnPropertyChanged(nameof(Shape)); } }
/// <summary>
/// 冠面类型
/// </summary>
public string CrownType { get { return _crownType; } set { _crownType = value; OnPropertyChanged(nameof(CrownType)); } }
/// <summary>
/// 亭面类型
/// </summary>
public string PavType { get { return _pavType; } set { _pavType = value; OnPropertyChanged(nameof(PavType)); } }
/// <summary>
/// 画面明细展示数据
/// </summary>
public RowDetail SelRowDataDetail { get { return _selRowDataDetail; } set { _selRowDataDetail = value; OnPropertyChanged(nameof(SelRowDataDetail)); } }
/// <summary>
/// 重量
/// </summary>
public string Wight { get { return _wight; } set { _wight = value; OnPropertyChanged(nameof(Wight)); } }
/// <summary>
/// 切工等级(整体 画面上部显示)
/// </summary>
public string CutLevelTotal { get { return _cutLevelTotal; } set { _cutLevelTotal = value; OnPropertyChanged(nameof(CutLevelTotal)); } }
/// <summary>
/// 对称性等级(整体 画面上部显示)
/// </summary>
public string SymLevelTotal { get { return _symLevelTotal; } set { _symLevelTotal = value; OnPropertyChanged(nameof(SymLevelTotal)); } }
/// <summary>
/// 下拉列表DS
/// </summary>
public DataTable DSList { get { return _dsList; } set { _dsList = value; OnPropertyChanged(nameof(DSList)); } }
/// <summary>
/// 下拉列表DS 选择的值
/// </summary>
public string DS { get { return _ds; } set { _ds = value; OnPropertyChanged(nameof(DS)); } }
/// <summary>
/// 定级下拉列表
/// </summary>
public DataTable GradeList { get { return _gradeList; } set { _gradeList = value; OnPropertyChanged(nameof(GradeList)); } }
/// <summary>
/// 活性
/// </summary>
public bool IsEnabled { get{ return _isEnabled; } set { _isEnabled = value; OnPropertyChanged(nameof(IsEnabled)); } }
private readonly static string digitsFormat = "f1";

@ -170,7 +170,7 @@
<!-- </DataGrid.RowStyle> -->
<!-- </DataGrid> -->
<DataGrid Style="{StaticResource CustomDataGridStyle}"
ItemsSource="{Binding StandardList}" x:Name="DataGrid1" CanUserSortColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False">
ItemsSource="{Binding StandardList}" x:Name="DataGrid1" CanUserSortColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False">
<!-- 自定义列示例(AutoGenerateColumns=false 时需要手动定义) -->
<!-- <DataGrid.Columns> -->
<!-- <DataGridTextColumn Header="列一" Binding="{Binding Prop1}" /> -->

Loading…
Cancel
Save