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
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;
|
|
}
|
|
}
|
|
}
|
|
|