diff --git a/src/Coldairarrow.Business/HuiYan/pricetasklogBusiness.cs b/src/Coldairarrow.Business/HuiYan/pricetasklogBusiness.cs index c83e969..0c54459 100644 --- a/src/Coldairarrow.Business/HuiYan/pricetasklogBusiness.cs +++ b/src/Coldairarrow.Business/HuiYan/pricetasklogBusiness.cs @@ -125,7 +125,8 @@ namespace Coldairarrow.Business.HuiYan GoodsUrl = b.GoodsUrl, PriceTaskId=c.Id, PriceTaskState = (int)c.State, - Extensions = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.ExtensionJson) + Extensions = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.ExtensionJson), + CompetingItems = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.CompetingItemJson??"[]"), }; var search = input.Search; diff --git a/src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs b/src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs index 118c94f..db62884 100644 --- a/src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs +++ b/src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs @@ -93,7 +93,8 @@ namespace Coldairarrow.Business.HuiYan Platform = b.Platform, GoodsUrl = b.GoodsUrl, CatName = c == null ? String.Empty : c.Name, - Extensions = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.ExtensionJson) + Extensions = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.ExtensionJson), + CompetingItems = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.CompetingItemJson ?? "[]"), }; var search = input.Search; @@ -127,7 +128,12 @@ namespace Coldairarrow.Business.HuiYan } else { - where = where.And(c => c.State == state); + if (state == -1) + { + where = where.And(c => c.State!=3); + } + else + where = where.And(c => c.State == state); } } @@ -143,6 +149,8 @@ namespace Coldairarrow.Business.HuiYan } return new PageResult() { Data = result, Total = 1, Success = true }; } + + } where = where.AndIf(!string.IsNullOrEmpty(keyWord), d => string.IsNullOrEmpty(d.CatName) ? true : d.CatName.Contains(keyWord)); @@ -154,6 +162,15 @@ namespace Coldairarrow.Business.HuiYan var list = q.Where(where).GetPageResultAsync(input).Result; + list.Data.ForEach(item => { + if (string.IsNullOrEmpty(item.GoodsUrl)) + { + if (item.Platform == 3) + { + item.GoodsUrl = $"https://mobile.pinduoduo.com/goods.html?goods_id={item.GoodsId}"; + } + } + }); return list; } @@ -171,7 +188,8 @@ namespace Coldairarrow.Business.HuiYan HasFilter = b.HasFilter, Platform = b.Platform, GoodsUrl = b.GoodsUrl, - Extensions = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.ExtensionJson) + Extensions = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.ExtensionJson), + CompetingItems = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.CompetingItemJson ?? "[]"), }; select = select.BuildExtendSelectExpre(); @@ -181,11 +199,13 @@ namespace Coldairarrow.Business.HuiYan join b in Db.GetIQueryable() on a.ItemId equals b.Id into ab from b in ab.DefaultIfEmpty() select @select.Invoke(a, b); + //查询对应状态 var where = LinqHelper.True(); where = where.And(c => c.State == state); where = where.And(c => _operator.SonTeamList.Contains(c.TeamId)); where = where.And(c => ids.Contains(c.GoodsId)); + return await q.Where(where).ToListAsync(); } @@ -246,6 +266,7 @@ namespace Coldairarrow.Business.HuiYan CreatorId = _operator.UserId, Deleted = false, ExtensionJson = Newtonsoft.Json.JsonConvert.SerializeObject(model.Extensions), + CompetingItemJson = "[]", Id = IdHelper.GetId(), TeamId = _operator.TeamId, @@ -282,6 +303,11 @@ namespace Coldairarrow.Business.HuiYan { int row = Db.Update(c => c.Id == model.Id, (item) => { + if (model.CompetingItems!=null) + { + item.CompetingItemJson = Newtonsoft.Json.JsonConvert.SerializeObject(model.CompetingItems); + } + item.ExtensionJson = Newtonsoft.Json.JsonConvert.SerializeObject(model.Extensions); item.RivalGoodsId = model.RivalGoodsId; item.RivalPLCount = model.RivalPLCount; @@ -628,7 +654,7 @@ namespace Coldairarrow.Business.HuiYan private bool CheckIsPass(teamitems item) { decimal profits = 0; - var extList= Newtonsoft.Json.JsonConvert.DeserializeObject>(item.ExtensionJson); + var extList= Newtonsoft.Json.JsonConvert.DeserializeObject>(item.ExtensionJson); var ex= extList.OrderByDescending(c => c.Profits).FirstOrDefault(); diff --git a/src/Coldairarrow.Entity/DTO/TeamitemDto.cs b/src/Coldairarrow.Entity/DTO/TeamitemDto.cs index dad38d5..02b1620 100644 --- a/src/Coldairarrow.Entity/DTO/TeamitemDto.cs +++ b/src/Coldairarrow.Entity/DTO/TeamitemDto.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; namespace Coldairarrow.Entity.DTO { - public class TeamitemDto:teamitems + public class TeamitemDto : teamitems { public string PriceTaskId { get; set; } /// @@ -44,6 +44,10 @@ namespace Coldairarrow.Entity.DTO /// 扩展信息 /// public List Extensions { get; set; } + /// + /// 竞品信息 + /// + public List CompetingItems { get; set; } } public class TeamItemExtension @@ -98,4 +102,12 @@ namespace Coldairarrow.Entity.DTO /// public decimal Profits { get; set; } } + + /// + /// 竞品信息 + /// + public class TeamCompetingItem + { + + } } diff --git a/src/Coldairarrow.Entity/HuiYan/teamitems.cs b/src/Coldairarrow.Entity/HuiYan/teamitems.cs index 7f3b1f5..1789926 100644 --- a/src/Coldairarrow.Entity/HuiYan/teamitems.cs +++ b/src/Coldairarrow.Entity/HuiYan/teamitems.cs @@ -102,6 +102,11 @@ namespace Coldairarrow.Entity.HuiYan /// public String ExtensionJson { get; set; } + /// + /// 竞品列表Json + /// + public string CompetingItemJson { get; set; } + /// /// 对标商品评价数量 /// diff --git a/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs b/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs index 9db1c9e..4961d97 100644 --- a/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs +++ b/客户端/齐越慧眼/齐越慧眼/ApiHelper.cs @@ -13,8 +13,8 @@ namespace 齐越慧眼 public class ApiHelper { #if LOCATION - public static string ApiBase { get; set; } = "http://localhost:5000"; - //public static string ApiBase { get; set; } = "http://hyapi.qiyue666.com"; + //public static string ApiBase { get; set; } = "http://localhost:5000"; + public static string ApiBase { get; set; } = "http://hyapi.qiyue666.com"; #else public static string ApiBase { get; set; } = "http://hyapi.qiyue666.com"; @@ -32,19 +32,22 @@ namespace 齐越慧眼 #if LOCATION - https://item.taobao.com/item.htm?id=676752909206 //小一 - return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDA1MTUxNjE5NTk0NTg4MTYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNTE2OTc0MjUwNTQyNTAxODg4LDE0MzA0NzE3NDA0NDU2OTE5MDQsMTYyMDM0MzgyNzQ3MjU4NDcwNCIsImV4cCI6MTcwOTQzMDc5MH0.L4F0c7Mx_AbXjiazGmcFDQxVAYwKen91oTS7pZYtqkQ"; + //https://item.taobao.com/item.htm?id=676752909206 //小一 + ///return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDA1MTUxNjE5NTk0NTg4MTYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNTE2OTc0MjUwNTQyNTAxODg4LDE0MzA0NzE3NDA0NDU2OTE5MDQsMTYyMDM0MzgyNzQ3MjU4NDcwNCIsImV4cCI6MTcwOTQzMDc5MH0.L4F0c7Mx_AbXjiazGmcFDQxVAYwKen91oTS7pZYtqkQ"; //return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA5MzA3MDA4MTU5NzQ0IiwidGVhbUlkIjoiMTQzOTg5ODUxNDIyMDkxMjY0MCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MDgzMzM1NDF9.6WCMQzB8iRtYsOZl88YPJrmZVYuuvboO4R8dAQHdLuE"; //测试001 return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzAwMDEzMTg2NjgyODgwIiwidGVhbUlkIjoiMTU0NzM5OTExMTU1NTE1ODAxNiIsInNvblRlYW1JZHMiOiIxNjIwMzQzODI3NDcyNTg0NzA0IiwiZXhwIjoxNzA3ODExMjQxfQ.Vw_BhiUJnT_Sxm7QzbD2-lSguQI_pA9BDbTcQQ-sfQo"; + //比价团 + //return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjMyNTYwODE3NTk5NjgwNTEyIiwidGVhbUlkIjoiMTQ2MzAyOTM1NTEwNDk2NDYwOCIsInNvblRlYW1JZHMiOiIxNDYzMDI5MzU1MTA0OTY0NjA4IiwiZXhwIjoxNzExNDYxMTcxfQ.4DuJkbmmrZFobMw7TaaVsZTxVQ5k7cOsP-chRZnRY6c"; + //叶秋 //return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTgyMjA1NjAwOTk2MDAzODQwIiwidGVhbUlkIjoiMTUxNzczNzYwNDQyNDkyOTI4MCIsInNvblRlYW1JZHMiOiIxNTE3NzM3NjA0NDI0OTI5MjgwIiwiZXhwIjoxNzA3Mjg0MDQxfQ.gXfsdhGTUg1ZPhSGi5j9xG8UwAk6IS4D0oIUeRgLgas"; //芒格 //return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTgwNzM5MTY4NTg0MDc3MzEyIiwidGVhbUlkIjoiMTYyMDM0MzgyNzQ3MjU4NDcwNCIsInNvblRlYW1JZHMiOiIxNjIwMzQzODI3NDcyNTg0NzA0IiwiZXhwIjoxNzA3Mjg0MDc1fQ.ERRSAbj9t1cvRPTbbqTsNoHd2ErclxK8tU_4w3gb_JI"; - // return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzA4MjA4NjU1MzcyMjg4IiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM5OTA0MDUwNzc3NjkwMTEyIiwiZXhwIjoxNzA3ODEwNTUxfQ.wzpfkvDy_GTrbBW4urJJ3mqJHbsdWlwL8eWMhXc-3zg"; + // return "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzA4MjA4NjU1MzcyMjg4IiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM5OTA0MDUwNzc3NjkwMTEyIiwiZXhwIjoxNzA3ODEwNTUxfQ.wzpfkvDy_GTrbBW4urJJ3mqJHbsdWlwL8eWMhXc-3zg"; #endif return jwtToken; } diff --git a/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs b/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs index e97ac55..c7fda0e 100644 --- a/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs +++ b/客户端/齐越慧眼/齐越慧眼/MainWindow.xaml.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; @@ -14,6 +15,7 @@ using System.Windows.Navigation; using System.Windows.Shapes; using HandyControl.Controls; using 齐越慧眼.Helpers; +using 齐越慧眼.Windows; namespace 齐越慧眼 { diff --git a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs index ad8bea0..a936ac2 100644 --- a/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs +++ b/客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs @@ -72,6 +72,8 @@ namespace 齐越慧眼.UserControls web.ResourceRequestHandlerFactory = myResourceRequestHandlerFactory; } + + grid.Children.Add(web); Loaded += BrowerControl_Loaded; @@ -210,7 +212,24 @@ namespace 齐越慧眼.UserControls private void Web_StartNewWindow(object sender, NewWindowEventArgs e) { - // WpfNoticeMsg.NoticeMessage.Show(e.Url); + 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); diff --git a/客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml b/客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml new file mode 100644 index 0000000..53d6612 --- /dev/null +++ b/客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml.cs b/客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml.cs new file mode 100644 index 0000000..9431d7d --- /dev/null +++ b/客户端/齐越慧眼/齐越慧眼/Windows/CompetingWindow.xaml.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; +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; + +namespace 齐越慧眼.Windows +{ + /// + /// CompetingWindow.xaml 的交互逻辑 + /// + public partial class CompetingWindow : Window + { + public CompetingWindow() + { + InitializeComponent(); + } + } +} diff --git a/客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml b/客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml new file mode 100644 index 0000000..1ed459a --- /dev/null +++ b/客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + diff --git a/客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml.cs b/客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml.cs new file mode 100644 index 0000000..d20e128 --- /dev/null +++ b/客户端/齐越慧眼/齐越慧眼/Windows/ItemDetailWindow.xaml.cs @@ -0,0 +1,157 @@ +using CefSharp; +using CefSharp.Wpf; +using System; +using System.Collections.Generic; +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; + +namespace 齐越慧眼.Windows +{ + /// + /// ItemDetailWindow.xaml 的交互逻辑 + /// + public partial class ItemDetailWindow : Window + { + + private ExtChromiumBrowser web; + private ItemDetailWindow(string url) + { + InitializeComponent(); + + KeyDown += ItemDetailWindow_KeyDown; + + web = new ExtChromiumBrowser(url) + { + BrowserSettings = + { + DefaultEncoding = "UTF-8", + Plugins = CefState.Enabled, + //关于跨域限制 + //WebSecurity = CefState.Disabled, + ApplicationCache = CefState.Enabled, + LocalStorage = CefState.Enabled + }, + + //RequestHandler =new MyRequestHandler() + }; + + grid.Children.Add(web); + + } + + private void LoadUrl(string url) + { + web.Load(url); + } + + /// + /// 显示 + /// + /// + /// + public static bool? Show(string url) + { + ItemDetailWindow window = null ; + bool? result = null; + MainWindow.Main.Dispatcher.Invoke(new Action(() => { + window = new ItemDetailWindow(url); + result= window.ShowDialog(); + })); + + return result; + } + + + private void ItemDetailWindow_KeyDown(object sender, KeyEventArgs e) + { + if (e.Key == System.Windows.Input.Key.F12) + { + web.ShowDevTools(); + } + } + + bool isWait = false; + + private void btn_add_Click(object sender, RoutedEventArgs e) + { + if (isWait) + { + web.LoadUrlAsync("www.baidu.com"); + return; + } + + isWait = true; + Task task = null; + + Application.Current.Dispatcher.Invoke(() => + { + task = web.EvaluateScriptAsPromiseAsync("return $(document.body).html();",TimeSpan.FromSeconds(10)); + }); + + var result = task.Result; + + //判断是否加载完成 + if (!result.Success) + { + WpfNoticeMsg.NoticeMessage.Show("请等待页面加载完成后重试!"); + return; + } + + + string imgUrl = EvalScript("return $('#spec-img').attr('src')").Replace(".avif",""); + if (imgUrl.StartsWith("//")) + { + imgUrl = "https:" + imgUrl; + } + string title = EvalScript("return $($(\".sku-name\")[0]).text().trim()"); + string price = EvalScript("return $($(\".p-price\")[0]).text().trim()").Replace("¥", "").Trim(); + string comment = EvalScript("return $($(\"li[data-anchor=#comment]\")[0]).text().trim()"); + var match= Regex.Match(comment, @"商品评价\((.*?)\)"); + if (match.Success) + { + comment= match.Groups[1].Value; + } + string url = web.Address; + + + + this.DialogResult = true; + } + + private void btn_canel_Click(object sender, RoutedEventArgs e) + { + this.DialogResult = false; + } + + string EvalScript(string js) + { + Task task = null; + + Application.Current.Dispatcher.Invoke(() => + { + task = web.EvaluateScriptAsPromiseAsync(js, TimeSpan.FromSeconds(10)); + }); + + var result = task.Result; + + if (result.Success) + { + return result.Result.ToString(); + } + + return string.Empty; + } + } +} diff --git a/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/api/http.js b/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/api/http.js index 5393d0d..3a0d1a0 100644 --- a/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/api/http.js +++ b/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/api/http.js @@ -9,11 +9,12 @@ axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; let $httpVue = null, currentToken = ''; //'application/json;charset=utf-8';// if (process.env.NODE_ENV == 'development') { - axios.defaults.baseURL = 'http://hyapi.qiyue666.com/'; + // axios.defaults.baseURL = 'http://hyapi.qiyue666.com/'; //axios.defaults.baseURL = 'http://localhost:5000/'; - currentToken='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA3NDY1MDMzNDIwODAwIiwidGVhbUlkIjoiMTQzNjI4ODUwMDIzNTI0MzUyMCIsImV4cCI6MTY3MTAwOTkyM30.p3yLjbeUilDZxkfRv4GaCvIYJ_jFoe_8Sw8hY18swdA' + currentToken='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzAwMDEzMTg2NjgyODgwIiwidGVhbUlkIjoiMTU0NzM5OTExMTU1NTE1ODAxNiIsInNvblRlYW1JZHMiOiIxNjIwMzQzODI3NDcyNTg0NzA0IiwiZXhwIjoxNzA3ODExMjQxfQ.Vw_BhiUJnT_Sxm7QzbD2-lSguQI_pA9BDbTcQQ-sfQo' // currentToken='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTAwNjY3OTAyNDU2NTAwMjI0IiwidGVhbUlkIjoiMTQ2MzAyOTM1NTEwNDk2NDYwOCIsImV4cCI6MTY5MDI1NTI1Nn0.McaUJU3XY_twiL5TI_-KBn9X_ePzLfsEIhgiZ274Bv0' } + else if (process.env.NODE_ENV == 'production') { axios.defaults.baseURL = 'http://hyapi.qiyue666.com/'; } @@ -23,6 +24,7 @@ let ipAddress = axios.defaults.baseURL; axios.defaults.baseURL = 'http://hyapi.qiyue666.com/'; //axios.defaults.baseURL = 'http://111.230.132.27:8033/'; + axios.defaults.baseURL = 'http://localhost:5000/'; axios.interceptors.request.use((config) => { //axios.defaults.headers[_Authorization] = $httpVue.$store.getters.getToken(); diff --git a/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/router/index.js b/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/router/index.js index a23d97e..b274511 100644 --- a/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/router/index.js +++ b/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/router/index.js @@ -4,6 +4,7 @@ import Home from '../views/cats/Index.vue' import Items from '../views/items/Index.vue' import PriceTask from '../views/pricetask/Index.vue' import Info from '../views/info/Index.vue' +import Competing from '../views/competing/Index.vue' Vue.use(VueRouter) @@ -27,6 +28,11 @@ const routes = [ path: '/info', name: 'info', component: Info + }, + { + path: '/competing', + name: 'competing', + component: Competing } ] diff --git a/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/competing/Index.vue b/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/competing/Index.vue new file mode 100644 index 0000000..3982c17 --- /dev/null +++ b/客户端/齐越慧眼/齐越慧眼/vuepage/client/src/views/competing/Index.vue @@ -0,0 +1,510 @@ + + + + + + \ No newline at end of file