| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using CommunityToolkit.Mvvm.ComponentModel;
- using ivf_tl_Operate.Helpers;
- namespace ivf_tl_Operate.ViewModel
- {
- /// <summary>
- /// M5-02-4:统一配置页 ViewModel。分组展示并可编辑【本地层】配置项。
- /// - 凭据项(passWord/engineerPwd)经 CryptoHelper 加解密,界面以明文编辑、落盘密文。
- /// - 数据库层项(对焦时间/帧率/抠图数等)维持 SettingPageView 的 TLSetting 路径,本页不重复写入口(00-需求总览.md §8)。
- /// - 换气/CCD 类业务键现状本地层、归属 [D8] 待确认,本页只读展示其当前值。
- /// 保存逻辑见 <see cref="SaveAll"/>;加载见 <see cref="Load"/>。
- /// [M7] 落盘/重启生效需运行环境验证(本地不可构建/运行)。
- /// </summary>
- public partial class UnifiedConfigViewModel : ObservableObject
- {
- // —— 连接(本地层) ——
- [ObservableProperty] private string urlIp;
- [ObservableProperty] private string urlPort;
- [ObservableProperty] private string mqttIp;
- [ObservableProperty] private string mqttPort;
- [ObservableProperty] private string kfkaIP;
- [ObservableProperty] private string kfkaPort;
- // —— 本机(本地层) ——
- [ObservableProperty] private string cacheDisk;
- [ObservableProperty] private string tlNum;
- [ObservableProperty] private string language;
- [ObservableProperty] private string houseEnabled;
- // —— 凭据(本地层,脱敏/加密) ——
- [ObservableProperty] private string userName;
- [ObservableProperty] private string passWord; // 编辑明文 → 保存加密
- [ObservableProperty] private string engineerPwd; // 编辑明文 → 保存加密(治理 tl13579)
- public UnifiedConfigViewModel()
- {
- Load();
- }
- /// <summary>从 App.config 读取当前值(凭据解密)。</summary>
- public void Load()
- {
- UrlIp = AppConfigHelper.GetString("urlIp");
- UrlPort = AppConfigHelper.GetString("urlPort");
- MqttIp = AppConfigHelper.GetString("mqttIp");
- MqttPort = AppConfigHelper.GetString("mqttPort");
- KfkaIP = AppConfigHelper.GetString("kfkaIP");
- KfkaPort = AppConfigHelper.GetString("kfkaPort");
- CacheDisk = AppConfigHelper.GetString("cacheDisk");
- TlNum = AppConfigHelper.GetString("tlNum");
- Language = AppConfigHelper.GetString("Language");
- HouseEnabled = AppConfigHelper.GetString("houseEnabled");
- UserName = AppConfigHelper.GetString("userName");
- PassWord = AppConfigHelper.GetDecrypted("passWord");
- EngineerPwd = AppConfigHelper.GetEngineerPwd();
- }
- /// <summary>把界面编辑值写回 App.config(凭据加密)。返回是否成功(异常已在 Helper 内吞掉,恒 true 占位)。</summary>
- public bool SaveAll()
- {
- // M8-G3-1:保存统一配置=写 App.config 并加密落盘凭据,属真实业务写操作,需记操作日志(凭据不入 input)。
- Aivfo.OperationLog.OperationLogger.Run("统一配置", "保存统一配置", () =>
- {
- AppConfigHelper.Save("urlIp", UrlIp);
- AppConfigHelper.Save("urlPort", UrlPort);
- AppConfigHelper.Save("mqttIp", MqttIp);
- AppConfigHelper.Save("mqttPort", MqttPort);
- AppConfigHelper.Save("kfkaIP", KfkaIP);
- AppConfigHelper.Save("kfkaPort", KfkaPort);
- AppConfigHelper.Save("cacheDisk", CacheDisk);
- AppConfigHelper.Save("tlNum", TlNum);
- AppConfigHelper.Save("Language", Language);
- AppConfigHelper.Save("houseEnabled", HouseEnabled);
- AppConfigHelper.Save("userName", UserName);
- AppConfigHelper.SaveEncrypted("passWord", PassWord);
- AppConfigHelper.SaveEncrypted(AppConfigHelper.EngineerPwdKey, EngineerPwd);
- }, input: new { UrlIp, UrlPort, MqttIp, MqttPort, KfkaIP, KfkaPort, CacheDisk, TlNum, Language, HouseEnabled, UserName });
- return true;
- }
- }
- }
|