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

162 lines
4.6 KiB

using CefSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Security.Policy;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using .cefhelper;
using .Models;
using .UserControls;
using .ViewModels;
namespace .Windows
{
/// <summary>
/// CompetingWindow.xaml 的交互逻辑
/// </summary>
public partial class TaoBaoSearchWindow : Window
{
public ExtChromiumBrowser web;
public TaoBaoSearchWindow()
{
InitializeComponent();
this.DataContext = new TaoBaoSearchWindowViewModel();
web = new ExtChromiumBrowser("nacollector://home/tbSearch")
{
BrowserSettings =
{
DefaultEncoding = "UTF-8",
Plugins = CefState.Enabled,
//关于跨域限制
//WebSecurity = CefState.Disabled,
ApplicationCache = CefState.Enabled,
LocalStorage = CefState.Enabled,
}
};
grid.Children.Add(web);
web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
var cjs = new TaoBaoSaerchAsyncJS();
cjs.Brower = this;
web.JavascriptObjectRepository.Register("hyCoreModel", cjs, BindingOptions.DefaultBinder);
web.StartNewWindow += Web_StartNewWindow;
web.TitleChanged += Web_TitleChanged;
this.KeyUp += BrowerControl_KeyUp;
}
private void BrowerControl_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.F12)
{
web.ShowDevTools();
}
}
private void Web_TitleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
Application.Current.Dispatcher.Invoke(() =>
{
this.Title = e.NewValue.ToString();
});
}
private void Web_StartNewWindow(object sender, NewWindowEventArgs e)
{
//
//WpfNoticeMsg.NoticeMessage.Show(e.Url);
BrowerHelper.OpenUrl(e.Url);
//MainWindow.Main.brower.NewTab(e.Url);
//web.Load(e.Url);
}
/// <summary>
/// 执行js
/// </summary>
/// <param name="js"></param>
/// <returns></returns>
public (bool isOk, object result) DoJavaScript(string js, bool needReplaceLine = true)
{
if (needReplaceLine)
{
js = js.Replace("\n", "").Replace("\r\n", "").Replace(System.Environment.NewLine, "").Replace("\r", "");
}
Task<JavascriptResponse> task = null;
Application.Current.Dispatcher.Invoke(() =>
{
task = web.EvaluateScriptAsPromiseAsync(js);
});
var result = task.Result;
//判断是否加载完成
return (result.Success, result.Result);
}
private void btn_save_Click(object sender, RoutedEventArgs e)
{
DoJavaScript("window.startFilterDatas();");
}
}
public class TaoBaoSaerchAsyncJS
{
public TaoBaoSearchWindow Brower { get; set; }
public List<SearchItemModelExt> getData()
{
return TaoBaoSearchWindowViewModel.Instance.ItemList.ToList();
}
public bool saveData()
{
return ApiHelper.UpdateItemCompeting(CompetingWindowViewModel.Instance.ItemList.ToList(), CompetingWindowViewModel.Instance.Item.Id);
}
public bool? editItem(string itemJson)
{
var item = Newtonsoft.Json.JsonConvert.DeserializeObject<TeamCompetingItem>(itemJson);
return ItemDetailWindow.Show(Brower, item);
}
public bool deleteItem(string itemJson)
{
var item = Newtonsoft.Json.JsonConvert.DeserializeObject<TeamCompetingItem>(itemJson);
var model= CompetingWindowViewModel.Instance.ItemList.FirstOrDefault(c => c.ItemUrl == item.ItemUrl || c.Sku == item.Sku);
if (model != null)
{
CompetingWindowViewModel.Instance.ItemList.Remove(model);
}
return true;
}
}
}