2025-07-26 11:20:03 +08:00
|
|
|
// 文件: DMS.WPF/ViewModels/SplashViewModel.cs
|
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
using DMS.Application.Interfaces;
|
|
|
|
|
using DMS.WPF.Services;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using DMS.Application.Services;
|
2025-07-26 12:19:05 +08:00
|
|
|
using DMS.WPF.Views;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
2025-07-26 11:20:03 +08:00
|
|
|
|
|
|
|
|
namespace DMS.WPF.ViewModels;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 启动加载窗口的ViewModel。
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class SplashViewModel : ObservableObject
|
|
|
|
|
{
|
|
|
|
|
private readonly IServiceProvider _serviceProvider;
|
|
|
|
|
private readonly IInitializeService _initializeService;
|
|
|
|
|
|
|
|
|
|
[ObservableProperty]
|
|
|
|
|
private string _loadingMessage = "正在加载...";
|
|
|
|
|
|
|
|
|
|
public SplashViewModel(IServiceProvider serviceProvider, IInitializeService initializeService)
|
|
|
|
|
{
|
|
|
|
|
_serviceProvider = serviceProvider;
|
|
|
|
|
_initializeService = initializeService;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 开始执行初始化任务。
|
|
|
|
|
/// </summary>
|
2025-07-26 11:51:09 +08:00
|
|
|
public async Task<bool> InitializeAsync()
|
2025-07-26 11:20:03 +08:00
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
LoadingMessage = "正在初始化数据库...";
|
|
|
|
|
_initializeService.InitializeTables();
|
|
|
|
|
|
|
|
|
|
LoadingMessage = "正在加载系统配置...";
|
|
|
|
|
// 可以在这里添加加载配置的逻辑
|
2025-07-26 12:19:05 +08:00
|
|
|
await Task.Delay(500); // 模拟耗时
|
2025-07-26 11:20:03 +08:00
|
|
|
|
|
|
|
|
LoadingMessage = "正在连接后台服务...";
|
|
|
|
|
// 可以在这里添加连接服务的逻辑
|
2025-07-26 12:19:05 +08:00
|
|
|
await Task.Delay(500); // 模拟耗时
|
2025-07-26 11:20:03 +08:00
|
|
|
|
|
|
|
|
LoadingMessage = "加载完成,正在启动主界面...";
|
2025-07-26 12:19:05 +08:00
|
|
|
await Task.Delay(500);
|
2025-07-26 11:20:03 +08:00
|
|
|
|
|
|
|
|
// 初始化完成,显示主窗口
|
2025-07-26 12:19:05 +08:00
|
|
|
var mainView = App.Current.Services.GetRequiredService<MainView>();
|
|
|
|
|
// 将 MainView 设置为新的主窗口
|
|
|
|
|
App.Current.MainWindow = mainView;
|
|
|
|
|
mainView.Show();
|
2025-07-26 11:51:09 +08:00
|
|
|
return true;
|
2025-07-26 11:20:03 +08:00
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
// 处理初始化过程中的异常
|
|
|
|
|
LoadingMessage = $"初始化失败: {ex.Message}";
|
2025-07-26 12:19:05 +08:00
|
|
|
Console.WriteLine($"初始化失败: {ex.Message}");
|
2025-07-26 11:20:03 +08:00
|
|
|
// 在此可以记录日志或显示错误对话框
|
2025-07-26 11:51:09 +08:00
|
|
|
return false;
|
2025-07-26 11:20:03 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|