You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.8 KiB
C#

using Prism.Commands;
using Prism.Events;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Txgy.EWS.Client.Common.MessageEvents;
using Txgy.EWS.Client.IBLL;
using Txgy.EWS.Client.Models;
namespace Txgy.EWS.Client.SysModule.ViewModels
{
public class AddFileDialogViewModel : IDialogAware
{
public string Title => "系统更新文件上传";
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog() => true;
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
// 接收传递的参数
}
public ObservableCollection<FileInfoModel> FileList { get; set; } = new ObservableCollection<FileInfoModel>();
public ICommand SelectFileCommand { get; set; }
public ICommand UploadCommand { get; set; }
public AddFileDialogViewModel(IUpgradeFileBLL upgradeFileBLL, IEventAggregator ea)
{
SelectFileCommand = new DelegateCommand(new Action(() =>
{
Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog();
dialog.Multiselect = true;
if (dialog.ShowDialog() == true)
{
FileList.Clear();
if (dialog.FileNames != null && dialog.FileNames.Length > 0)
{
for (int i = 0; i < dialog.FileNames.Length; i++)
{
FileList.Add(new FileInfoModel
{
Index = (i + 1).ToString("00"),
FullPath = dialog.FileNames[i],
FileName = new FileInfo(dialog.FileNames[i]).Name,
State = "待上传"
});
}
}
}
}));
UploadCommand = new DelegateCommand(new Action(async () =>
{
if (this.FileList.Count > 0)
{
foreach (var item in this.FileList)
{
if (item.State != "完成")
{
var state = await upgradeFileBLL.UploadFile(item.FileName, item.FullPath);
if (state)
item.State = "完成";
}
};
// 通知主窗口刷新
ea.GetEvent<ReLoadEvent>().Publish();
}
}));
}
}
}