Browse Source

对接到客户端

master
feng 2 years ago
parent
commit
0624e884e0
  1. 6
      src/Coldairarrow.Entity/DTO/TeamitemDto.cs
  2. 2
      客户端/齐越慧眼/齐越慧眼/MainWindow.xaml
  3. 185
      客户端/齐越慧眼/齐越慧眼/Models/CompetingModel.cs
  4. 15
      客户端/齐越慧眼/齐越慧眼/UserControls/ItemControl.xaml.cs
  5. 34
      客户端/齐越慧眼/齐越慧眼/ViewModels/CompetingWindowViewModel.cs
  6. 42
      客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml
  7. 555
      客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml.cs
  8. 11
      客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml.cs
  9. 19
      客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs
  10. 17
      客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/competing/Index.vue
  11. 30
      客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue
  12. 1
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.c6957eae.css
  13. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.css
  14. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/index.html
  15. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js
  16. 2
      客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js.map
  17. 4
      客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

6
src/Coldairarrow.Entity/DTO/TeamitemDto.cs

@ -174,5 +174,11 @@ namespace Coldairarrow.Entity.DTO
/// 平台
/// </summary>
public int Platform { get; set; }
/// <summary>
/// 商品Spu
/// </summary>
public string Spu { get; set; }
public string Sku { get; set; }
}
}

2
客户端/齐越慧眼/齐越慧眼/MainWindow.xaml

@ -12,7 +12,7 @@
ActiveGlowColor="{DynamicResource PrimaryColor}"
Height="780"
Title="慧眼 V1.0.1.9"
Width="1468" Icon="/icon.ico"
Width="1768" Icon="/icon.ico"
>
<Border Padding="0 10" Background="#EEEEEE">
<hc:TabControl IsAnimationEnabled="True" IsTabFillEnabled="False" TabItemWidth="150" Name="tab" SelectionChanged="tab_SelectionChanged">

185
客户端/齐越慧眼/齐越慧眼/Models/CompetingModel.cs

@ -0,0 +1,185 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace .Models
{
public class TeamItem
{
public String Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人Id
/// </summary>
public String CreatorId { get; set; }
/// <summary>
/// 否已删除
/// </summary>
public Boolean Deleted { get; set; }
/// <summary>
/// 商品表的ID
/// </summary>
public String ItemId { get; set; }
/// <summary>
/// 宝贝标题
/// </summary>
public String Title { get; set; }
/// <summary>
/// 宝贝价格
/// </summary>
public Decimal? Price { get; set; }
/// <summary>
/// 收货人数
/// </summary>
public string Sales { get; set; }
/// <summary>
/// 商品图片
/// </summary>
public String ItemImg { get; set; }
/// <summary>
/// 添加人
/// </summary>
public String UserId { get; set; }
/// <summary>
/// 团队Id
/// </summary>
public String TeamId { get; set; }
/// <summary>
/// 对标商品标题
/// </summary>
public String RivalTitle { get; set; }
/// <summary>
/// 对标商品价格
/// </summary>
public Decimal? RivalPrice { get; set; }
/// <summary>
/// 对标收货人数
/// </summary>
public String RivalSales { get; set; }
/// <summary>
/// 对标商品图片
/// </summary>
public String RivalImg { get; set; }
/// <summary>
/// 对标商品ID
/// </summary>
public String RivalGoodsId { get; set; }
/// <summary>
/// 状态
/// </summary>
public Int32? State { get; set; }
/// <summary>
/// 扩展信息
/// </summary>
public String ExtensionJson { get; set; }
/// <summary>
/// 竞品列表Json
/// </summary>
public string CompetingItemJson { get; set; }
/// <summary>
/// 对标商品评价数量
/// </summary>
public string RivalPLCount { get; set; }
/// <summary>
/// 接比价任务的用户ID
/// </summary>
public string PriceTaskUserId { get; set; }
/// <summary>
/// 品类词ID
/// </summary>
public string CatId { get; set; }
/// <summary>
/// 是否合格
/// </summary>
public bool? IsQualified { get; set; }
/// <summary>
/// 完成时间
/// </summary>
public DateTime? UpdateDate { get; set; }
/// <summary>
/// 比价发布日期
/// </summary>
public DateTime? PriceTaskCreateDate { get; set; }
}
/// <summary>
/// 竞品信息
/// </summary>
public class TeamCompetingItem
{
/// <summary>
/// 图片地址
/// </summary>
public string ImgUrl { get; set; }
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 价格
/// </summary>
public string Price { get; set; }
/// <summary>
/// 评价数量
/// </summary>
public string CommentCount { get; set; }
/// <summary>
/// 竞品链接
/// </summary>
public string ItemUrl { get; set; }
/// <summary>
/// 平台
/// </summary>
public int Platform { get; set; }
public string Spu { get; set; }
private string _Sku;
public string Sku
{
get
{
if(string.IsNullOrEmpty(_Sku))
_Sku= Regex.Match(ImgUrl, @"item\.jd\.com/(.*?)\.html").Groups[1].Value;
return _Sku;
}
set {
_Sku = value;
}
}
}
}

15
客户端/齐越慧眼/齐越慧眼/UserControls/ItemControl.xaml.cs

@ -19,6 +19,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using .cefhelper;
using .Models;
namespace .UserControls
{
@ -105,6 +106,20 @@ namespace 齐越慧眼.UserControls
public class ItemsAsyncJS
{
public bool? onShowWindow(string itemJson,string type)
{
var item = Newtonsoft.Json.JsonConvert.DeserializeObject<TeamItem>(itemJson);
if(type== "0") {
bool? result = false;
MainWindow.Main.Dispatcher.Invoke(() =>
{
Windows.CompetingWindow window = new Windows.CompetingWindow(item);
result= window.ShowDialog();
});
return result;
}
return false;
}
public string getToken()
{

34
客户端/齐越慧眼/齐越慧眼/ViewModels/CompetingWindowViewModel.cs

@ -0,0 +1,34 @@
using GalaSoft.MvvmLight;
using System;
using System.Collections.Generic;
using System.Text;
using .Models;
namespace .ViewModels
{
public class CompetingWindowViewModel:ViewModelBase
{
public static CompetingWindowViewModel Instance { get; private set;}
/// <summary>
/// 当前操作对象
/// </summary>
TeamItem Item { get; set; }
public CompetingWindowViewModel(TeamItem item)
{
_ItemList = new System.Collections.ObjectModel.ObservableCollection<TeamCompetingItem>();
Item = item;
Instance = this;
}
private System.Collections.ObjectModel.ObservableCollection<TeamCompetingItem> _ItemList;
public System.Collections.ObjectModel.ObservableCollection<TeamCompetingItem> ItemList
{
get { return _ItemList; }
set { Set(ref _ItemList, value); }
}
}
}

42
客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml

@ -5,8 +5,44 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:齐越慧眼.Windows"
mc:Ignorable="d"
Title="CompetingWindow" Height="450" Width="800">
<Grid>
</Grid>
Title="CompetingWindow" Height="768" Width="1280">
<DockPanel Margin="0 10 0 0">
<DockPanel DockPanel.Dock="Top" >
<Button Content="返回" Margin="0 0 10 0" Name="back" Click="back_Click"></Button>
<TextBox x:Name="txtUrl" Keyboard.KeyUp="txtUrl_KeyUp"></TextBox>
</DockPanel>
<Border DockPanel.Dock="Bottom" Height="70" Background="White" Padding="0 9 0 0">
<Border.Effect>
<DropShadowEffect x:Name="OG" BlurRadius="11" Color="Black" Direction="50" Opacity="0.9" RenderingBias="Performance" ShadowDepth="1">
<Storyboard.TargetProperty>
BlurRadius
</Storyboard.TargetProperty>
</DropShadowEffect>
</Border.Effect>
<Grid Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10 0 0 0">
<TextBlock Text="已选" FontSize="18" Foreground="#333333"></TextBlock>
<TextBlock Text="{Binding ItemList.Count}" Margin="5 0 0 0" FontSize="18" Foreground="#333333"></TextBlock>
<TextBlock Text="/20" Margin="5 0 0 0" FontSize="18" Foreground="#333333"></TextBlock>
<TextBlock Text="个竞品" Margin="5 0 0 0" FontSize="18" Foreground="#333333"></TextBlock>
</StackPanel>
<Button Grid.Column="1" Style="{StaticResource ButtonPrimary}" Content="下一步" Height="61" Width="119" HorizontalAlignment="Right" Cursor="Hand" Background="#8080ff" FontSize="13" Foreground="White">
<Button.Effect>
<DropShadowEffect ShadowDepth="-4" BlurRadius="5" Color="LightGray" />
</Button.Effect>
</Button>
</Grid>
</Border>
<Grid x:Name="grid" DockPanel.Dock="Bottom" Margin="0 10 0 0">
</Grid>
</DockPanel>
</Window>

555
客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml.cs

@ -1,6 +1,13 @@
using System;
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;
@ -9,6 +16,10 @@ 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
{
@ -17,9 +28,549 @@ namespace 齐越慧眼.Windows
/// </summary>
public partial class CompetingWindow : Window
{
public CompetingWindow()
public ExtChromiumBrowser web;
public CompetingWindow(TeamItem item)
{
InitializeComponent();
this.DataContext = new CompetingWindowViewModel(item);
web = new ExtChromiumBrowser($"https://search.jd.com/Search?keyword={item.Title}")
{
BrowserSettings =
{
DefaultEncoding = "UTF-8",
Plugins = CefState.Enabled,
//关于跨域限制
//WebSecurity = CefState.Disabled,
ApplicationCache = CefState.Enabled,
LocalStorage = CefState.Enabled,
}
};
MyResourceRequestHandlerFactory myResourceRequestHandlerFactory = new MyResourceRequestHandlerFactory(this);
myResourceRequestHandlerFactory.Handlers.TryAdd("test", null);
web.ResourceRequestHandlerFactory = myResourceRequestHandlerFactory;
grid.Children.Add(web);
Loaded += BrowerControl_Loaded;
web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
var cjs = new CompetingAsyncJS();
cjs.Brower = this;
web.JavascriptObjectRepository.Register("hyCoreModel", cjs, BindingOptions.DefaultBinder);
web.StartNewWindow += Web_StartNewWindow;
web.TitleChanged += Web_TitleChanged;
web.AddressChanged += Web_AddressChanged;
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_AddressChanged(object sender, DependencyPropertyChangedEventArgs e)
{
Application.Current.Dispatcher.Invoke(() =>
{
txtUrl.Text = e.NewValue.ToString();
});
}
private void Web_TitleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
Application.Current.Dispatcher.Invoke(() =>
{
this.Title = e.NewValue.ToString();
});
}
int nowPatlom = 0;
public void OnUrlEnd(string url)
{
if (url.Contains("s_new.php"))
{
Task.Factory.StartNew(() =>
{
nowPatlom = 1;
lastUrl = "search.jd.com";
DoWork();
});
}
}
private void Web_StartNewWindow(object sender, NewWindowEventArgs e)
{
var match = Regex.Match(e.Url, @"item\.jd\.com/(.*?)\.html");
if (match.Success)
{
Thread t = new Thread(() =>
{
//判断是否添加成功
if (Windows.ItemDetailWindow.Show(e.Url) == true)
{
WpfNoticeMsg.NoticeMessage.Show("添加成功!");
}
});
t.IsBackground = true;
t.Start();
return;
}
//
//WpfNoticeMsg.NoticeMessage.Show(e.Url);
BrowerHelper.OpenUrl(e.Url);
//MainWindow.Main.brower.NewTab(e.Url);
//web.Load(e.Url);
}
private void BrowerControl_Loaded(object sender, RoutedEventArgs e)
{
Thread t = new Thread(() =>
{
IWebBrowser webBrowser = null;
Application.Current.Dispatcher.Invoke(() =>
{
webBrowser = web.WebBrowser;
});
while (webBrowser == null)
{
Thread.Sleep(100);
Application.Current.Dispatcher.Invoke(() =>
{
webBrowser = web.WebBrowser;
});
}
Application.Current.Dispatcher.Invoke(() =>
{
web.WebBrowser.LoadingStateChanged += WebBrowser_LoadingStateChanged;
});
});
t.Start();
}
private string lastUrl = string.Empty;
private void WebBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
if (lastUrl != e.Browser.MainFrame.Url)
{
lastUrl = e.Browser.MainFrame.Url;
//开始单页查询
if (lastUrl.StartsWith("https://s.taobao.com/search") || lastUrl.StartsWith("https://search.jd.com/") || lastUrl.StartsWith("https://s.1688.com/selloffer/offer_search.htm") || lastUrl.StartsWith("https://mobile.yangkeduo.com/search_result.html?search_key"))
{
if (lastUrl.StartsWith("https://s.taobao.com/search"))
{
nowPatlom = 0;
}
if (lastUrl.StartsWith("https://search.jd.com/"))
{
nowPatlom = 1;
}
if (lastUrl.StartsWith("https://s.1688.com/"))
{
nowPatlom = 2;
}
if (lastUrl.StartsWith("https://mobile.yangkeduo.com/search_result.html?search_key"))
{
nowPatlom = 3;
}
StartPage();
}
}
}
object doWorkObj = new object();
private void StartPage()
{
Thread t = new Thread(() =>
{
lock (doWorkObj)
{
if (string.IsNullOrEmpty(lastUrl))
return;
DoWork();
}
});
t.Start();
}
object lockWork = new object();
private void DoWork()
{
lock (lockWork)
{
while (true)
{
if (string.IsNullOrEmpty(lastUrl))
break;
Task<JavascriptResponse> task = null;
Application.Current.Dispatcher.Invoke(() =>
{
task = web.EvaluateScriptAsPromiseAsync("return $(document.body).html();");
});
var result = task.Result;
//判断是否加载完成
if (result.Success)
{
AddCss();
AddJDOptionDiv();
CheckJDPageItem();
break;
}
Thread.Sleep(100);
}
}
}
/// <summary>
/// 检测页面商品
/// </summary>
/// <returns></returns>
private void CheckJDPageItem()
{
var res = DoJavaScript(@"var ids=[]; $('div#J_goodsList li').each(function(){ids.push($(this).attr(""data-spu""))});return ids.filter(c=>c!=undefined&&c!="""");");
//页面的spu列表
List<string> itemIds = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(Newtonsoft.Json.JsonConvert.SerializeObject(res.result));
//已经添加的spu
var result = CompetingWindowViewModel.Instance.ItemList.Where(d => itemIds.Contains(d.Spu)).ToList();
foreach (var item in result)
{
////判断是否团队过滤
//if (item.IsFilter)
//{
// DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.myitemState').addClass(""falseBg"")");
// DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateGraydiv').addClass(""divshow"")");
//}
//if (item.IsCompeting)
//{
//<div style=""width:20%;height:20%"" class=""bgYellow"">竞</div>
//if ((int)DoJavaScript(@$"return $($('div#J_goodsList li[data-sku=""{item.Sku}""]')).find('.stateYellow').length").result <= 0)
//{
// DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.Sku}""]')).find('.myitemState').prepend('<div style=""width:20%;height:20%"" class=""stateYellow"">竞</div>')");
//}
//DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.Sku}""]')).find('.stateGraydiv').addClass(""divshow"")");
//}
//if (item.IsScreening)
//{
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.Sku}""]')).find('.myitemState').addClass(""trueBg"")");
DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.Sku}""]')).find('.stateGraydiv').addClass(""divshow"")");
//}
//if (item.IsAdded)
//{
// DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.myitemState').addClass(""popBg"")");
// DoJavaScript($@"$($('div#J_goodsList li[data-sku=""{item.GoodsId}""]')).find('.stateGraydiv').addClass(""divshow"")");
//}
}
}
/// <summary>
/// 添加操作面板
/// </summary>
/// <returns></returns>
private bool AddJDOptionDiv()
{
///添加js事件
DoJavaScript(@"
window.optClick= function (ele,type){
var itemid= $(ele).parent().parent().parent().parent().attr(""data-sku"");
var price=$(ele).parent().parent().parent().parent().find("".p-price i"").text();
var sales=$(ele).parent().parent().parent().parent().find("".p-commit"").text();
var title=$(ele).parent().parent().parent().parent().find("".p-name a em"").text();
var img=$(ele).parent().parent().parent().parent().find("".p-img img"").attr(""src"");
hyCoreModel.setjdItemData({itemid:itemid,price:price,sales:sales,title:title,img:img,type:type});
};
");
return DoJavaScript(@"$('div#J_goodsList .gl-item').find('.myitemState').remove();$('div#J_goodsList .gl-item').find('.myopdiv').remove();
$('div#J_goodsList .gl-item .p-img a').before('
<div class=""myitemState"">
<div class=""stateGraydiv""></div></div><div class=""myopdiv"">
</div>
')").isOk;
}
private bool AddCss()
{
///添加css
return DoJavaScript(@"$('head').append('<style>
.myitemState
{
width:100%;
height:100%;
position: absolute;
left: 0px;
top: 0px;
z-index: 9999;
}
.trueBg
{
background: url(""nacollector://home/img/true.png"") no-repeat;
background-size: 100% 100%;
}
.smallpopBg
{
width:78px;
height:78px;
bottom: 0px;
left: 10px;
top: unset;
background: url(""nacollector://home/img/pop.png"") no-repeat;
background-size: 100% 100%;
position: absolute;
}
.popBg
{
background: url(""nacollector://home/img/pop.png"") no-repeat;
background-size: 100% 100%;
}
.falseBg
{
background: url(""nacollector://home/img/close.png"") no-repeat;
background-size: 100% 100%;
}
.smallfalseBg
{
width:78px;
height:78px;
bottom: 0px;
left: 0px;
top: unset;
background: url(""nacollector://home/img/close.png"") no-repeat;
background-size: 100% 100%;
position: absolute;
}
.stateGraydiv
{
width:100%;
height:100%;
display:none;
background-color: rgba(85, 85, 85, 0.45);
}
.divshow
{
display:block;
}
.myopdiv
{
width:85%;
height:100%;
display:none;
position: absolute;
top: 0px;
right:0px;
}
.myopdiv div {
width: 23%;
height: 20%;
display: inline-block;
cursor: pointer;
}
.pic-box:hover .myopdiv
{
display:unset;
}
.pic-box:hover .myitemState
{
display:none;
}
.p-img:hover .myitemState
{
display:none;
}
.p-img:hover .myopdiv
{
display:unset;
z-index:9999;
}
.img-container:hover .myitemState
{
display:none;
}
.img-container:hover .myopdiv
{
display:unset;
z-index:9999;
}
.LOFjVUas:hover .myitemState
{
display:none;
}
.LOFjVUas:hover .myopdiv
{
display:unset;
z-index:9999;
}
.bgGreen
{
background: rgba(99, 161, 3, 0.8);
font-size:20px;
color:red;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
float: right;
font-family: ""global-iconfont"";
font-weight: 999;
margin-right:5px;
}
.bgPig
{
background: rgba(236, 128, 141, 0.8);
font-size:20px;
color:red;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
float: right;
font-family: ""global-iconfont"";
font-weight: 999;
margin-right:5px;
}
.bgZs
{
background: rgba(194, 128, 255, 0.8);
font-size:20px;
color:red;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
float: right;
font-family: ""global-iconfont"";
font-weight: 999;
margin-right:5px;
}
.bgYellow
{
background: rgba(245, 154, 35, 0.8);
font-size:20px;
color:red;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
float: right;
font-family: ""global-iconfont"";
font-weight: 999;
}
.stateYellow
{
background: rgba(245, 154, 35, 0.8);
font-size:20px;
color:red;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
float: right;
font-family: ""global-iconfont"";
font-weight: 999;
}
</style>')".Replace("\n", "").Replace("\r\n", "")).isOk;
}
/// <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 txtUrl_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Enter)
{
lastUrl = string.Empty;
web.Load(txtUrl.Text);
}
}
private void back_Click(object sender, RoutedEventArgs e)
{
lastUrl = string.Empty;
this.web.Back();
}
}
public class CompetingAsyncJS
{
public CompetingWindow Brower { get; set; }
}
}

11
客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml.cs

@ -88,7 +88,6 @@ namespace 齐越慧眼.Windows
{
if (isWait)
{
web.LoadUrlAsync("www.baidu.com");
return;
}
@ -125,7 +124,17 @@ namespace 齐越慧眼.Windows
}
string url = web.Address;
string spu = EvalScript("return $(document.head).html().match(/mainSkuId:'(.*?)',/)==undefined?\"\":$(document.head).html().match(/mainSkuId:'(.*?)',/)[1]");
ViewModels.CompetingWindowViewModel.Instance.ItemList.Add(new Models.TeamCompetingItem() {
CommentCount=comment,
ImgUrl=imgUrl,
ItemUrl=url,
Platform=0,
Price=price,
Spu=spu,
Title=title,
});
this.DialogResult = true;
}

19
客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs

@ -10,6 +10,7 @@ using System.Text;
using System.Text.RegularExpressions;
using System.Windows;
using .UserControls;
using .Windows;
namespace .cefhelper
{
@ -49,9 +50,14 @@ namespace 齐越慧眼.cefhelper
{
Brower2 = brower;
}
public MyResourceRequestHandlerFactory(CompetingWindow brower)
{
Brower3 = brower;
}
public SomeBrowerControl Brower2;
public BrowerControl Brower;
public CompetingWindow Brower3;
protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
{
@ -59,7 +65,10 @@ namespace 齐越慧眼.cefhelper
{
return new MyResourceRequestHandler(Brower);
}
if (Brower3 != null)
{
return new MyResourceRequestHandler(Brower3);
}
return new MyResourceRequestHandler(Brower2);
}
}
@ -74,15 +83,23 @@ namespace 齐越慧眼.cefhelper
{
Brower2 = brower;
}
public MyResourceRequestHandler(CompetingWindow brower)
{
Brower3 = brower;
}
public SomeBrowerControl Brower2;
public BrowerControl Brower;
public CompetingWindow Brower3;
protected override bool OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
if (Brower != null)
Brower.OnUrlEnd(request.Url);
else
if(Brower2!=null)
Brower2.OnUrlEnd(request.Url);
else if(Brower3!=null)
Brower3.OnUrlEnd(request.Url);
return base.OnResourceResponse(chromiumWebBrowser, browser, frame, request, response);
}

17
客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/competing/Index.vue

@ -123,9 +123,9 @@
</div>
<div style="flex-direction: column;width: 177px;color: #02a7f0;" class="contentDiv" >
<div >查找竞品</div>
<div @click="()=>{onShowWindow(item,0)}">查找竞品</div>
<div style="margin-top: 10px;">完成分析</div>
<div style="margin-top: 10px;">编辑修改</div>
<div style="margin-top: 10px;" @click="()=>{onShowWindow(item,1)}">编辑修改</div>
<div style="margin-top: 10px;">放弃</div>
</div>
</div>
@ -181,6 +181,7 @@ export default {
},
mounted() {
window.getDatas = this.getDatas;
window.reloaddata=this.reloaddata;
this.getDatas(0);
this.getTabCount();
},
@ -195,6 +196,13 @@ export default {
}
return '未添加竞品'
},
reloaddata(){
this.getDatas(0);
},
onShowWindow(item,type){
if( hyCoreModel.onShowWindow(JSON.stringify(item),type))
this.reloaddata()
},
getTop1Data(items){
if(items&&items.length>0)
{
@ -360,6 +368,11 @@ export default {
})
},
changeTab(e) {
if(e!='-1')
{
this.$router.push({name:'item',params:{tabId:e} })
return
}
this.getDatas(e);
this.currentTab = e;
this.pagination.current = 1;

30
客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/items/Index.vue

@ -1,6 +1,11 @@
<template>
<div class="about">
<a-tabs @change="changeTab">
<a-tabs @change="changeTab" v-model="currentTab">
<a-tab-pane
key="-1"
:tab="'竞品分析'"
>
</a-tab-pane>
<a-tab-pane
key="0"
:tab="'待比价(' + getTaskCount(0) + ')'"
@ -138,13 +143,7 @@
<a-col :span="4">
<div class="borderRight">
<div
style="
padding-top: 10px;
padding-bottom: 10px;
width: 200px;
margin: 0px auto;
height: 215px;
"
style=" padding-top: 10px; padding-bottom: 10px; width: 200px; margin: 0px auto; height: 215px; "
>
<a target="_black" :href="item.GoodsUrl">
<img :src="getImgPath(item.ItemImg)" width="200" height="165"
@ -651,8 +650,14 @@ export default {
},
mounted() {
window.getDatas = this.getDatas;
this.getDatas(0);
this.getTabCount();
console.log(this.$route.params.tabId)
if(this.$route.params.tabId)
{
this.changeTab(this.$route.params.tabId);
}else{
this.getDatas(0);
}
this.getTabCount();
},
activated() {
//this.getDatas(0)
@ -733,6 +738,11 @@ export default {
})
},
changeTab(e) {
if(e=='-1')
{
this.$router.push('/competing')
return
}
this.getDatas(e);
this.currentTab = e;
this.pagination.current = 1;

1
客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.c6957eae.css

File diff suppressed because one or more lines are too long

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/css/app.css

File diff suppressed because one or more lines are too long

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/index.html

@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>client</title><link href="/css/app.css" rel="preload" as="style"><link href="/css/app.fe8cfd8e.css" rel="preload" as="style"><link href="/css/chunk-vendors.09af4a6b.css" rel="preload" as="style"><link href="/css/chunk-vendors.css" rel="preload" as="style"><link href="/js/app.js" rel="preload" as="script"><link href="/js/chunk-vendors.js" rel="preload" as="script"><link href="/css/chunk-vendors.09af4a6b.css" rel="stylesheet"><link href="/css/chunk-vendors.css" rel="stylesheet"><link href="/css/app.fe8cfd8e.css" rel="stylesheet"><link href="/css/app.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.js"></script><script src="/js/app.js"></script></body></html>
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>client</title><link href="/css/app.c6957eae.css" rel="preload" as="style"><link href="/css/app.css" rel="preload" as="style"><link href="/css/chunk-vendors.09af4a6b.css" rel="preload" as="style"><link href="/css/chunk-vendors.css" rel="preload" as="style"><link href="/js/app.js" rel="preload" as="script"><link href="/js/chunk-vendors.js" rel="preload" as="script"><link href="/css/chunk-vendors.09af4a6b.css" rel="stylesheet"><link href="/css/chunk-vendors.css" rel="stylesheet"><link href="/css/app.c6957eae.css" rel="stylesheet"><link href="/css/app.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.js"></script><script src="/js/app.js"></script></body></html>

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js

File diff suppressed because one or more lines are too long

2
客户端/齐越慧眼/齐越慧眼/vuepage/dist/js/app.js.map

File diff suppressed because one or more lines are too long

4
客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

@ -46,6 +46,7 @@
<None Remove="vuepage\client\.postcssrc.js" />
<None Remove="vuepage\dist\css\app.030d4c2f.css" />
<None Remove="vuepage\dist\css\app.b0aefef5.css" />
<None Remove="vuepage\dist\css\app.c6957eae.css" />
<None Remove="vuepage\dist\css\app.css" />
<None Remove="vuepage\dist\css\app.fe8cfd8e.css" />
<None Remove="vuepage\dist\css\chunk-vendors.09af4a6b.css" />
@ -83,6 +84,7 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="vuepage\dist\css\app.030d4c2f.css" />
<EmbeddedResource Include="vuepage\dist\css\app.c6957eae.css" />
<EmbeddedResource Include="vuepage\dist\css\app.css" />
<EmbeddedResource Include="vuepage\dist\css\app.fe8cfd8e.css" />
<EmbeddedResource Include="vuepage\dist\css\chunk-vendors.09af4a6b.css" />
@ -113,9 +115,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="ViewModels\" />
<Folder Include="vuepage\client\" />
<Folder Include="vuepage\client\dist\" />
</ItemGroup>
<ItemGroup>

Loading…
Cancel
Save