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.

112 lines
4.0 KiB
C#

using Newtonsoft.Json;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using StartServerWPF.Models;
using StartServerWPF.Modules.Main.Models;
using System;
using System.Collections.Generic;
8 months ago
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace StartServerWPF.Modules.Main.ViewModels
{
8 months ago
public class AddWorkAreaDialogViewModel : BindableBase, IDialogAware
{
8 months ago
public AddWorkAreaDialogViewModel()
{
}
8 months ago
private string _title = "添加工区";
public string Title => _title;
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed() { }
public void OnDialogOpened(IDialogParameters parameters)
{
var _type = parameters.GetValue<int>("type");
}
8 months ago
private string _workAreaName;
public string WorkAreaName
{
8 months ago
get => _workAreaName;
set { SetProperty(ref _workAreaName, value); }
}
8 months ago
private string _workAreaPath;
public string WorkAreaPath
{
8 months ago
get => _workAreaPath;
set { SetProperty(ref _workAreaPath, value); }
}
public DelegateCommand FilePathSaveCommand=> new(()=>
{
System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
fbd.ShowNewFolderButton = true;
8 months ago
if(string.IsNullOrEmpty(WorkAreaName))
{
8 months ago
MessageBox.Show("工区名称不能为空");
return;
}
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
8 months ago
string path = Path.Combine(fbd.SelectedPath, WorkAreaName);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
WorkAreaPath = path;
}
});
public ICommand ConfirmCommand
{
get => new DelegateCommand(() =>
{
// 确认操作
// 数据校验关键字段不能为空、年龄做数字区间的校验、做UserName的唯一检查自定义特性检查
8 months ago
if (string.IsNullOrEmpty(WorkAreaName) || string.IsNullOrEmpty(WorkAreaPath))
{
8 months ago
MessageBox.Show("工区名称和目录不能为空", "提示", MessageBoxButton.OK);
return;
}
if (MessageBox.Show("确认添加?", "提示", MessageBoxButton.OKCancel,
MessageBoxImage.Exclamation) == MessageBoxResult.OK)
{
string str = File.ReadAllText(Path.Combine(JsonParser.workareaPath, "Workarea.json"));
WorkareaModel workareaModel = JsonConvert.DeserializeObject<WorkareaModel>(str);
8 months ago
var dialog = new DialogResult(ButtonResult.OK);
Workareas workareas = new Workareas();
workareas.workareaname = WorkAreaName;
workareas.filepath = WorkAreaPath;
workareaModel.savepath = WorkAreaPath;
workareaModel.workareaname = WorkAreaName;
workareaModel.apmModel.station = string.Empty;
workareaModel.apmModel.ttime[0].ttime2d = string.Empty;
//生成工区默认配置文件
File.WriteAllText(Path.Combine(WorkAreaPath, Path.GetFileName(WorkAreaPath) + ".json"), JsonConvert.SerializeObject(workareaModel, Formatting.Indented));
8 months ago
dialog.Parameters.Add("param1", workareas);
RequestClose?.Invoke( dialog);
}
});
}
public ICommand CancelCommand
{
get => new DelegateCommand(() =>
{
RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
});
}
}
}