UnifiedConfigViewModel.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. using ivf_tl_Operate.Helpers;
  3. namespace ivf_tl_Operate.ViewModel
  4. {
  5. /// <summary>
  6. /// M5-02-4:统一配置页 ViewModel。分组展示并可编辑【本地层】配置项。
  7. /// - 凭据项(passWord/engineerPwd)经 CryptoHelper 加解密,界面以明文编辑、落盘密文。
  8. /// - 数据库层项(对焦时间/帧率/抠图数等)维持 SettingPageView 的 TLSetting 路径,本页不重复写入口(00-需求总览.md §8)。
  9. /// - 换气/CCD 类业务键现状本地层、归属 [D8] 待确认,本页只读展示其当前值。
  10. /// 保存逻辑见 <see cref="SaveAll"/>;加载见 <see cref="Load"/>。
  11. /// [M7] 落盘/重启生效需运行环境验证(本地不可构建/运行)。
  12. /// </summary>
  13. public partial class UnifiedConfigViewModel : ObservableObject
  14. {
  15. // —— 连接(本地层) ——
  16. [ObservableProperty] private string urlIp;
  17. [ObservableProperty] private string urlPort;
  18. [ObservableProperty] private string mqttIp;
  19. [ObservableProperty] private string mqttPort;
  20. [ObservableProperty] private string kfkaIP;
  21. [ObservableProperty] private string kfkaPort;
  22. // —— 本机(本地层) ——
  23. [ObservableProperty] private string cacheDisk;
  24. [ObservableProperty] private string tlNum;
  25. [ObservableProperty] private string language;
  26. [ObservableProperty] private string houseEnabled;
  27. // —— 凭据(本地层,脱敏/加密) ——
  28. [ObservableProperty] private string userName;
  29. [ObservableProperty] private string passWord; // 编辑明文 → 保存加密
  30. [ObservableProperty] private string engineerPwd; // 编辑明文 → 保存加密(治理 tl13579)
  31. public UnifiedConfigViewModel()
  32. {
  33. Load();
  34. }
  35. /// <summary>从 App.config 读取当前值(凭据解密)。</summary>
  36. public void Load()
  37. {
  38. UrlIp = AppConfigHelper.GetString("urlIp");
  39. UrlPort = AppConfigHelper.GetString("urlPort");
  40. MqttIp = AppConfigHelper.GetString("mqttIp");
  41. MqttPort = AppConfigHelper.GetString("mqttPort");
  42. KfkaIP = AppConfigHelper.GetString("kfkaIP");
  43. KfkaPort = AppConfigHelper.GetString("kfkaPort");
  44. CacheDisk = AppConfigHelper.GetString("cacheDisk");
  45. TlNum = AppConfigHelper.GetString("tlNum");
  46. Language = AppConfigHelper.GetString("Language");
  47. HouseEnabled = AppConfigHelper.GetString("houseEnabled");
  48. UserName = AppConfigHelper.GetString("userName");
  49. PassWord = AppConfigHelper.GetDecrypted("passWord");
  50. EngineerPwd = AppConfigHelper.GetEngineerPwd();
  51. }
  52. /// <summary>把界面编辑值写回 App.config(凭据加密)。返回是否成功(异常已在 Helper 内吞掉,恒 true 占位)。</summary>
  53. public bool SaveAll()
  54. {
  55. AppConfigHelper.Save("urlIp", UrlIp);
  56. AppConfigHelper.Save("urlPort", UrlPort);
  57. AppConfigHelper.Save("mqttIp", MqttIp);
  58. AppConfigHelper.Save("mqttPort", MqttPort);
  59. AppConfigHelper.Save("kfkaIP", KfkaIP);
  60. AppConfigHelper.Save("kfkaPort", KfkaPort);
  61. AppConfigHelper.Save("cacheDisk", CacheDisk);
  62. AppConfigHelper.Save("tlNum", TlNum);
  63. AppConfigHelper.Save("Language", Language);
  64. AppConfigHelper.Save("houseEnabled", HouseEnabled);
  65. AppConfigHelper.Save("userName", UserName);
  66. AppConfigHelper.SaveEncrypted("passWord", PassWord);
  67. AppConfigHelper.SaveEncrypted(AppConfigHelper.EngineerPwdKey, EngineerPwd);
  68. return true;
  69. }
  70. }
  71. }