UCPatchMain.xaml.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. using MeterVision.Config;
  2. using MeterVision.db;
  3. using MeterVision.Dlg;
  4. using MeterVision.model;
  5. using MeterVision.Util;
  6. using Ookii.Dialogs.Wpf;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Collections.ObjectModel;
  10. using System.ComponentModel;
  11. using System.IO;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Text.RegularExpressions;
  15. using System.Threading;
  16. using System.Threading.Tasks;
  17. using System.Windows;
  18. using System.Windows.Controls;
  19. using System.Windows.Data;
  20. using System.Windows.Documents;
  21. using System.Windows.Input;
  22. using System.Windows.Media;
  23. using System.Windows.Media.Imaging;
  24. using System.Windows.Navigation;
  25. //using System.Windows.Shapes;
  26. namespace MeterVision.Patch
  27. {
  28. /// <summary>
  29. /// UCPatchMain.xaml 的交互逻辑
  30. /// </summary>
  31. public partial class UCPatchMain : UserControl, INotifyPropertyChanged
  32. {
  33. private const int COLUMN_LEFT_WIDTH = 220;
  34. private const int COLUMN_RIGHT_WIDTH = 400;
  35. private bool LeftVisiable = true; //表示左侧的显示状态
  36. private bool RightVisiable = true; //表示右侧的显示状态
  37. public event PropertyChangedEventHandler PropertyChanged;
  38. private string FindStationId = "";
  39. protected void OnPropertyChanged(string propertyName)
  40. {
  41. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  42. }
  43. public ObservableCollection<KeyValuePair<PatchFindType, string>> PatchFindTypeKVs { get; set; }
  44. private PatchFindType _selectedPatchFindType;
  45. public PatchFindType SelectedPatchFindType
  46. {
  47. get => _selectedPatchFindType;
  48. set
  49. {
  50. if(_selectedPatchFindType != value)
  51. {
  52. _selectedPatchFindType = value;
  53. OnPropertyChanged(nameof(SelectedPatchFindType));
  54. ucPatchGird.ChangePatchItemOrFinType(SelectedPatchItem,SelectedStationItem ,SelectedPatchFindType);
  55. }
  56. }
  57. }
  58. public PageModel PatchPage { get; set; }
  59. //定义识别任务数据源
  60. public ObservableCollection<PatchItem> PatchItemList { get; set; }
  61. public CfginiItem mConfigItem { get; set; }
  62. private PatchItem _selectedPatchItem;
  63. public PatchItem SelectedPatchItem
  64. {
  65. get => _selectedPatchItem;
  66. set
  67. {
  68. _selectedPatchItem = value;
  69. OnPropertyChanged(nameof(SelectedPatchItem));
  70. //ucPatchGird.ChangePatchItemOrFinType(SelectedPatchItem, SelectedPatchFindType);
  71. if(_selectedPatchItem != null)
  72. {
  73. ucStationGrid.ChangeFind(FindStationId, _selectedPatchItem.PatchId);
  74. }
  75. else
  76. {
  77. ucStationGrid.ChangeFind(FindStationId, "");
  78. }
  79. Apply_UCPatchDetail_Title(value);
  80. }
  81. }
  82. private VPatchStation _selectedStationItem;
  83. public VPatchStation SelectedStationItem
  84. {
  85. get => _selectedStationItem;
  86. set
  87. {
  88. _selectedStationItem = value;
  89. OnPropertyChanged(nameof(SelectedStationItem));
  90. //ucPatchGird.CurStationItem = SelectedStationItem;
  91. ucPatchGird.ChangePatchItemOrFinType(SelectedPatchItem, SelectedStationItem,SelectedPatchFindType);
  92. //Apply_UCPatchDetail_Title(value);
  93. Apply_Station_Title(value);
  94. }
  95. }
  96. //总共的Patch数量
  97. private int _totalPatchRecords;
  98. public int TotalPatchRecords
  99. {
  100. get => _totalPatchRecords;
  101. set
  102. {
  103. if(_totalPatchRecords != value)
  104. {
  105. _totalPatchRecords = value;
  106. OnPropertyChanged(nameof(TotalPatchRecords));
  107. }
  108. }
  109. }
  110. //private void Apply_UCPatchDetail_Title(PatchItem patchItem)
  111. private void Apply_UCPatchDetail_Title(PatchItem patchItem)
  112. {
  113. txtPatchName.Text = patchItem == null ? "" : $"{patchItem.Index}.";
  114. }
  115. private void Apply_Station_Title(VPatchStation stationItem)
  116. {
  117. pnlDetailFunc.Visibility = stationItem == null ? Visibility.Hidden : Visibility.Visible;
  118. txtStationName.Text = stationItem == null ? "请选择站点" : $"站点: {stationItem.StationIdName}";
  119. }
  120. private void InitRightControls(PatchDetailItem PatchDetailItem)
  121. {
  122. pnlImage.Visibility = txtRightItemIndex.Visibility = pnlLog.Visibility =
  123. PatchDetailItem == null ? Visibility.Collapsed : Visibility.Visible;
  124. }
  125. private void InitPatchFindTypeKVs()
  126. {
  127. PatchFindTypeKVs = new ObservableCollection<KeyValuePair<PatchFindType, string>>()
  128. {
  129. new KeyValuePair<PatchFindType, string>(PatchFindType.ALL,
  130. "所有"),
  131. new KeyValuePair<PatchFindType, string>(PatchFindType.RUN_YES,
  132. "已识别"),
  133. new KeyValuePair<PatchFindType, string>(PatchFindType.RUN_NO,
  134. "未识别"),
  135. new KeyValuePair<PatchFindType, string>(PatchFindType.RESULT_OK,
  136. "识别正确"),
  137. new KeyValuePair<PatchFindType, string>(PatchFindType.RESULT_ERROR,
  138. "识别错误"),
  139. new KeyValuePair<PatchFindType, string>(PatchFindType.RESULT_INVLIAD,
  140. "识别无效"),
  141. new KeyValuePair<PatchFindType, string>(PatchFindType.ALL_NO_STAND_VALUE,
  142. "无标准值"),
  143. new KeyValuePair<PatchFindType, string>(PatchFindType.RUN_YES_NO_STAND_VALUE,
  144. "已识别+无标准值"),
  145. new KeyValuePair<PatchFindType, string>(PatchFindType.RUN_NO_NO_STAND_VALUE,
  146. "未识别+无标准值"),
  147. new KeyValuePair<PatchFindType, string>(PatchFindType.HAVE_MEMO,
  148. "有备注"),
  149. };
  150. // ALL_NO_STAND_VALUE = 6, //所有无标准值项
  151. //RUN_YES_NO_STAND_VALUE = 7, //已运行的无标准值的项
  152. //RUN_NO_NO_STAND_VALUE = 8 //未运行的无标准值的项
  153. }
  154. public UCPatchMain()
  155. {
  156. InitializeComponent();
  157. PatchItemList = new ObservableCollection<PatchItem>();
  158. dgPatch.ItemsSource = PatchItemList;
  159. Apply_UCPatchDetail_Title(null);
  160. Apply_Station_Title(null);
  161. InitRightControls(null);
  162. //订阅UCPatchGrid的选中项变化事件
  163. ucPatchGird.OnSelectedPatchDetailItemChanged += UcPatchGird_OnSelectedPatchDetailItemChanged;
  164. ucPatchGird.OnRefreshPatchItem += UcPatchGird_OnRefreshPatchItem;
  165. mConfigItem = CfginiItem.GetConfigItem();
  166. PatchPage = new PageModel
  167. {
  168. //PageSize = mConfigItem.CatalogPageSize,
  169. PageSize = mConfigItem.PageSize1, //mConfigItem.PatchCatalogPageSize,
  170. PageNumber = 1
  171. };
  172. //mConfigItem.OnPatchCatalogPageSizeChnaged += MConfigItem_OnPatchCatalogPageSizeChnaged;
  173. mConfigItem.OnPageSize1Changed += MConfigItem_OnPageSize1Changed;
  174. this.DataContext = this;
  175. LoadPatchItemListAsync();
  176. InitPatchFindTypeKVs();
  177. SelectedPatchFindType = PatchFindType.ALL;
  178. //控制左右2侧栏目的显示
  179. LeftVisiable = true;
  180. ChangeLeftVisiable(LeftVisiable);
  181. RightVisiable = true;
  182. ChangeRightVisiable(RightVisiable);
  183. txtFindStationId.Text = string.Empty;
  184. ucStationGrid.OnItemChanged += UcStationGrid_OnItemChanged;
  185. }
  186. private async void MConfigItem_OnPageSize1Changed(int pageSize1)
  187. {
  188. //throw new NotImplementedException();
  189. PatchPage.InitDefaulValue(pageSize1);
  190. bool blLoad = await LoadPatchItemList();
  191. if (blLoad)
  192. {
  193. SelectedPatchItem = null;
  194. }
  195. }
  196. //private async void MConfigItem_OnPatchCatalogPageSizeChnaged(int pageSize)
  197. //{
  198. // PatchPage.InitDefaulValue(pageSize);
  199. // bool blLoad = await LoadPatchItemList();
  200. // if (blLoad)
  201. // {
  202. // SelectedPatchItem = null;
  203. // }
  204. //}
  205. private void UcStationGrid_OnItemChanged(VPatchStation item)
  206. {
  207. SelectedStationItem = item;
  208. }
  209. private async void LoadPatchItemListAsync()
  210. {
  211. await LoadPatchItemList();
  212. }
  213. private void UcPatchGird_OnRefreshPatchItem(string patchId)
  214. {
  215. if ( string.IsNullOrEmpty(patchId) ) return;
  216. //VPatch vPatch = null;
  217. //await Task.Run(() =>
  218. //{
  219. // vPatch = DBPatch.GetVPatchById(patchId);
  220. //});
  221. //if(vPatch != null)
  222. //{
  223. // //var NewPatchItem = new PatchItem(vPatch);
  224. // foreach(var patchItem in PatchItemList)
  225. // {
  226. // if(patchItem.PatchId == vPatch.PatchId)
  227. // {
  228. // ObjectHelper.CopyMatchingFields(vPatch, patchItem);
  229. // break;
  230. // }
  231. // }//foreach
  232. //}//if vpatch!=null
  233. RefresUIPatchItem(patchId);
  234. }
  235. //处理UCPatchGrid的选中项变化事件
  236. private void UcPatchGird_OnSelectedPatchDetailItemChanged(object sender, PatchDetailItemChangedEventArgs e)
  237. {
  238. InitRightControls(e.SelectedPatchDetailItem);
  239. txtRightItemIndex.Text = string.Empty;
  240. // 如果有选中的数据项,则将图片路径传递给 UCImage
  241. if (e.SelectedPatchDetailItem != null)
  242. {
  243. ucImagerSource.ImageSource = e.SelectedPatchDetailItem.SrcImage;
  244. ucImageResult.ImageSource = e.SelectedPatchDetailItem.DstImage;
  245. ucImagerSource.ImageName = "原始图片";
  246. ucImageResult.ImageName = "结果图片";
  247. //设置log显示
  248. SetLogContent(e.SelectedPatchDetailItem);
  249. if (SelectedPatchItem != null)
  250. {
  251. txtRightItemIndex.Text = $"{SelectedPatchItem.Index}. - {e.SelectedPatchDetailItem.Index}.";
  252. }
  253. }
  254. }
  255. private async void SetLogContent(PatchDetailItem detailItem)
  256. {
  257. if(detailItem != null && File.Exists(detailItem.LogPath))
  258. {
  259. LogRichTextBox.Document.Blocks.Clear();
  260. await Task.Run(() =>
  261. {
  262. //Task.Delay(2000);
  263. //Thread.Sleep(4000);
  264. string content = File.ReadAllText(detailItem.LogPath);
  265. content = $"{detailItem.Index}. {detailItem.LogPath}\n\n{content}";
  266. Application.Current.Dispatcher.Invoke(() =>
  267. {
  268. LogRichTextBox.ScrollToHome();
  269. Paragraph logParagraph = new Paragraph(new Run(content));
  270. LogRichTextBox.Document.Blocks.Add(logParagraph);
  271. });
  272. });
  273. }
  274. }
  275. private async Task<bool> LoadPatchItemList()
  276. {
  277. PatchItemList.Clear();
  278. try
  279. {
  280. var result = await Task.Run(() =>
  281. {
  282. return DBPatch.GetPagedVPatchs(PatchPage.PageNumber, PatchPage.PageSize);
  283. });
  284. TotalPatchRecords = result.Item1;
  285. PatchPage.PageCount = result.Item2;
  286. List<VPatch> patchs = result.Item3;
  287. int index = 0;
  288. foreach (VPatch vPatch in patchs)
  289. {
  290. index++;
  291. PatchItem patchItem = new PatchItem(vPatch);
  292. patchItem.Index = index + (PatchPage.PageNumber - 1) * PatchPage.PageSize;
  293. PatchItemList.Add(patchItem);
  294. }
  295. return true;
  296. }
  297. catch(Exception ex)
  298. {
  299. MessageBox.Show(Application.Current.MainWindow,
  300. $"加载数据时发生错误:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
  301. return false;
  302. }
  303. }
  304. private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
  305. {
  306. // 只允许数字输入
  307. e.Handled = !Regex.IsMatch(e.Text, @"^\d$");
  308. }
  309. private async void BtnPatchPrePage_Click(object sender, RoutedEventArgs e)
  310. {
  311. if (PatchPage.PageNumber > 1)
  312. {
  313. PatchPage.PageNumber -= 1;
  314. bool blLoad = await LoadPatchItemList();
  315. if (blLoad && PatchItemList.Count > 0)
  316. {
  317. dgPatch.ScrollIntoView(PatchItemList[0]);
  318. }
  319. }
  320. }
  321. private async void BtnPatchNextPage_Click(object sender, RoutedEventArgs e)
  322. {
  323. if (PatchPage.PageNumber < PatchPage.PageCount)
  324. {
  325. PatchPage.PageNumber += 1;
  326. bool blLoad = await LoadPatchItemList();
  327. if (blLoad && PatchItemList.Count > 0)
  328. {
  329. dgPatch.ScrollIntoView(PatchItemList[0]);
  330. }
  331. }
  332. }
  333. private void BtnPatchDetailFirstPage_Click(object sender, RoutedEventArgs e)
  334. {
  335. ucPatchGird.FirstPage();
  336. }
  337. private void BtnPatchDetailPrePage_Click(object sender, RoutedEventArgs e)
  338. {
  339. ucPatchGird.PrePage();
  340. }
  341. private void BtnPatchDetailNextPage_Click(object sender, RoutedEventArgs e)
  342. {
  343. ucPatchGird.NextPage();
  344. }
  345. private void BtnPatchDetailLastPage_Click(object sender, RoutedEventArgs e)
  346. {
  347. ucPatchGird.LastPage();
  348. }
  349. private void BtnPatchDetailSpeciPage_Click(object sender, RoutedEventArgs e)
  350. {
  351. try
  352. {
  353. int pageNumber = int.Parse(txtPatchDetailPageNumber.Text.ToString());
  354. ucPatchGird.SpeciPage(pageNumber);
  355. }
  356. catch
  357. {
  358. }
  359. }
  360. private async void BtnAddPatch_Click(object sender, RoutedEventArgs e)
  361. {
  362. AddPatchDlg dialog = new AddPatchDlg()
  363. {
  364. Owner = Application.Current.MainWindow,
  365. WindowStartupLocation = WindowStartupLocation.CenterOwner
  366. };
  367. if(dialog.ShowDialog() == true)
  368. {
  369. TPatch patch = dialog.NewPatch;
  370. //获取VPatch
  371. PatchPage.InitDefaulValue(mConfigItem.PatchPageSize);
  372. bool blLoad = await LoadPatchItemList();
  373. if (blLoad && PatchItemList.Count > 0)
  374. {
  375. SelectedPatchItem = PatchItemList[0];
  376. dgPatch.ScrollIntoView(SelectedPatchItem);
  377. }
  378. }
  379. }
  380. private async void BtnDelPatch_Click(object sender, RoutedEventArgs e)
  381. {
  382. bool blDelte = await DeletePatchItem();
  383. }
  384. private async Task<bool> DeletePatchItem()
  385. {
  386. bool blDelete = false;
  387. if (SelectedPatchItem == null) return blDelete;
  388. // 弹出确认对话框
  389. MessageBoxResult result = MessageBox.Show(
  390. $"您确定要删除[{SelectedPatchItem.PatchName}]任务吗?\n此操作无法撤销。",
  391. "确认删除",
  392. MessageBoxButton.YesNo, // 提供“是”和“否”按钮
  393. MessageBoxImage.Warning // 使用警告图标
  394. );
  395. if (result != MessageBoxResult.Yes)
  396. {
  397. return blDelete;
  398. }
  399. //开始删除操作
  400. string titleInfo = "正在删除,请稍候...";
  401. WaitWindow waitWindow = new WaitWindow(titleInfo)
  402. {
  403. Owner = Application.Current.MainWindow,
  404. WindowStartupLocation = WindowStartupLocation.CenterOwner
  405. };
  406. waitWindow.Show();
  407. try
  408. {
  409. //执行异步删除逻辑
  410. bool deleteSuccess = false;
  411. await Task.Run(() =>
  412. {
  413. deleteSuccess = DBPatch.DeletePatchAndDetails(SelectedPatchItem.PatchId);
  414. //Task.Delay(200).Wait(); // 模拟延迟
  415. });
  416. if (deleteSuccess)
  417. {
  418. //await LoadPatchItemList();
  419. // 在 UI 线程上更新 ObservableCollection
  420. Application.Current.Dispatcher.Invoke(() =>
  421. {
  422. PatchItemList.Remove(SelectedPatchItem);
  423. SelectedPatchItem = null;
  424. TotalPatchRecords -= 1;
  425. });
  426. blDelete = true;
  427. }
  428. }
  429. catch (Exception ex)
  430. {
  431. MessageBox.Show(Application.Current.MainWindow, $"删除失败:{ex.Message}", "错误",
  432. MessageBoxButton.OK, MessageBoxImage.Error);
  433. }
  434. finally
  435. {
  436. //关闭等待窗口
  437. waitWindow.Close();
  438. }
  439. return blDelete;
  440. }
  441. private async void BtnRefresh_Click(object sender, RoutedEventArgs e)
  442. {
  443. PatchPage.InitDefaulValue();
  444. bool blLoad = await LoadPatchItemList();
  445. if(blLoad && PatchItemList.Count > 0)
  446. {
  447. dgPatch.ScrollIntoView(PatchItemList[0]);
  448. }
  449. }
  450. //批量识别
  451. private async void BtnStartTask_Click(object sender, RoutedEventArgs e)
  452. {
  453. bool blTask = await ucPatchGird.StartPatchTask();
  454. //更新目录内容
  455. if (blTask && SelectedPatchItem != null)
  456. {
  457. VPatch vPatch = null;
  458. await Task.Run(() =>
  459. {
  460. vPatch = DBPatch.GetVPatchById(SelectedPatchItem.PatchId);
  461. });
  462. if (vPatch != null)
  463. {
  464. //var NewPatchItem = new PatchItem(vPatch);
  465. foreach (var patchItem in PatchItemList)
  466. {
  467. if (patchItem.PatchId == vPatch.PatchId)
  468. {
  469. ObjectHelper.CopyMatchingFields(vPatch, patchItem);
  470. break;
  471. }
  472. }//foreach
  473. }//if vpatch!=null
  474. RefresUIPatchItem(SelectedPatchItem.PatchId);
  475. //刷新站点的统计信息
  476. ucStationGrid.RefreshItems();
  477. }//blTask
  478. }
  479. public async void RefresUIPatchItem(string patchId)
  480. {
  481. VPatch vPatch = null;
  482. await Task.Run(() =>
  483. {
  484. vPatch = DBPatch.GetVPatchById(patchId);
  485. });
  486. if (vPatch != null)
  487. {
  488. foreach (var patchItem in PatchItemList)
  489. {
  490. if (patchItem.PatchId == vPatch.PatchId)
  491. {
  492. ObjectHelper.CopyMatchingFields(vPatch, patchItem);
  493. break;
  494. }
  495. }//foreach
  496. }//if vpatch!=null
  497. }
  498. private void LogScrollTop_Click(object sender, RoutedEventArgs e)
  499. {
  500. LogRichTextBox.ScrollToHome();
  501. }
  502. private void LogScrollMiddle_Click(object sender, RoutedEventArgs e)
  503. {
  504. // 获取 LogRichTextBox 文档的总高度
  505. //double documentHeight = LogRichTextBox.Document.ContentEnd.GetPositionAtOffset(0).GetValue("VerticalOffset");
  506. //// 获取当前可视区域的高度
  507. //double viewportHeight = LogRichTextBox.ViewportHeight;
  508. //// 计算中间位置
  509. //double middleOffset = (documentHeight - viewportHeight) / 2;
  510. //// 滚动到中间位置
  511. //LogRichTextBox.ScrollToVerticalOffset(middleOffset);
  512. }
  513. private void LogScrollBottom_Click(object sender, RoutedEventArgs e)
  514. {
  515. LogRichTextBox.ScrollToEnd();
  516. }
  517. private void MiUpdatePatchname_Click(object sender, RoutedEventArgs e)
  518. {
  519. if (SelectedPatchItem == null) return;
  520. EditNameDlg editNameDlg = new EditNameDlg("任务", SelectedPatchItem.StandName)
  521. {
  522. Owner = Application.Current.MainWindow,
  523. WindowStartupLocation = WindowStartupLocation.CenterOwner
  524. };
  525. if (editNameDlg.ShowDialog() == true)
  526. {
  527. UpdateStandName(SelectedPatchItem, editNameDlg.EditName);
  528. }
  529. }
  530. private async void UpdateStandName(PatchItem patchItem, string newPatchName)
  531. {
  532. try
  533. {
  534. bool blUpdate = false;
  535. await Task.Run(() =>
  536. {
  537. blUpdate = DBPatch.UpdatePatchName(patchItem.PatchId, newPatchName);
  538. });
  539. if (blUpdate)
  540. {
  541. patchItem.StandName = newPatchName;
  542. }
  543. else
  544. {
  545. MessageBox.Show(Application.Current.MainWindow, $"修改任务名称失败。", "警告",
  546. MessageBoxButton.OK, MessageBoxImage.Warning);
  547. }
  548. }
  549. catch (Exception ex)
  550. {
  551. MessageBox.Show(Application.Current.MainWindow, $"修改模板名称:{ex.Message}错误", "错误",
  552. MessageBoxButton.OK, MessageBoxImage.Error);
  553. }
  554. }
  555. private async void MiDeletePatch_Click(object sender, RoutedEventArgs e)
  556. {
  557. bool blDelte = await DeletePatchItem();
  558. }
  559. private void BtnRefreshDetail_Click(object sender, RoutedEventArgs e)
  560. {
  561. //ucPatchGird.CurPatchItem = null;
  562. //ucPatchGird.CurPatchItem = SelectedPatchItem;
  563. ucPatchGird.ChangePatchItemOrFinType(null,null ,SelectedPatchFindType);
  564. ucPatchGird.ChangePatchItemOrFinType(SelectedPatchItem, SelectedStationItem,SelectedPatchFindType);
  565. }
  566. private void AiLogSave_Click(object sender, RoutedEventArgs e)
  567. {
  568. ////ucPatchGird.SelectedPatchDetailItem;
  569. //TextRange textRange = new TextRange(LogRichTextBox.Document.ContentStart, LogRichTextBox.Document.ContentEnd);
  570. ////return textRange.Text; // 提取纯文本
  571. //string aiLog = textRange.Text;
  572. if (ucPatchGird.SelectedPatchDetailItem == null) return;
  573. PatchDetailItem patchDetailItem = ucPatchGird.SelectedPatchDetailItem;
  574. string logPath = patchDetailItem.LogPath;
  575. ThisApp.ExportAiLog(logPath);
  576. }
  577. //控制左侧的显示和折叠
  578. private void BtnLeftCtl_Click(object sender, RoutedEventArgs e)
  579. {
  580. bool visiable = !LeftVisiable;
  581. ChangeLeftVisiable(visiable);
  582. }
  583. private void BtnRightCtl_Click(object sender, RoutedEventArgs e)
  584. {
  585. bool visiable = !RightVisiable;
  586. ChangeRightVisiable(visiable);
  587. }
  588. private void ChangeLeftVisiable(bool visiable)
  589. {
  590. LeftVisiable = visiable;
  591. colLeft.Width = new GridLength(visiable ? COLUMN_LEFT_WIDTH : 0);
  592. btnLeftCtl.Content = visiable ? "◀️" : "▶️";
  593. btnLeftCtl.ToolTip = visiable ? "点击隐藏左侧栏" : "点击显示左侧栏";
  594. }
  595. private void ChangeRightVisiable(bool visiable)
  596. {
  597. RightVisiable = visiable;
  598. colRight.Width = new GridLength(visiable ? COLUMN_RIGHT_WIDTH : 0);
  599. btnRightCtl.Content = visiable ? "▶️" : "◀️" ;
  600. btnRightCtl.ToolTip = visiable ? "点击隐藏右侧栏" : "点击显示右侧栏";
  601. }
  602. private void BtnStationFirstPage_Click(object sender, RoutedEventArgs e)
  603. {
  604. ucStationGrid.FirstPage();
  605. }
  606. private void BtnStationPrePage_Click(object sender, RoutedEventArgs e)
  607. {
  608. ucStationGrid.PrePage();
  609. }
  610. private void BtnStationNextPage_Click(object sender, RoutedEventArgs e)
  611. {
  612. ucStationGrid.NextPage();
  613. }
  614. private void BtnStationLastPage_Click(object sender, RoutedEventArgs e)
  615. {
  616. ucStationGrid.LastPage();
  617. }
  618. private void BtnStationSpeciPage_Click(object sender, RoutedEventArgs e)
  619. {
  620. try
  621. {
  622. int pageNumber = int.Parse(txtStationPageNumber.Text.ToString());
  623. ucStationGrid.SpeciPage(pageNumber);
  624. }
  625. catch
  626. {
  627. }
  628. }
  629. private void BtnQuery_Click(object sender, RoutedEventArgs e)
  630. {
  631. FindStationId = txtFindStationId.Text.Trim();
  632. ucStationGrid.ChangeFind(FindStationId,SelectedPatchItem.PatchId);
  633. Apply_Station_Title(SelectedStationItem);
  634. }
  635. private void BtnRefreshStation_Click(object sender, RoutedEventArgs e)
  636. {
  637. FindStationId = txtFindStationId.Text.Trim();
  638. ucStationGrid.ChangeFind(FindStationId, SelectedPatchItem.PatchId);
  639. //Apply_UCPatchDetail_Title(SelectedPatchItem);
  640. Apply_Station_Title(SelectedStationItem);
  641. }
  642. //----------------------------------------------------------------
  643. }
  644. public enum PatchFindType
  645. {
  646. ALL = 1, //所有数据
  647. RUN_YES = 2, //已运行识别的
  648. RUN_NO = 3, //未运行的
  649. RESULT_OK = 4, //结果正确的
  650. RESULT_ERROR = 5, //结果错误的
  651. RESULT_INVLIAD = 6, //结果无效
  652. ALL_NO_STAND_VALUE =7, //所有无标准值项
  653. RUN_YES_NO_STAND_VALUE = 8, //已运行的无标准值的项
  654. RUN_NO_NO_STAND_VALUE = 9, //未运行的无标准值的项
  655. HAVE_MEMO = 8 //有备注
  656. }
  657. //----------------------------------------------------------------------
  658. }