Files
29WxOrder/OrderSupportTicket/Views/OrderSupportTicketView.xaml.cs
T
2026-10-17 18:18:05 +08:00

95 lines
2.6 KiB
C#

using OrderSupportTicket.Models;
using OrderSupportTicket.Services;
using OrderSupportTicket.ViewModels;
using System.Windows.Controls;
namespace OrderSupportTicket.Views;
/// <summary>
/// 工单对话页面。页面生命周期只负责激活/停用 ViewModel,业务交互均在 ViewModel 中。
/// </summary>
public partial class OrderSupportTicketView : UserControl
{
private bool _active;
public OrderSupportTicketView()
: this(
new TicketApiService(),
new EventSourceTicketRealtimeService(),
TicketClientOptions.FromApplicationSettings())
{
}
public OrderSupportTicketView(
ITicketApiService api,
ITicketRealtimeService realtime,
TicketClientOptions options = null)
{
InitializeComponent();
options = new TicketClientOptions
{
UserName="18990991234",
AppIds = ["wx316b1291351558aa", "wx7999743c3d64c05c"],
Orders = [
new TicketOrderOption
{
Amount=109m,
AppId="wx316b1291351558aa",
GoodsName="梵客隆收腹内裤女新款高腰无痕磨毛暖融收小肚子提臀塑身平角裤",
OrderId="9000000000000000001",
OrderedAt=new DateTime(2020, 1, 1),
},
new TicketOrderOption
{
Amount=109m,
AppId="wx7999743c3d64c05c",
GoodsName="洁柔抽纸粉Face家用实惠装批发纸巾大包面纸餐巾纸抽整箱可湿水纸",
OrderId="9000000000000000002",
OrderedAt=new DateTime(2020, 1, 1),
}
]
};
ViewModel = new OrderSupportTicketViewModel(api, realtime, options);
DataContext = ViewModel;
Loaded += OnLoaded;
Unloaded += OnUnloaded;
}
/// <summary>
/// 当前页面对应的工单 ViewModel。
/// </summary>
public OrderSupportTicketViewModel ViewModel { get; }
/// <summary>
/// 宿主可在页面加载前注入账号、APPID 与本地订单数据。
/// </summary>
public void Configure(TicketClientOptions options)
{
ViewModel.Configure(options);
}
/// <summary>
/// 从订单页直接打开新工单草稿。
/// </summary>
public void OpenNewTicket(TicketOrderOption order)
{
ViewModel.OpenNewTicket(order);
}
private async void OnLoaded(object sender, System.Windows.RoutedEventArgs e)
{
if (_active)
return;
_active = true;
await ViewModel.InitializeAsync();
}
private async void OnUnloaded(object sender, System.Windows.RoutedEventArgs e)
{
if (!_active)
return;
_active = false;
await ViewModel.DeactivateAsync();
}
}