ModeSetting.xaml.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using System;
  2. using CustomUI;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using SHJX.Service.Model.Control;
  6. using SHJX.Service.Common.CustomUtil;
  7. using SHJX.Service.Common.UserDelegate;
  8. using System.Collections.Generic;
  9. namespace SHJX.Service.Librarys.MainLibrarys
  10. {
  11. /// <summary>
  12. /// ModeSetting.xaml 的交互逻辑
  13. /// </summary>
  14. public partial class ModeSetting : Window
  15. {
  16. public string SampleVolume
  17. {
  18. get => (string)GetValue(CenterTextProperty);
  19. set => SetValue(CenterTextProperty, value);
  20. }
  21. public static readonly DependencyProperty CenterTextProperty =
  22. DependencyProperty.Register(
  23. nameof(SampleVolume), typeof(string),
  24. typeof(ModeSetting), new UIPropertyMetadata("10", CenterTextChangedCallback));
  25. private static void CenterTextChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
  26. {
  27. var control = obj as ModeSetting;
  28. var sampleVolume = control?.TxtSampleNum;
  29. var sampleMultiple = control?.TxtMultiple;
  30. if (sampleVolume is null || sampleMultiple is null) return;
  31. if (Convert.ToDouble(args.NewValue) <= 0 || Convert.ToDouble(args.NewValue) > 10)
  32. {
  33. sampleVolume.Text = args.OldValue.ToString();
  34. return;
  35. }
  36. sampleVolume.Text = args.NewValue.ToString();
  37. }
  38. private string _detail;
  39. public string CreateDetailInfo
  40. {
  41. get
  42. {
  43. if (string.IsNullOrWhiteSpace(_detail))
  44. {
  45. _detail = DateTime.Now.ToString("MMddmmss");
  46. }
  47. return _detail;
  48. }
  49. set => _detail = value;
  50. }
  51. private readonly string _opKey;
  52. public ModeSetting(string detail, string color,string opKey)
  53. {
  54. var detailInfo = detail;
  55. _opKey = opKey;
  56. Owner = Application.Current.MainWindow;
  57. InitializeComponent();
  58. if (!(string.IsNullOrWhiteSpace(detailInfo)|| detailInfo=="补杯"))
  59. {
  60. txt_ModeDetail.Text = detailInfo;
  61. }
  62. CreateDetailInfo = DateTime.Now.ToString("MMddmmss");
  63. if (color.ToLower() == "#ff99cc" || color.ToLower() == "#ffcccc")
  64. {
  65. btn_Sure.IsEnabled = false;
  66. }
  67. var detailArg = DataCache.Get<SampleDetail>(opKey);
  68. if (detailArg is not null)
  69. {
  70. InitData(detailArg);
  71. }
  72. }
  73. public void InitData(SampleDetail detailArgs)
  74. {
  75. txt_ModeDetail.Text = detailArgs.Detail;
  76. SampleVolume = detailArgs.SampleVolume.ToString();
  77. TxtMultiple.Text = detailArgs.Multiple.ToString();
  78. txt_HgSO.Text = detailArgs.HgSO4.ToString();
  79. foreach (SegmentItem item in cb_Mode.Items)
  80. {
  81. if (item.Content.Equals(detailArgs.SampleType))
  82. {
  83. cb_Mode.SelectedItem = item;
  84. }
  85. }
  86. foreach (SegmentItem item in cb_Concentration.Items)
  87. {
  88. if (item.Content.Equals(detailArgs.Concentration))
  89. {
  90. cb_Concentration.SelectedItem = item;
  91. }
  92. }
  93. cb_send.IsChecked = detailArgs.WhetherSend;
  94. }
  95. public ModeSetting()
  96. {
  97. Owner = Application.Current.MainWindow;
  98. InitializeComponent();
  99. }
  100. private void Cancel_Click(object sender, RoutedEventArgs e)
  101. {
  102. Close();
  103. }
  104. private void cb_Mode_SelectionChanged(object sender, SelectionChangedEventArgs e)
  105. {
  106. txt_ModeDetail.Text = ((SegmentItem)cb_Mode.SelectedItem).Content.ToString() switch
  107. {
  108. "水样" => CreateDetailInfo,
  109. _ => (cb_Mode.SelectedItem as SegmentItem).Content.ToString(),
  110. };
  111. }
  112. private void btn_Sure_Click(object sender, RoutedEventArgs e)
  113. {
  114. try
  115. {
  116. SampleDetail detailArgs = new SampleDetail()
  117. {
  118. NodeName = _opKey,
  119. Detail = txt_ModeDetail.Text,
  120. SampleVolume = Convert.ToDouble(TxtSampleNum.Text),
  121. Multiple = Convert.ToDouble(TxtMultiple.Text),
  122. HgSO4 = Convert.ToDouble(txt_HgSO.Text),
  123. SampleType = ((SegmentItem)cb_Mode.SelectedItem).Content.ToString(),
  124. Concentration = ((SegmentItem)cb_Concentration.SelectedItem).Content.ToString(),
  125. QuickTitration = cb_quick.IsChecked != null && (bool)cb_quick.IsChecked,
  126. WhetherSend = cb_send.IsChecked != null && (bool)cb_send.IsChecked
  127. };
  128. if (detailArgs.WhetherSend)
  129. {
  130. DataCache.Set(_opKey, detailArgs);
  131. }
  132. else
  133. {
  134. DataCache.Remove(_opKey);
  135. }
  136. Messager.Send("sample", detailArgs);
  137. Close();
  138. }
  139. catch (Exception ex)
  140. {
  141. throw new Exception(ex.Message);
  142. }
  143. }
  144. private void TxtSampleNum_TextChanged(object sender, TextChangedEventArgs e)
  145. {
  146. try
  147. {
  148. if (string.IsNullOrWhiteSpace(TxtSampleNum.Text))
  149. {
  150. TxtMultiple.Text = "0";
  151. return;
  152. }
  153. TxtMultiple.Text = $"{10 / Convert.ToDouble(TxtSampleNum.Text):F2}";
  154. }
  155. catch (Exception)
  156. {
  157. throw;
  158. }
  159. }
  160. }
  161. }