diff --git a/BBWYB.Client/App.xaml.cs b/BBWYB.Client/App.xaml.cs
index 9f2d3f5..9b29706 100644
--- a/BBWYB.Client/App.xaml.cs
+++ b/BBWYB.Client/App.xaml.cs
@@ -79,6 +79,7 @@ namespace BBWYB.Client
             serviceCollection.AddTransient<OnlinePurchaseViewModel>();
             serviceCollection.AddTransient<EditPriceViewModel>();
             serviceCollection.AddTransient<UpdatePurchaseTaskViewModel>();
+            serviceCollection.AddTransient<BindingPurchaseProductViewModel>();
             serviceCollection.AddMapper(new MappingProfile());
             ServiceProvider = serviceCollection.BuildServiceProvider();
             base.OnStartup(e);
diff --git a/BBWYB.Client/GlobalContext.cs b/BBWYB.Client/GlobalContext.cs
index dcc7452..373eabc 100644
--- a/BBWYB.Client/GlobalContext.cs
+++ b/BBWYB.Client/GlobalContext.cs
@@ -22,7 +22,7 @@ namespace BBWYB.Client
     {
         public GlobalContext()
         {
-            BBWYBApiVersion = "10030";
+            BBWYBApiVersion = "10031";
         }
 
         private User user;
diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs
index 712aaaf..995aa88 100644
--- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs
+++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeProductResponse.cs
@@ -13,6 +13,16 @@ namespace BBWYB.Client.Models
         public string SkuId { get; set; }
         public long SkuPurchaseSchemeId { get; set; }
         public long UserId { get; set; }
+
+        public string PurchaserName { get; set; }
+
+        public string PurchaserId { get; set; }
+        public string PurchaserId2 { get; set; }
+
+        public string PurchaserLocation { get; set; }
+
+        public Platform? PurchasePlatform { get; set; }
+
         public List<PurchaseSchemeProductSkuResponse> PurchaseSchemeProductSkuList { get; set; }
 
     }
diff --git a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs
index b010fef..01dc224 100644
--- a/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs
+++ b/BBWYB.Client/Models/APIModel/Response/PurchaseSchemeResponse.cs
@@ -11,20 +11,20 @@ namespace BBWYB.Client.Models
         /// </summary>
         public decimal? DefaultCost { get; set; }
         public string ProductId { get; set; }
-        /// <summary>
-        /// 采购商Id
-        /// </summary>
-        public string PurchaserId { get; set; }
+        ///// <summary>
+        ///// 采购商Id
+        ///// </summary>
+        //public string PurchaserId { get; set; }
 
-        /// <summary>
-        /// 采购商Id
-        /// </summary>
-        public string PurchaserId2 { get; set; }
-        public string PurchaserName { get; set; }
-        /// <summary>
-        /// 发货地
-        /// </summary>
-        public string PurchaserLocation { get; set; }
+        ///// <summary>
+        ///// 采购商Id
+        ///// </summary>
+        //public string PurchaserId2 { get; set; }
+        //public string PurchaserName { get; set; }
+        ///// <summary>
+        ///// 发货地
+        ///// </summary>
+        //public string PurchaserLocation { get; set; }
         /// <summary>
         /// 采购实际成本
         /// </summary>
@@ -32,10 +32,10 @@ namespace BBWYB.Client.Models
         public string SkuId { get; set; }
         public long ShopId { get; set; }
 
-        /// <summary>
-        /// 采购平台
-        /// </summary>
-        public Platform PurchasePlatform { get; set; }
+        ///// <summary>
+        ///// 采购平台
+        ///// </summary>
+        //public Platform PurchasePlatform { get; set; }
 
         /// <summary>
         /// 最后采购时间
@@ -43,6 +43,8 @@ namespace BBWYB.Client.Models
         public DateTime? LastPurchaseTime { get; set; }
 
         public List<PurchaseSchemeProductResponse> PurchaseSchemeProductList { get; set; }
+
+        public List<Purchaser> PurchaserList { get; set; }
     }
 
 }
diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs
index 3d5ad1c..45c82e3 100644
--- a/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs
+++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs
@@ -2,6 +2,7 @@
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
+using System.Linq;
 
 namespace BBWYB.Client.Models
 {
@@ -21,10 +22,10 @@ namespace BBWYB.Client.Models
         public decimal DefaultCost { get => defaultCost; set { SetProperty(ref defaultCost, value); } }
         public decimal RealCost { get => realCost; set { SetProperty(ref realCost, value); } }
 
-        public string PurchaserId { get; set; }
-        public string PurchaserId2 { get; set; }
+        //public string PurchaserId { get; set; }
+        //public string PurchaserId2 { get; set; }
         public string PurchaserName { get; set; }
-        public string PurchaserLocation { get; set; }
+        //public string PurchaserLocation { get; set; }
         public string PurchaseProductId1 { get; set; }
         public int PurchaseProductSkuCount1 { get; set; }
         public string PurchaseProductId2 { get; set; }
@@ -37,7 +38,7 @@ namespace BBWYB.Client.Models
         /// <summary>
         /// 采购平台
         /// </summary>
-        public Platform PurchasePlatform { get; set; }
+        //public Platform PurchasePlatform { get; set; }
 
         /// <summary>
         /// 最后采购时间
@@ -49,9 +50,12 @@ namespace BBWYB.Client.Models
         /// </summary>
         public IList<PurchaseSchemeProduct> PurchaseSchemeProductList { get; set; }
 
+        public List<Purchaser> PurchaserList { get; set; }
+
         public PurchaseScheme()
         {
             PurchaseSchemeProductList = new ObservableCollection<PurchaseSchemeProduct>();
+            PurchaserList = new List<Purchaser>();
         }
 
         /// <summary>
@@ -68,13 +72,17 @@ namespace BBWYB.Client.Models
                 ProductId = apiModel.ProductId,
                 SkuId = apiModel.SkuId,
                 DefaultCost = apiModel.DefaultCost ?? 0,
-                RealCost = apiModel.RealCost ?? 0,
-                PurchaserId = apiModel.PurchaserId,
-                PurchaserName = apiModel.PurchaserName,
-                PurchaserLocation = apiModel.PurchaserLocation,
-                PurchasePlatform = apiModel.PurchasePlatform
+                RealCost = apiModel.RealCost ?? 0
+                //PurchaserId = apiModel.PurchaserId,
+                //PurchaserName = apiModel.PurchaserName,
+                //PurchaserLocation = apiModel.PurchaserLocation,
+                //PurchasePlatform = apiModel.PurchasePlatform
             };
-
+            foreach (var p in apiModel.PurchaserList)
+            {
+                model.PurchaserList.Add(p);
+            }
+            model.PurchaserName = model.PurchaserList.Count() == 1 ? model.PurchaserList[0].Name : $"{model.PurchaserList[0].Name}等{model.PurchaserList.Count()}个采购商";
             foreach (var apiProduct in apiModel.PurchaseSchemeProductList)
             {
                 model.PurchaseSchemeProductList.Add(PurchaseSchemeProduct.Convert(apiProduct));
diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs
index 16bc54e..052bbca 100644
--- a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs
+++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs
@@ -28,6 +28,12 @@ namespace BBWYB.Client.Models
         public string PurchaseUrl { get => purchaseUrl; set { SetProperty(ref purchaseUrl, value); } }
         public string PurchaseProductId { get => purchaseProductId; set => purchaseProductId = value; }
 
+        public string PurchaserId { get; set; }
+        public string PurchaserId2 { get; set; }
+        public string PurchaserLocation { get; set; }
+        public string PurchaserName { get; set; }
+        public Platform PurchasePlatform { get; set; }
+
         public bool IsEditing
         {
             get => isEditing;
@@ -79,7 +85,12 @@ namespace BBWYB.Client.Models
                 ProductId = apiModel.ProductId,
                 SkuId = apiModel.SkuId,
                 PurchaseProductId = apiModel.PurchaseProductId,
-                PurchaseUrl = apiModel.PurchaseUrl
+                PurchaseUrl = apiModel.PurchaseUrl,
+                PurchaserId = apiModel.PurchaserId,
+                PurchaserId2 = apiModel.PurchaserId2,
+                PurchaserName = apiModel.PurchaserName,
+                PurchasePlatform = apiModel.PurchasePlatform.Value,
+                PurchaserLocation = apiModel.PurchaserLocation
             };
             model.SelectedSkuIdList.AddRange(apiModel.PurchaseSchemeProductSkuList.Select(s => s.PurchaseSkuId));
             return model;
diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs
index 233aafa..766958f 100644
--- a/BBWYB.Client/ViewModels/MainViewModel.cs
+++ b/BBWYB.Client/ViewModels/MainViewModel.cs
@@ -87,14 +87,14 @@ namespace BBWYB.Client.ViewModels
         {
             App.Current.Dispatcher.Invoke(() =>
             {
-                MenuList.Add(new MenuModel()
-                {
-                    Name = "订单管理",
-                    ChildList = new List<MenuModel>()
-                    {
-                        new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" }
-                    }
-                });
+                //MenuList.Add(new MenuModel()
+                //{
+                //    Name = "订单管理",
+                //    ChildList = new List<MenuModel>()
+                //    {
+                //        new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" }
+                //    }
+                //});
                 MenuList.Add(new MenuModel()
                 {
                     Name = "商品管理",
diff --git a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
index b445e3c..b5c3b97 100644
--- a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
+++ b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
@@ -117,17 +117,17 @@ namespace BBWYB.Client.ViewModels
             if (!isResponse)
                 return;
             isResponse = false;
-            var purchaserId = skuGroup.SelectedScheme.PurchaserId;
+            //var purchaserId = skuGroup.SelectedScheme.PurchaserId;
 
-            foreach (var otherSkuGroup in SkuGroup)
-            {
-                if (otherSkuGroup.SkuId == skuGroup.SkuId)
-                    continue;
+            //foreach (var otherSkuGroup in SkuGroup)
+            //{
+            //    if (otherSkuGroup.SkuId == skuGroup.SkuId)
+            //        continue;
 
-                var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId);
-                if (samePurchaseScheme != null)
-                    otherSkuGroup.SelectedScheme = samePurchaseScheme;
-            }
+            //    var samePurchaseScheme = otherSkuGroup.SchemeList.FirstOrDefault(s => s.PurchaserId == purchaserId);
+            //    if (samePurchaseScheme != null)
+            //        otherSkuGroup.SelectedScheme = samePurchaseScheme;
+            //}
             isResponse = true;
         }
 
diff --git a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs
index 5358607..ed49682 100644
--- a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs
+++ b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs
@@ -135,8 +135,8 @@ namespace BBWYB.Client.ViewModels
                     Logo = orderSku.Logo,
                     Price = orderSku.Price.Value,
                     ProductId = scheme.ProductId,
-                    PurchasePlatform = scheme.PurchasePlatform,
-                    PurchaserId = scheme.PurchaserId,
+                    //PurchasePlatform = scheme.PurchasePlatform,
+                    //PurchaserId = scheme.PurchaserId,
                     PurchaserName = scheme.PurchaserName,
                     PurchaseSchemeId = scheme.Id,
                     Quantity = orderSku.ItemTotal,
diff --git a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs
index 85775b6..26cb3c9 100644
--- a/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs
+++ b/BBWYB.Client/ViewModels/Ware/BindingPurchaseProductViewModel.cs
@@ -4,9 +4,11 @@ using BBWYB.Client.Views.Ware;
 using BBWYB.Common.Models;
 using CommunityToolkit.Mvvm.Input;
 using CommunityToolkit.Mvvm.Messaging;
+using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
+using System.Collections.ObjectModel;
 using System.Linq;
 using System.Text.RegularExpressions;
 using System.Threading;
@@ -16,17 +18,17 @@ using System.Windows.Input;
 
 namespace BBWYB.Client.ViewModels
 {
-    public class BindingPurchaseProductViewModel : BaseVM, IDenpendency
+    public class BindingPurchaseProductViewModel : BaseVM
     {
         #region  Properties 
         private GlobalContext globalContext;
         private PurchaseService purchaseService;
         private PurchaseProductAPIService purchaseProductAPIService;
 
-        private string purchaserName;
+        //private string purchaserName;
         private bool isLoading;
-
-        private Platform purchasePlatform;
+        private long? schemeId;
+        //private Platform purchasePlatform;
 
 
         private IDictionary<Platform, string> urlPatternDictionary;
@@ -34,15 +36,18 @@ namespace BBWYB.Client.ViewModels
 
         public IList<ProductSku> ProductSkuList { get; set; }
 
-        public string PurchaserId { get; set; }
+        //public string PurchaserId { get; set; }
+
+        //public string PurchaserId2 { get; set; }
 
-        public string PurchaserId2 { get; set; }
+        //public string PurchaserName { get => purchaserName; set { SetProperty(ref purchaserName, value); } }
+        //public string PurchaserLocation { get; set; }
 
-        public string PurchaserName { get => purchaserName; set { SetProperty(ref purchaserName, value); } }
-        public string PurchaserLocation { get; set; }
         public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } }
 
-        public Platform PurchasePlatform { get => purchasePlatform; set { SetProperty(ref purchasePlatform, value); } }
+        public long? SchemeId { get => schemeId; set { SetProperty(ref schemeId, value); } }
+
+        //public Platform PurchasePlatform { get => purchasePlatform; set { SetProperty(ref purchasePlatform, value); } }
 
         #endregion
 
@@ -86,68 +91,130 @@ namespace BBWYB.Client.ViewModels
                 { Platform.阿里巴巴,@"^(https://detail.1688.com/offer/(\d+).html)[^\s]*" },
                 //{ Platform.拳探, @"^(https://qt.qiyue666.com/goods_detail/(\d+))(\?\w*)?$" }
             };
+            ProductSkuList = new ObservableCollection<ProductSku>();
         }
 
-        public void SetData(IList<ProductSku> productSkuList, string purchaserId, string purchaserId2, string purchaserName, Platform purchasePlatform)
+        //public void SetData(IList<ProductSku> productSkuList, string purchaserId, string purchaserId2, string purchaserName, Platform purchasePlatform)
+        //{
+        //    this.ProductSkuList = productSkuList;
+        //    //this.Product = product;
+        //    this.PurchaserId = purchaserId;
+        //    this.PurchaserId2 = purchaserId2;
+        //    this.PurchaserName = purchaserName;
+        //    this.PurchasePlatform = purchasePlatform;
+        //}
+
+        public void SetData(IList<ProductSku> productSkuList, long? schemeId)
         {
-            this.ProductSkuList = productSkuList;
+            foreach (var productSku in productSkuList)
+                ProductSkuList.Add(productSku);
+            this.SchemeId = schemeId;
             //this.Product = product;
-            this.PurchaserId = purchaserId;
-            this.PurchaserId2 = purchaserId2;
-            this.PurchaserName = purchaserName;
-            this.PurchasePlatform = purchasePlatform;
+            //this.PurchaserId = purchaserId;
+            //this.PurchaserId2 = purchaserId2;
+            //this.PurchaserName = purchaserName;
+            //this.PurchasePlatform = purchasePlatform;
         }
 
         protected override void Load()
         {
-            if (!string.IsNullOrEmpty(PurchaserId))
+            if (this.SchemeId != null)
             {
                 IsLoading = true;
-                Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId, purchasePlatform: PurchasePlatform)).ContinueWith(r =>
-                   {
-                       var apiResponse = r.Result;
-                       if (!apiResponse.Success)
-                       {
-                           App.Current.Dispatcher.BeginInvoke((Action)delegate
-                           {
-                               MessageBox.Show(apiResponse.Msg, "查询采购方案");
-                           });
-                           IsLoading = false;
-                           return;
-                       }
-
-                       var purchaseSchemeList = apiResponse.Data;
-
-                       var waitList = new List<EventWaitHandle>();
-                       foreach (var sku in ProductSkuList)
-                       {
-                           //当前SKU下当前采购商的采购方案
-                           var apiScheme = purchaseSchemeList.FirstOrDefault(s => s.SkuId == sku.Id && s.PurchaserId == PurchaserId);
-
-                           if (apiScheme == null)
-                               continue;
-
-                           sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme);
-                           var ewh = new ManualResetEvent(false);
-                           waitList.Add(ewh);
-
-                           Task.Factory.StartNew(() =>
-                           {
-                               foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList)
-                               {
-                                   purchaseSchemeProduct.IsEditing = false;
-                                   LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _);
-                               }
-                               ewh.Set();
-                               ewh.Dispose();
-                           });
-                       }
-                       WaitHandle.WaitAll(waitList.ToArray());
-                       IsLoading = false;
-                   });
+                var skuIdList = ProductSkuList.Select(s => s.Id).ToList();
+                var sku = ProductSkuList.FirstOrDefault();
+                Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(skuIdList, shopId: globalContext.User.Shop.ShopId, schemeId: SchemeId)).ContinueWith(r =>
+                {
+                    var apiResponse = r.Result;
+                    if (!apiResponse.Success)
+                    {
+                        App.Current.Dispatcher.BeginInvoke((Action)delegate
+                        {
+                            MessageBox.Show(apiResponse.Msg, "查询采购方案");
+                        });
+                        IsLoading = false;
+                        return;
+                    }
+
+                    var purchaseSchemeList = apiResponse.Data;
+                    var apiScheme = purchaseSchemeList.FirstOrDefault();
+                    if (apiScheme == null)
+                    {
+                        IsLoading = false;
+                        return;
+                    }
+                    sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme);
+                    var ewh = new ManualResetEvent(false);
+
+                    var waitList = new List<EventWaitHandle>();
+                    waitList.Add(ewh);
+
+                    Task.Factory.StartNew(() =>
+                    {
+                        foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList)
+                        {
+                            purchaseSchemeProduct.IsEditing = false;
+                            LoadPurchaseProduct(purchaseSchemeProduct.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _);
+                        }
+                        ewh.Set();
+                        ewh.Dispose();
+                    });
+                    WaitHandle.WaitAll(waitList.ToArray());
+                    IsLoading = false;
+                });
             }
         }
 
+        //protected override void Load()
+        //{
+        //    if (!string.IsNullOrEmpty(PurchaserId))
+        //    {
+        //        IsLoading = true;
+        //        Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(ProductSkuList.Select(s => s.Id).ToList(), PurchaserId, globalContext.User.Shop.ShopId, purchasePlatform: PurchasePlatform)).ContinueWith(r =>
+        //           {
+        //               var apiResponse = r.Result;
+        //               if (!apiResponse.Success)
+        //               {
+        //                   App.Current.Dispatcher.BeginInvoke((Action)delegate
+        //                   {
+        //                       MessageBox.Show(apiResponse.Msg, "查询采购方案");
+        //                   });
+        //                   IsLoading = false;
+        //                   return;
+        //               }
+
+        //               var purchaseSchemeList = apiResponse.Data;
+
+        //               var waitList = new List<EventWaitHandle>();
+        //               foreach (var sku in ProductSkuList)
+        //               {
+        //                   //当前SKU下当前采购商的采购方案
+        //                   var apiScheme = purchaseSchemeList.FirstOrDefault(s => s.SkuId == sku.Id && s.PurchaserId == PurchaserId);
+
+        //                   if (apiScheme == null)
+        //                       continue;
+
+        //                   sku.SelectedPurchaseScheme = PurchaseScheme.Convert(apiScheme);
+        //                   var ewh = new ManualResetEvent(false);
+        //                   waitList.Add(ewh);
+
+        //                   Task.Factory.StartNew(() =>
+        //                   {
+        //                       foreach (var purchaseSchemeProduct in sku.SelectedPurchaseScheme.PurchaseSchemeProductList)
+        //                       {
+        //                           purchaseSchemeProduct.IsEditing = false;
+        //                           LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseSchemeProduct.PurchaseProductId, null, out _);
+        //                       }
+        //                       ewh.Set();
+        //                       ewh.Dispose();
+        //                   });
+        //               }
+        //               WaitHandle.WaitAll(waitList.ToArray());
+        //               IsLoading = false;
+        //           });
+        //    }
+        //}
+
         public void LoadPurchaseProduct(Platform platform, PurchaseSchemeProduct purchaseSchemeProduct, string purchaseProductId, Func<string, string> checkPurchaserFunc, out string errorMsg)
         {
             errorMsg = string.Empty;
@@ -180,10 +247,15 @@ namespace BBWYB.Client.ViewModels
                     return;
                 }
 
-                PurchaserId = data.Value.purchaser.Id;
-                PurchaserId2 = data.Value.purchaser.Id2;
-                PurchaserName = data.Value.purchaser.Name;
-                PurchaserLocation = data.Value.purchaser.Location;
+                purchaseSchemeProduct.PurchaserId = data.Value.purchaser.Id;
+                purchaseSchemeProduct.PurchaserId2 = data.Value.purchaser.Id2;
+                purchaseSchemeProduct.PurchaserName = data.Value.purchaser.Name;
+                purchaseSchemeProduct.PurchaserLocation = data.Value.purchaser.Location;
+
+                //PurchaserId = data.Value.purchaser.Id;
+                //PurchaserId2 = data.Value.purchaser.Id2;
+                //PurchaserName = data.Value.purchaser.Name;
+                //PurchaserLocation = data.Value.purchaser.Location;
 
                 App.Current.Dispatcher.BeginInvoke((Action)delegate
                 {
@@ -214,8 +286,7 @@ namespace BBWYB.Client.ViewModels
                 productSku.SelectedPurchaseScheme = new PurchaseScheme()
                 {
                     ProductId = productSku.ProductId,
-                    SkuId = productSku.Id,
-                    PurchasePlatform = PurchasePlatform
+                    SkuId = productSku.Id
                 };
             }
             else if (productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Count >= 4)
@@ -229,7 +300,8 @@ namespace BBWYB.Client.ViewModels
                 Id = DateTime.Now.ToFileTime(),
                 IsEditing = true,
                 ProductId = productSku.ProductId,
-                SkuId = productSku.Id
+                SkuId = productSku.Id,
+                PurchasePlatform = Platform.阿里巴巴   //B端写死只能1688
             });
         }
 
@@ -237,8 +309,8 @@ namespace BBWYB.Client.ViewModels
         {
             var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
             productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Remove(purchaseSchemeProduct);
-            if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0))
-                PurchaserId = string.Empty;
+            //if (!ProductSkuList.Any(s => s.SelectedPurchaseScheme != null && s.SelectedPurchaseScheme.PurchaseSchemeProductList.Count > 0))
+            //    PurchaserId = string.Empty;
         }
 
         /// <summary>
@@ -254,7 +326,7 @@ namespace BBWYB.Client.ViewModels
                 return;
             }
 
-            urlPatternDictionary.TryGetValue(PurchasePlatform, out string pattern);
+            urlPatternDictionary.TryGetValue(purchaseSchemeProduct.PurchasePlatform, out string pattern);
 
             var match = Regex.Match(purchaseSchemeProduct.PurchaseUrl, pattern);
             if (!match.Success)
@@ -276,13 +348,13 @@ namespace BBWYB.Client.ViewModels
 
             Task.Factory.StartNew(() =>
             {
-                LoadPurchaseProduct(sku.SelectedPurchaseScheme.PurchasePlatform, purchaseSchemeProduct, purchaseProductId, (p) =>
+                LoadPurchaseProduct(purchaseSchemeProduct.PurchasePlatform, purchaseSchemeProduct, purchaseProductId, (p) =>
                 {
-                    if (sku.PurchaseSchemeList.Any(s => s.Id != sku.SelectedPurchaseScheme.Id && s.PurchaserId == p))
-                        return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商
+                    //if (sku.PurchaseSchemeList.Any(s => s.Id != sku.SelectedPurchaseScheme.Id && s.PurchaserId == p))
+                    //    return $"sku{sku.Id}的采购方案中已存在相同的采购商"; //同一个sku中的采购方案不能有相同的采购商
 
-                    if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId)  //同一批操作的sku必须为相同的采购商
-                        return "采购商必须相同";
+                    //if (!string.IsNullOrEmpty(PurchaserId) && p != PurchaserId)  //同一批操作的sku必须为相同的采购商
+                    //    return "采购商必须相同";
 
                     return string.Empty;
                 }, out string errorMsg);
@@ -319,10 +391,10 @@ namespace BBWYB.Client.ViewModels
             purchaseSchemeProduct.IsEditing = false;
 
             var productSku = ProductSkuList.FirstOrDefault(sku => sku.Id == purchaseSchemeProduct.SkuId);
-            productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId;
-            productSku.SelectedPurchaseScheme.PurchaserId2 = PurchaserId2;
-            productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName;
-            productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation;
+            //productSku.SelectedPurchaseScheme.PurchaserId = PurchaserId;
+            //productSku.SelectedPurchaseScheme.PurchaserId2 = PurchaserId2;
+            //productSku.SelectedPurchaseScheme.PurchaserName = PurchaserName;
+            //productSku.SelectedPurchaseScheme.PurchaserLocation = PurchaserLocation;
             productSku.SelectedPurchaseScheme.DefaultCost = productSku.SelectedPurchaseScheme.PurchaseSchemeProductList.Sum(p => p.PurchaseSchemeProductSkuList.Count() == 0 ? 0 : p.PurchaseSchemeProductSkuList.Sum(s => s.Price));
 
         }
@@ -385,12 +457,13 @@ namespace BBWYB.Client.ViewModels
 
         private void Closing(System.ComponentModel.CancelEventArgs e)
         {
-            PurchaserId = PurchaserName = string.Empty;
+            this.SchemeId = null;
             //clear data
             foreach (var sku in ProductSkuList)
             {
                 sku.SelectedPurchaseScheme = null;
             }
+            this.ProductSkuList.Clear();
             //Product = null;
             e.Cancel = false;
         }
diff --git a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs
index 5661f0a..52b0f7c 100644
--- a/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs
+++ b/BBWYB.Client/ViewModels/Ware/WareManagerViewModel.cs
@@ -20,7 +20,7 @@ namespace BBWYB.Client.ViewModels
         #region Properties
         private PurchaseService purchaseService;
         private ProductService productService;
-        private BindingPurchaseProductViewModel bindingPurchaseProduct;
+        //private BindingPurchaseProductViewModel bindingPurchaseProduct;
         private GlobalContext globalContext;
         private bool isLoading;
         private int pageIndex = 1;
@@ -45,22 +45,32 @@ namespace BBWYB.Client.ViewModels
         #endregion
 
         #region Commands
-        public ICommand AddPurchaserCommand { get; set; }
-        public ICommand EditPurchaserCommand { get; set; }
-        public ICommand DeletePurchaserCommand { get; set; }
+        //public ICommand AddPurchaserCommand { get; set; }
+        //public ICommand EditPurchaserCommand { get; set; }
+        //public ICommand DeletePurchaserCommand { get; set; }
         public ICommand SearchCommand { get; set; }
         public ICommand ProductPageIndexChangedCommand { get; set; }
 
         public ICommand SwitchPurchasePlatformCommand { get; set; }
+
+        public ICommand AddSchemeCommand { get; set; }
+
+        public ICommand EditSchemeCommand { get; set; }
+
+        public ICommand DeleteSchemeCommand { get; set; }
         #endregion
 
         #region Methods
         public WareManagerViewModel(GlobalContext globalContext, BindingPurchaseProductViewModel bindingPurchaseProduct, PurchaseService purchaseService, ProductService productService)
         {
             PageSize = 5;
-            AddPurchaserCommand = new RelayCommand<Product>(AddPurchaser);
-            EditPurchaserCommand = new RelayCommand<Purchaser>(EditPurchaser);
-            DeletePurchaserCommand = new RelayCommand<Purchaser>(DeletePurchaser);
+            //AddPurchaserCommand = new RelayCommand<Product>(AddPurchaser);
+            //EditPurchaserCommand = new RelayCommand<Purchaser>(EditPurchaser);
+            //DeletePurchaserCommand = new RelayCommand<Purchaser>(DeletePurchaser);
+            AddSchemeCommand = new RelayCommand<Product>(AddScheme);
+            EditSchemeCommand = new RelayCommand<PurchaseScheme>(EditScheme);
+            DeleteSchemeCommand = new RelayCommand<PurchaseScheme>(DeleteScheme);
+
             SwitchPurchasePlatformCommand = new RelayCommand<object>(SwitchPurchasePlatform);
             SearchCommand = new RelayCommand(() =>
             {
@@ -71,7 +81,7 @@ namespace BBWYB.Client.ViewModels
             this.purchaseService = purchaseService;
             this.productService = productService;
             this.globalContext = globalContext;
-            this.bindingPurchaseProduct = bindingPurchaseProduct;
+            //this.bindingPurchaseProduct = bindingPurchaseProduct;
             ProductList = new ObservableCollection<Product>();
             Task.Factory.StartNew(() => LoadWare(1));
         }
@@ -164,7 +174,7 @@ namespace BBWYB.Client.ViewModels
             {
                 foreach (var p in productList)
                     ProductList.Add(p);
-                ExtractPurchaser();
+                //ExtractPurchaser();
                 //使滚动条保持顶部
                 //Messenger.Default.Send(string.Empty, "WareManager_ProductListScrollToTop");
                 WeakReferenceMessenger.Default.Send(new Message_WareManager_ProductListScrollToTop(null));
@@ -227,96 +237,142 @@ namespace BBWYB.Client.ViewModels
         /// <summary>
         /// 提取SKU中的采购商到商品的采购商列表中
         /// </summary>
-        private void ExtractPurchaser(string productId = "")
+        //private void ExtractPurchaser(string productId = "")
+        //{
+        //    var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId);
+        //    foreach (var product in productList)
+        //    {
+        //        product.PurchaserList.Clear();
+        //        foreach (var sku in product.SkuList)
+        //        {
+        //            if (sku.PurchaseSchemeList.Count() > 0)
+        //            {
+        //                foreach (var pscheme in sku.PurchaseSchemeList)
+        //                {
+        //                    var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId);
+        //                    if (purchaser == null)
+        //                    {
+        //                        purchaser = new Purchaser()
+        //                        {
+        //                            Id = pscheme.PurchaserId,
+        //                            Id2 = pscheme.PurchaserId2,
+        //                            Name = pscheme.PurchaserName,
+        //                            ProductId = product.Id
+        //                        };
+        //                        product.PurchaserList.Add(purchaser);
+        //                    }
+        //                    purchaser.SkuUseCount++;
+        //                }
+        //            }
+        //        }
+        //    }
+        //}
+
+        //private void AddPurchaser(Product product)
+        //{
+        //    if (product.PurchaserList.Count >= 5)
+        //    {
+        //        MessageBox.Show("一个SPU内最多允许5个采购商");
+        //        return;
+        //    }
+
+        //    OpenBindingView(product, string.Empty, string.Empty, string.Empty);
+        //}
+
+        //private void EditPurchaser(Purchaser purchaser)
+        //{
+        //    var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId);
+        //    OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name);
+        //}
+
+        //private void DeletePurchaser(Purchaser purchaser)
+        //{
+        //    if (MessageBox.Show("确认删除该采购商吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
+        //        return;
+        //    IsLoading = true;
+        //    Task.Factory.StartNew(() =>
+        //    {
+        //        var response = purchaseService.DeletePurchaser(purchaser.ProductId, purchaser.Id);
+        //        IsLoading = false;
+        //        if (response.Success)
+        //        {
+        //            App.Current.Dispatcher.BeginInvoke((Action)delegate
+        //            {
+        //                var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId);
+        //                if (product != null)
+        //                {
+        //                    foreach (var sku in product.SkuList)
+        //                    {
+        //                        var deleteScheme = sku.PurchaseSchemeList.FirstOrDefault(s => s.PurchaserId == purchaser.Id);
+        //                        if (deleteScheme != null)
+        //                            sku.PurchaseSchemeList.Remove(deleteScheme);
+        //                    }
+        //                    product.PurchaserList.Remove(purchaser);
+        //                }
+        //                MessageBox.Show("采购商删除成功", "提示");
+        //            });
+        //        }
+        //        else
+        //        {
+        //            App.Current.Dispatcher.BeginInvoke((Action)delegate
+        //            {
+        //                MessageBox.Show(response.Msg, "采购商删除");
+        //            });
+        //        }
+        //    });
+        //}
+
+        private void AddScheme(Product product)
         {
-            var productList = string.IsNullOrEmpty(productId) ? ProductList : ProductList.Where(p => p.Id == productId);
-            foreach (var product in productList)
-            {
-                product.PurchaserList.Clear();
-                foreach (var sku in product.SkuList)
-                {
-                    if (sku.PurchaseSchemeList.Count() > 0)
-                    {
-                        foreach (var pscheme in sku.PurchaseSchemeList)
-                        {
-                            var purchaser = product.PurchaserList.FirstOrDefault(purchaser => purchaser.Id == pscheme.PurchaserId);
-                            if (purchaser == null)
-                            {
-                                purchaser = new Purchaser()
-                                {
-                                    Id = pscheme.PurchaserId,
-                                    Id2 = pscheme.PurchaserId2,
-                                    Name = pscheme.PurchaserName,
-                                    ProductId = product.Id
-                                };
-                                product.PurchaserList.Add(purchaser);
-                            }
-                            purchaser.SkuUseCount++;
-                        }
-                    }
-                }
-            }
-        }
-
-        private void AddPurchaser(Product product)
-        {
-            if (product.PurchaserList.Count >= 5)
-            {
-                MessageBox.Show("一个SPU内最多允许5个采购商");
-                return;
-            }
-
-            OpenBindingView(product, string.Empty, string.Empty, string.Empty);
+            OpenBindingView(product, string.Empty, null);
         }
 
-        private void EditPurchaser(Purchaser purchaser)
+        private void EditScheme(PurchaseScheme purchaseScheme)
         {
-            var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId);
-            OpenBindingView(product, purchaser.Id, purchaser.Id2, purchaser.Name);
+            var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId);
+            OpenBindingView(product, purchaseScheme.SkuId, purchaseScheme.Id);
         }
 
-        private void DeletePurchaser(Purchaser purchaser)
+        private void DeleteScheme(PurchaseScheme purchaseScheme)
         {
-            if (MessageBox.Show("确认删除该采购商吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
+            if (MessageBox.Show("确定删除该采购方案吗?", "提示", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
                 return;
             IsLoading = true;
-            Task.Factory.StartNew(() =>
-            {
-                var response = purchaseService.DeletePurchaser(purchaser.ProductId, purchaser.Id);
-                IsLoading = false;
-                if (response.Success)
-                {
-                    App.Current.Dispatcher.BeginInvoke((Action)delegate
-                    {
-                        var product = ProductList.FirstOrDefault(p => p.Id == purchaser.ProductId);
-                        if (product != null)
+            Task.Factory.StartNew(() => purchaseService.DeletePurchaseScheme(purchaseScheme.Id))
+                        .ContinueWith(t =>
                         {
-                            foreach (var sku in product.SkuList)
+                            IsLoading = false;
+                            var response = t.Result;
+                            if (!response.Success)
                             {
-                                var deleteScheme = sku.PurchaseSchemeList.FirstOrDefault(s => s.PurchaserId == purchaser.Id);
-                                if (deleteScheme != null)
-                                    sku.PurchaseSchemeList.Remove(deleteScheme);
+                                App.Current.Dispatcher.BeginInvoke((Action)delegate
+                                {
+                                    MessageBox.Show(response.Msg, "删除采购方案");
+                                });
+                                return;
                             }
-                            product.PurchaserList.Remove(purchaser);
-                        }
-                        MessageBox.Show("采购商删除成功", "提示");
-                    });
-                }
-                else
-                {
-                    App.Current.Dispatcher.BeginInvoke((Action)delegate
-                    {
-                        MessageBox.Show(response.Msg, "采购商删除");
-                    });
-                }
-            });
+                            App.Current.Dispatcher.Invoke(() =>
+                            {
+                                var product = ProductList.FirstOrDefault(p => p.Id == purchaseScheme.ProductId);
+                                if (product != null)
+                                {
+                                    var sku = product.SkuList.FirstOrDefault(s => s.Id == purchaseScheme.SkuId);
+                                    if (sku != null)
+                                    {
+                                        sku.PurchaseSchemeList.Remove(purchaseScheme);
+                                    }
+                                }
+                                MessageBox.Show("采购方案删除成功", "提示");
+                            });
+                        });
         }
 
-        private void OpenBindingView(Product product, string purchaserId, string purchaserId2, string purchaserName)
+        private void OpenBindingView(Product product, string skuId, long? schemeId)
         {
-            var skuList = product.SkuList;
-            bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel);
-            var bindingView = new BindingPurchaseProduct();
+            var skuList = string.IsNullOrEmpty(skuId) ? product.SkuList : product.SkuList.Where(s => s.Id == skuId).ToList();
+            //bindingPurchaseProduct.SetData(skuList, purchaserId, purchaserId2, purchaserName, product.SelectedPurchasePlatformModel);
+            //bindingPurchaseProduct.SetData();
+            var bindingView = new BindingPurchaseProduct(skuList, schemeId);
             var r = bindingView.ShowDialog();
             if (r == true)
             {
@@ -328,7 +384,7 @@ namespace BBWYB.Client.ViewModels
                     IsLoading = false;
                     App.Current.Dispatcher.BeginInvoke((Action)delegate
                     {
-                        ExtractPurchaser(product.Id);
+                        //ExtractPurchaser(product.Id);
                     });
                 });
             }
@@ -345,7 +401,7 @@ namespace BBWYB.Client.ViewModels
             Task.Factory.StartNew(() => LoadPurchaseScheme(product.SkuList, platform))
                         .ContinueWith(t =>
                         {
-                            App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId));
+                            //App.Current.Dispatcher.Invoke(() => ExtractPurchaser(productId));
                             IsLoading = false;
                         });
         }
diff --git a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml
index b1ab4a4..31fdd4a 100644
--- a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml
+++ b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml
@@ -25,7 +25,7 @@
             <RowDefinition Height="40"/>
         </Grid.RowDefinitions>
         <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
-            <Run Text="{Binding PurchaserName}"/>
+            <Run Text="{Binding SchemeId}"/>
             <Run Text="绑定采购商品"/>
         </TextBlock>
         <ListBox x:Name="listbox_skuList" ItemsSource="{Binding ProductSkuList}"
diff --git a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml.cs b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml.cs
index 666ed7e..3790072 100644
--- a/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml.cs
+++ b/BBWYB.Client/Views/Ware/BindingPurchaseProduct.xaml.cs
@@ -1,6 +1,9 @@
-using CommunityToolkit.Mvvm.Messaging;
+using BBWYB.Client.Models;
+using BBWYB.Client.ViewModels;
+using CommunityToolkit.Mvvm.Messaging;
 using CommunityToolkit.Mvvm.Messaging.Messages;
 using SJ.Controls;
+using System.Collections.Generic;
 using System.Windows;
 
 namespace BBWYB.Client.Views.Ware
@@ -10,18 +13,12 @@ namespace BBWYB.Client.Views.Ware
     /// </summary>
     public partial class BindingPurchaseProduct : BWindow
     {
-        public BindingPurchaseProduct()
+        private BindingPurchaseProductViewModel bindingVM;
+        public BindingPurchaseProduct(IList<ProductSku> productSkuList, long? schemeId)
         {
             InitializeComponent();
-            //Messenger.Default.Register<bool>(this, "BindingPurchaseProduct_Close", (x) =>
-            // {
-            //     this.Dispatcher.Invoke(() =>
-            //     {
-            //         this.DialogResult = x;
-            //         this.Close();
-            //     });
-            // });
-
+            bindingVM = this.DataContext as BindingPurchaseProductViewModel;
+            bindingVM.SetData(productSkuList, schemeId);
             WeakReferenceMessenger.Default.Register<Message_BindingPurchaseProductClose>(this, (o, x) =>
             {
                 this.Dispatcher.Invoke(() =>
diff --git a/BBWYB.Client/Views/Ware/WareManager.xaml b/BBWYB.Client/Views/Ware/WareManager.xaml
index 505200b..c19224b 100644
--- a/BBWYB.Client/Views/Ware/WareManager.xaml
+++ b/BBWYB.Client/Views/Ware/WareManager.xaml
@@ -42,7 +42,7 @@
                 <c:BButton Content="搜索" Padding="10,0" Margin="5,0,0,0"
                            Command="{Binding SearchCommand}"/>
             </StackPanel>
-            
+
             <Border Grid.Row="2" BorderBrush="{StaticResource Border.Brush}" BorderThickness="1,1,1,0"
                     Background="#F2F2F2">
                 <Grid>
@@ -79,7 +79,7 @@
 
                 </Grid>
             </Border>
-            
+
             <ListBox x:Name="listbox_productList"
                      Grid.Row="3" 
                      ItemsSource="{Binding ProductList}"
@@ -94,10 +94,10 @@
                                 <RowDefinition Height="30"/>
                                 <RowDefinition/>
                             </Grid.RowDefinitions>
-                            <Grid.ColumnDefinitions>
+                            <!--<Grid.ColumnDefinitions>
                                 <ColumnDefinition/>
                                 <ColumnDefinition Width="280"/>
-                            </Grid.ColumnDefinitions>
+                            </Grid.ColumnDefinitions>-->
 
                             <Grid Background="#F2F2F2" Grid.ColumnSpan="2">
                                 <StackPanel Orientation="Horizontal">
@@ -110,8 +110,11 @@
                                     <Run Text="{Binding ProductItemNum}"/>
                                     </TextBlock>
                                 </StackPanel>
-                                <c:BButton HorizontalAlignment="Right" Content="添加采购商" Width="110"
-                                           Command="{Binding DataContext.AddPurchaserCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" CommandParameter="{Binding }"/>
+                                <!--<c:BButton HorizontalAlignment="Right" Content="添加采购商" Width="110"
+                                           Command="{Binding DataContext.AddPurchaserCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" CommandParameter="{Binding }"/>-->
+
+                                <c:BButton HorizontalAlignment="Right" Content="添加采购方案" Width="110"
+                                           Command="{Binding DataContext.AddSchemeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" CommandParameter="{Binding }"/>
                             </Grid>
 
                             <ListBox x:Name="listbox_sku" Grid.Row="1" ItemsSource="{Binding SkuList}" 
@@ -126,7 +129,7 @@
                                                 Width="{Binding ActualWidth,ElementName=listbox_sku}">
                                             <Grid Height="150">
                                                 <Grid.ColumnDefinitions>
-                                                    <ColumnDefinition Width="300"/>
+                                                    <ColumnDefinition Width="299"/>
                                                     <ColumnDefinition Width="80"/>
                                                     <ColumnDefinition/>
                                                 </Grid.ColumnDefinitions>
@@ -177,6 +180,8 @@
                                                                     <ColumnDefinition Width="0.15*"/>
                                                                     <ColumnDefinition Width="0.1*"/>
                                                                     <ColumnDefinition Width="50"/>
+                                                                    <ColumnDefinition Width="170"/>
+                                                                    <ColumnDefinition Width="110"/>
                                                                 </Grid.ColumnDefinitions>
                                                                 <TextBlock Text="{Binding PurchaseProductId1}" Style="{StaticResource middleTextBlock}"/>
                                                                 <TextBlock Grid.Column="1" Style="{StaticResource middleTextBlock}"
@@ -208,6 +213,34 @@
                                                                     <!--毛利率-->
                                                                 </Border>
 
+                                                                <TextBlock Grid.Column="9" Style="{StaticResource middleTextBlock}" 
+                                                                           Text="{Binding PurchaserName}">
+                                                                    <TextBlock.ToolTip>
+                                                                        <ToolTip Style="{StaticResource OrderCouponToolipStyle}">
+                                                                            <ListBox Style="{StaticResource NoScrollViewListBoxStyle}"
+                                                                                     ItemsSource="{Binding PurchaserList}"
+                                                                                     ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
+                                                                                     Foreground="{StaticResource Text.Color}">
+                                                                                <ListBox.ItemTemplate>
+                                                                                    <DataTemplate>
+                                                                                        <TextBlock Text="{Binding Name}"/>
+                                                                                    </DataTemplate>
+                                                                                </ListBox.ItemTemplate>
+                                                                            </ListBox>
+                                                                        </ToolTip>
+                                                                    </TextBlock.ToolTip>
+                                                                </TextBlock>
+
+                                                                <StackPanel Orientation="Horizontal" Grid.Column="10"
+                                                                            HorizontalAlignment="Center">
+                                                                    <c:BButton Style="{StaticResource LinkButton}"
+                                                                               Content="编辑"
+                                                                               Command="{Binding DataContext.EditSchemeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" CommandParameter="{Binding }"/>
+                                                                    <c:BButton Style="{StaticResource LinkButton}"
+                                                                               Content="删除" Margin="10,0,0,0"
+                                                                               Command="{Binding DataContext.DeleteSchemeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" CommandParameter="{Binding }"/>
+                                                                </StackPanel>
+
                                                                 <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
                                                                 <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1"/>
                                                                 <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2"/>
@@ -216,7 +249,9 @@
                                                                 <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5"/>
                                                                 <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6"/>
                                                                 <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="7"/>
-                                                                <Border Height="1" Grid.ColumnSpan="9" Background="{StaticResource Border.Brush}" VerticalAlignment="Bottom"/>
+                                                                <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="8"/>
+                                                                <Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="9"/>
+                                                                <Border Height="1" Grid.ColumnSpan="11" Background="{StaticResource Border.Brush}" VerticalAlignment="Bottom"/>
                                                             </Grid>
                                                         </DataTemplate>
                                                     </ListBox.ItemTemplate>
@@ -269,7 +304,7 @@
                                 </ListBox.ItemTemplate>
                             </ListBox>
 
-                            <ListBox x:Name="listbox_purchaser" ItemsSource="{Binding PurchaserList}"
+                            <!--<ListBox x:Name="listbox_purchaser" ItemsSource="{Binding PurchaserList}"
                                      Grid.Row="1" Grid.Column="1"
                                      ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
                                      Style="{StaticResource NoScrollViewListBoxStyle}"
@@ -310,13 +345,13 @@
 
                                     </DataTemplate>
                                 </ListBox.ItemTemplate>
-                            </ListBox>
+                            </ListBox>-->
 
                         </Grid>
                     </DataTemplate>
                 </ListBox.ItemTemplate>
             </ListBox>
-            
+
             <c:PageControl PageIndex="{Binding PageIndex}"
                            PageSize="5"
                            RecordCount="{Binding ProductCount}"
diff --git a/BBWYB.Client/appsettings.json b/BBWYB.Client/appsettings.json
index cd45795..67f255d 100644
--- a/BBWYB.Client/appsettings.json
+++ b/BBWYB.Client/appsettings.json
@@ -1,6 +1,6 @@
 {
-  // "BBWYApiHost": "http://localhost:5000",
-  "BBWYApiHost": "http://bbwyb.qiyue666.com",
+  "BBWYApiHost": "http://localhost:5000",
+  //"BBWYApiHost": "http://bbwyb.qiyue666.com",
   "MDSApiHost": "http://mdsapi.qiyue666.com",
   "BBWYCApiHost": "http://bbwytest.qiyue666.com",
   "QKApiHost": "http://localhost:8080"
diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs
index c741111..9c2bdbe 100644
--- a/BBWYB.Server.API/Controllers/DataRepairController.cs
+++ b/BBWYB.Server.API/Controllers/DataRepairController.cs
@@ -25,15 +25,6 @@ namespace BBWYB.Server.API.Controllers
             dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode);
         }
 
-        /// <summary>
-        /// 修复采购商信息
-        /// </summary>
-        [HttpPost]
-        public void SupplementPurchaserInfo()
-        {
-            dataRepairBusiness.SupplementPurchaserInfo();
-        }
-
         /// <summary>
         /// 修复订单Sku成本
         /// </summary>
diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
index 1444c88..1b87505 100644
--- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
+++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
@@ -38,15 +38,15 @@ namespace BBWYB.Server.API.Controllers
             return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
         }
 
-        /// <summary>
-        /// 删除采购商
-        /// </summary>
-        /// <param name="deletePurchaseSchemeRequest"></param>
-        [HttpDelete]
-        public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
-        {
-            purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest);
-        }
+        ///// <summary>
+        ///// 删除采购商
+        ///// </summary>
+        ///// <param name="deletePurchaseSchemeRequest"></param>
+        //[HttpDelete]
+        //public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
+        //{
+        //    purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest);
+        //}
 
         /// <summary>
         /// 删除采购方案
@@ -58,16 +58,16 @@ namespace BBWYB.Server.API.Controllers
             purchaseSchemeBusiness.DeletePurchaseScheme(schemeId);
         }
 
-        /// <summary>
-        /// 查询共有采购商
-        /// </summary>
-        /// <param name="querySchemeRequest"></param>
-        /// <returns></returns>
-        [HttpPost]
-        public IList<Purchaser> GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest)
-        {
-            return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest);
-        }
+        ///// <summary>
+        ///// 查询共有采购商
+        ///// </summary>
+        ///// <param name="querySchemeRequest"></param>
+        ///// <returns></returns>
+        //[HttpPost]
+        //public IList<Purchaser> GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest)
+        //{
+        //    return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest);
+        //}
 
         /// <summary>
         /// 查询采购方案中采购Sku的基本信息
diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
index f70c444..dcf2821 100644
--- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
+++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
@@ -38,73 +38,6 @@ namespace BBWYB.Server.Business
                 purchaseOrderBusiness.OnSomeOnePurchaseOrderChanged(pid, false);
         }
 
-        public void SupplementPurchaserInfo()
-        {
-            var purlList = fsql.Select<PurchaseSchemeProduct, PurchaseScheme, Purchaser>()
-                                         .InnerJoin((psp, ps, p) => psp.SkuPurchaseSchemeId == ps.Id)
-                                         .InnerJoin((psp, ps, p) => ps.PurchaserId == p.Id)
-                                         .Where((psp, ps, p) => ps.PurchasePlatform == Enums.Platform.阿里巴巴 && string.IsNullOrEmpty(p.Id2))
-                                         .ToList((psp, ps, p) => new
-                                         {
-                                             //psp.PurchaseUrl,
-                                             psp.PurchaseProductId,
-                                             p.Id
-                                         });
-            var groups = purlList.GroupBy(p => p.Id);
-            Console.WriteLine(groups.Count());
-            IList<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>();
-            int i = 1;
-            foreach (var group in groups)
-            {
-                var purchaseId = group.Key;
-                var productId = group.Max(p => p.PurchaseProductId);
-                Thread.Sleep(1000);
-                Console.WriteLine();
-                Console.ForegroundColor = ConsoleColor.Red;
-                Console.WriteLine($"index {i}");
-                Console.ResetColor();
-                Console.WriteLine();
-                var response = purchaseSchemeBusiness.GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest()
-                {
-                    FirstApiMode = Enums.PurchaseProductAPIMode.Spider,
-                    Platform = Enums.Platform.阿里巴巴,
-                    PriceMode = Enums.PurchaseOrderMode.批发,
-                    PurchaseProductId = productId
-                });
-                if (!string.IsNullOrEmpty(response?.Purchaser?.Id2))
-                {
-                    if (response.Purchaser.Id2.Length > 20)
-                        Console.WriteLine(response.Purchaser.Id2);
-                    var update = fsql.Update<Purchaser>(purchaseId).Set(p => p.Id2, response.Purchaser.Id2);
-                    updatePurchaserList.Add(update);
-                }
-                i++;
-
-                if (updatePurchaserList.Count >= 10)
-                {
-                    fsql.Transaction(() =>
-                    {
-                        foreach (var update in updatePurchaserList)
-                            update.ExecuteAffrows();
-                    });
-                    updatePurchaserList.Clear();
-                    Console.WriteLine();
-                    Console.ForegroundColor = ConsoleColor.Red;
-                    Console.WriteLine("更新数据库更新");
-                    Console.ResetColor();
-                    Console.WriteLine();
-                }
-            }
-
-            if (updatePurchaserList.Count() > 0)
-            {
-                fsql.Transaction(() =>
-                {
-                    foreach (var update in updatePurchaserList)
-                        update.ExecuteAffrows();
-                });
-            }
-        }
 
         public void SupplementOrderSkuCost()
         {
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index d91f624..a83adf7 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -36,6 +36,7 @@ namespace BBWYB.Server.Business
         private Lazy<JDBusiness> jdBusinessLazy;
         private Lazy<OP_PlatformClientFactory> opPlatformClientFactoryLazy;
         private Lazy<VenderBusiness> venderBusinessLazy;
+        private Lazy<PurchaseSchemeBusiness> purchaseSchemeBusinessLazy;
 
         private PP_PlatformClientFactory ppPlatformClientFactory => pplatformClientFactoryLazy.Value;
         private TaskSchedulerManager taskSchedulerManager => taskSchedulerManagerLazy.Value;
@@ -50,6 +51,8 @@ namespace BBWYB.Server.Business
 
         private JDBusiness jdBusiness => jdBusinessLazy.Value;
 
+        private PurchaseSchemeBusiness purchaseSchemeBusiness => purchaseSchemeBusinessLazy.Value;
+
         private IList<Enums.OrderState> cantPurchaseOrderStateList;
 
         public PurchaseOrderBusiness(IFreeSql fsql,
@@ -68,6 +71,7 @@ namespace BBWYB.Server.Business
             jdBusinessLazy = new Lazy<JDBusiness>(() => serviceProvider.GetService<JDBusiness>());
             opPlatformClientFactoryLazy = new Lazy<OP_PlatformClientFactory>(() => serviceProvider.GetService<OP_PlatformClientFactory>());
             venderBusinessLazy = new Lazy<VenderBusiness>(() => serviceProvider.GetService<VenderBusiness>());
+            purchaseSchemeBusinessLazy = new Lazy<PurchaseSchemeBusiness>(() => serviceProvider.GetService<PurchaseSchemeBusiness>());
             cantPurchaseOrderStateList = new List<Enums.OrderState>()
             {
                 Enums.OrderState.已取消,
@@ -745,12 +749,13 @@ namespace BBWYB.Server.Business
                 {
                     if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
                     {
-                        #region 补齐采购SKU
+                        #region 补齐采购SKU和采购关系
                         var purchaseAccount = dbPurchaseAccountList.FirstOrDefault(pa => pa.Id == purchaseOrder.PurchaseAccountId ||
                                                                                          pa.AccountName == purchaseOrder.PurchaseAccountName);
                         if (purchaseAccount == null)
                             throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效的采购账号");
 
+                        #region 查询1688采购单
                         var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)purchaseOrder.PurchasePlatform);
                         var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
                         {
@@ -759,6 +764,7 @@ namespace BBWYB.Server.Business
                             AppToken = purchaseAccount.AppToken,
                             OrderId = purchaseOrder.PurchaseOrderId
                         });
+                        #endregion
 
                         #region 处理采购商Id
                         var purchaserId = purchaseOrderSimpleInfo.PurchaserId;
@@ -778,58 +784,29 @@ namespace BBWYB.Server.Business
 
                         #region 匹配采购方案
                         var skuIds = purchaseOrder.AssocationOrderCostDetailList.Select(ocd => ocd.SkuId).ToList();
-                        var purchaseSchemeSkuList = fsql.Select<Purchaser, PurchaseScheme, PurchaseSchemeProductSku>()
-                                                        .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId)
-                                                        .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId)
-                                                        .Where((p, ps, pss) => p.Id == purchaserId)
-                                                        .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴)
-                                                        .Where((p, ps, pss) => skuIds.Contains(pss.SkuId))
-                                                        .ToList((p, ps, pss) => new
-                                                        {
-                                                            pss.Id,
-                                                            pss.SkuId,
-                                                            pss.ProductId,
-                                                            pss.PurchaseProductId,
-                                                            pss.PurchaseSkuId,
-                                                            pss.PurchaseSkuSpecId,
-                                                            pss.SkuPurchaseSchemeId
-                                                        });
-                        if (purchaseSchemeSkuList.Count() == 0)
-                            throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案");
-                        #endregion
-
-
-                        foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList)
+                        var purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest()
                         {
-                            var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo()
-                            {
-                                Id = purchaseOrderSku.OrderSkuId,
-                                CreateTime = DateTime.Now,
-                                OrderId = request.OrderId,
-                                PurchaseOrderId = purchaseOrder.PurchaseOrderId,
-                                PurchaseProductId = purchaseOrderSku.ProductId,
-                                PurchaseSkuId = purchaseOrderSku.SkuId,
-                                ShopId = request.ShopId
-                            };
-                            insertOrderPurchaseSkuInfoList.Add(orderPurchaseSkuInfo);
-                        }
+                            ShopId = dbOrder.ShopId,
+                            SkuIdList = skuIds
+                        });
+                        if (purchaseSchemeList.Count() == 0)
+                            throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案");
                         #endregion
 
                         #region 补齐采购关系
                         foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList)
                         {
-                            var currentPurchaseSchemeSkuList = purchaseSchemeSkuList.Where(x => x.SkuId == assOrderCostDetail.SkuId).ToList();
-                            if (currentPurchaseSchemeSkuList == null || currentPurchaseSchemeSkuList.Count() == 0)
+                            var matchResultList = MatchPurchaseScheme(assOrderCostDetail.SkuId, 
+                                                                      assOrderCostDetail.PurchaseQuantity, 
+                                                                      purchaserId,
+                                                                      purchaseSchemeList, 
+                                                                      purchaseOrderSimpleInfo);
+                            if (matchResultList.Count() == 0)
                                 throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId} 采购商Id {purchaserId} Sku{assOrderCostDetail.SkuId}缺少采购方案");
 
-                            var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId);
-                            foreach (var currentPurchaseSchemeSku in currentPurchaseSchemeSkuList)
+                            foreach (var cargoParam in matchResultList)
                             {
-                                var purchaseSkuFromApi = purchaseOrderSimpleInfo.ItemList.FirstOrDefault(x => x.SkuId == currentPurchaseSchemeSku.PurchaseSkuId);
-                                if (purchaseSkuFromApi == null)
-                                {
-                                    throw new BusinessException($"Sku{assOrderCostDetail.SkuId}使用了采购方案{currentPurchaseSchemeSku.SkuPurchaseSchemeId}下的采购Sku{currentPurchaseSchemeSku.PurchaseSkuId},而且在采购单{purchaseOrder.PurchaseOrderId}的商品明细中没有找到该采购sku");
-                                }
+                                var dbOrderSku = dbOrderSkuList.FirstOrDefault(osku => osku.SkuId == assOrderCostDetail.SkuId);
                                 var orderPurchaseRelationInfo = new OrderPurchaseRelationInfo()
                                 {
                                     Id = idGenerator.NewLong(),
@@ -837,16 +814,37 @@ namespace BBWYB.Server.Business
                                     CreateTime = DateTime.Now,
                                     OrderId = assOrderCostDetail.OrderId,
                                     PurchaseOrderId = purchaseOrder.PurchaseOrderId,
-                                    PurchaseSkuId = currentPurchaseSchemeSku.PurchaseSkuId,
-                                    PurchaseProductId = currentPurchaseSchemeSku.PurchaseProductId,
-                                    PurchaseSpecId = currentPurchaseSchemeSku.PurchaseSkuSpecId,
-                                    SchemeId = currentPurchaseSchemeSku.SkuPurchaseSchemeId,
+                                    PurchaseSkuId = cargoParam.SkuId,
+                                    PurchaseProductId = cargoParam.ProductId,
+                                    PurchaseSpecId = cargoParam.SpecId,
+                                    SchemeId = cargoParam.SchemeId,
                                     Quantity = assOrderCostDetail.PurchaseQuantity,
                                     SourceSkuId = dbOrderSku.BelongSkuId
                                 };
                                 insertOrderPurchaseRelationInfoList.Add(orderPurchaseRelationInfo);
+
                             }
                         }
+
+                        #region 补齐采购SKU
+                        foreach (var purchaseOrderSku in purchaseOrderSimpleInfo.ItemList)
+                        {
+                            var orderPurchaseSkuInfo = new OrderPurchaseSkuInfo()
+                            {
+                                Id = purchaseOrderSku.OrderSkuId,
+                                CreateTime = DateTime.Now,
+                                OrderId = request.OrderId,
+                                PurchaseOrderId = purchaseOrder.PurchaseOrderId,
+                                PurchaseProductId = purchaseOrderSku.ProductId,
+                                PurchaseSkuId = purchaseOrderSku.SkuId,
+                                ShopId = request.ShopId
+                            };
+                            insertOrderPurchaseSkuInfoList.Add(orderPurchaseSkuInfo);
+                        }
+                        #endregion
+
+                        #endregion
+
                         #endregion
                     }
 
@@ -1113,6 +1111,10 @@ namespace BBWYB.Server.Business
             if (request.PurchasePlatform != Enums.Platform.阿里巴巴)
                 return null;
 
+            var order = fsql.Select<Order>(request.OrderId).ToOne();
+            if (order == null)
+                throw new BusinessException("订单不存在");
+
             var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.PurchasePlatform);
             var purchaseOrderSimpleInfo = client.QueryOrderDetail(new PP_QueryOrderDetailRequest()
             {
@@ -1143,46 +1145,28 @@ namespace BBWYB.Server.Business
 
             #region 查询订单sku所有采购方案
             var skuIds = dbOrderSkuList.Select(osku => osku.SkuId).ToList();
-            var purchaseSchemeSkuList = fsql.Select<Purchaser, PurchaseScheme, PurchaseSchemeProductSku>()
-                                            .InnerJoin((p, ps, pss) => p.Id == ps.PurchaserId)
-                                            .InnerJoin((p, ps, pss) => ps.Id == pss.SkuPurchaseSchemeId)
-                                            .Where((p, ps, pss) => p.Id == purchaserId)
-                                            .Where((p, ps, pss) => ps.PurchasePlatform == Enums.Platform.阿里巴巴)
-                                            .Where((p, ps, pss) => skuIds.Contains(pss.SkuId))
-                                            .ToList((p, ps, pss) => new
-                                            {
-                                                pss.Id,
-                                                pss.SkuId,
-                                                pss.ProductId,
-                                                pss.PurchaseProductId,
-                                                pss.PurchaseSkuId,
-                                                pss.PurchaseSkuSpecId,
-                                                pss.SkuPurchaseSchemeId
-                                            });
-            if (purchaseSchemeSkuList.Count() == 0)
-                throw new BusinessException($"采购单{request.PurchaseOrderId} 采购商Id{purchaserId} 未匹配到采购方案");
+            var purchaseSchemeList = purchaseSchemeBusiness.GetPurchaseSchemeList(new QuerySchemeRequest()
+            {
+                ShopId = order.ShopId,
+                SkuIdList = skuIds
+            });
+            if (purchaseSchemeList.Count() == 0)
+                throw new BusinessException("未匹配到采购方案");
             #endregion
 
             #region 匹配采购单所使用到的采购方案
-            var assocationOrderCostDetailList = new List<AssocationOrderCostDetailResponse>();
-            var purchaseSchemeGroups = purchaseSchemeSkuList.GroupBy(s => s.SkuPurchaseSchemeId);
             var cargoParamList = new List<CargoParamRequest>();
-            foreach (var schemeGroup in purchaseSchemeGroups)
+            foreach (var orderSku in dbOrderSkuList)
             {
-                var schemePurchaseSkuList = schemeGroup.ToList();
-                if (schemePurchaseSkuList.Any(psku => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == psku.PurchaseSkuId) == 0))
-                    continue;
-                cargoParamList.AddRange(schemePurchaseSkuList.Select(x => new CargoParamRequest()
-                {
-                    BelongSkuId = x.SkuId,
-                    ProductId = x.PurchaseProductId,
-                    SkuId = x.PurchaseSkuId,
-                    Quantity = dbOrderSkuList.FirstOrDefault(s => s.SkuId == x.SkuId)?.ItemTotal ?? 1,
-                    SchemeId = x.SkuPurchaseSchemeId,
-                    SpecId = x.PurchaseSkuSpecId
-                }));
+                var matchResultList = MatchPurchaseScheme(orderSku.SkuId, orderSku.ItemTotal ?? 1, purchaserId, purchaseSchemeList, purchaseOrderSimpleInfo);
+                if (matchResultList.Count() > 0)
+                    cargoParamList.AddRange(matchResultList);
             }
 
+            if (cargoParamList.Count() == 0)
+                throw new BusinessException("未匹配到采购方案");
+
+            var assocationOrderCostDetailList = new List<AssocationOrderCostDetailResponse>();
             var belongSkuGroups = cargoParamList.GroupBy(p => p.BelongSkuId);
             var purchaseSkuTotalQuantity = cargoParamList.Sum(x => x.Quantity);
             foreach (var belongSkuGroup in belongSkuGroups)
@@ -1199,8 +1183,6 @@ namespace BBWYB.Server.Business
                 {
                     var currentPurchaseSkuProductAmount = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId)
                                                                                    .Sum(p => p.ProductAmount);
-                    //var currentPurchaseSkuTotalQuantity = purchaseOrderSimpleInfo.ItemList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId)
-                    //                                                               .Sum(p => p.Quantity);
 
                     var currentPurchaseSkuTotalQuantity = cargoParamList.Where(p => p.SkuId == currentOrderSkuCargo.SkuId)
                                                                         .Sum(p => p.Quantity);
@@ -2611,7 +2593,7 @@ namespace BBWYB.Server.Business
                     if (order.IntoStoreType == Enums.IntoStoreType.厂商代发入仓 &&
                         state == "QianShou" &&
                         order.OrderState == Enums.OrderState.待验收 &&
-                       inStoreOrderCheckTaskList != null && 
+                       inStoreOrderCheckTaskList != null &&
                        !inStoreOrderCheckTaskList.Any(x => x.OrderId == order.Id))
                     {
                         insertInStoreOrderCheckTaskList.Add(new InStoreOrderCheckTask()
@@ -2978,5 +2960,60 @@ namespace BBWYB.Server.Business
             }
         }
 
+        /// <summary>
+        /// 匹配采购方案
+        /// </summary>
+        /// <param name="skuId"></param>
+        /// <param name="itemTotal"></param>
+        /// <param name="purchaserId"></param>
+        /// <param name="purchaseSchemeList"></param>
+        /// <param name="purchaseOrderSimpleInfo"></param>
+        /// <returns></returns>
+        private IList<CargoParamRequest> MatchPurchaseScheme(string skuId,
+                                                             int itemTotal,
+                                                             string purchaserId,
+                                                             IList<PurchaseSchemeResponse> purchaseSchemeList,
+                                                             PP_QueryOrderDetailResponse purchaseOrderSimpleInfo)
+        {
+            List<CargoParamRequest> cargoParamList = new List<CargoParamRequest>();
+            var currentSkuSchemeList = purchaseSchemeList.Where(ps => ps.SkuId == skuId).ToList();
+            if (currentSkuSchemeList.Count() > 0)
+            {
+                foreach (var scheme in currentSkuSchemeList)
+                {
+                    var samePurchaserProductList = scheme.PurchaseSchemeProductList.Where(psp => psp.PurchaserId == purchaserId).ToList();
+                    if (samePurchaserProductList.Count() == 0)
+                        continue;
+
+                    bool isMatch = true;
+                    foreach (var schemeProduct in samePurchaserProductList)
+                    {
+                        if (schemeProduct.PurchaseSchemeProductSkuList.Any(pss => purchaseOrderSimpleInfo.ItemList.Count(x => x.SkuId == pss.PurchaseSkuId) == 0))
+                        {
+                            isMatch = false;
+                            break;
+                        }
+                    }
+
+                    if (isMatch)
+                    {
+                        foreach (var schemeProduct in samePurchaserProductList)
+                        {
+                            cargoParamList.AddRange(schemeProduct.PurchaseSchemeProductSkuList.Select(pss => new CargoParamRequest()
+                            {
+                                BelongSkuId = pss.SkuId,
+                                ProductId = pss.PurchaseProductId,
+                                SkuId = pss.PurchaseSkuId,
+                                SchemeId = pss.SkuPurchaseSchemeId,
+                                SpecId = pss.PurchaseSkuSpecId,
+                                Quantity = (itemTotal * pss.PurchaseRatio) ?? 1
+                            }));
+                        }
+                        break;
+                    }
+                }
+            }
+            return cargoParamList;
+        }
     }
 }
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
index 68ec95e..fd83cdb 100644
--- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -124,6 +124,12 @@ namespace BBWYB.Server.Business
             }
             #endregion
 
+            foreach (var purchaseProductSku in addPurchaseSchemeProductSkuList)
+            {
+                if (purchaseProductSku.PurchaseRatio == null)
+                    purchaseProductSku.PurchaseRatio = 1;
+            }
+
             fsql.Transaction(() =>
             {
                 if (newPurchaserList.Count > 0)
@@ -148,24 +154,32 @@ namespace BBWYB.Server.Business
         }
 
         /// <summary>
-        /// 获取采购方案(不含采购配配件基本信息)
+        /// 获取采购方案
         /// </summary>
         /// <param name="querySchemeRequest"></param>
         /// <returns></returns>
-        public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest)
+        public IList<PurchaseSchemeResponse> GetPurchaseSchemeList(QuerySchemeRequest request)
         {
             var select = fsql.Select<PurchaseScheme>();
-            if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0)
-                select = select.Where(ps => ps.Id == querySchemeRequest.SchemeId);
-            else if (querySchemeRequest.SchemeIdList != null && querySchemeRequest.SchemeIdList.Count() > 0)
-                select = select.Where(ps => querySchemeRequest.SchemeIdList.Contains(ps.Id));
+            if (request.SchemeId != null && request.SchemeId != 0)
+                select = select.Where(ps => ps.Id == request.SchemeId);
+            else if (request.SchemeIdList != null && request.SchemeIdList.Count() > 0)
+                select = select.Where(ps => request.SchemeIdList.Contains(ps.Id));
             else
             {
-                select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, ps => ps.ShopId == querySchemeRequest.ShopId)
-                               .WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, ps => querySchemeRequest.SkuIdList.Contains(ps.SkuId));
-                //.WhereIf(querySchemeRequest.PurchasePlatform != null, ps => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform);
-            }
+                select = select.WhereIf(request.ShopId != null && request.ShopId != 0, ps => ps.ShopId == request.ShopId)
+                               .WhereIf(request.SkuIdList != null && request.SkuIdList.Count() > 0, ps => request.SkuIdList.Contains(ps.SkuId));
 
+                if (request.PurchasePlatform != null || !string.IsNullOrEmpty(request.PurchaserId))
+                {
+                    select = select.Where(ps => fsql.Select<PurchaseSchemeProduct, Purchaser>()
+                                                    .InnerJoin((psp, p) => psp.PurchaserId == p.Id)
+                                                    .WhereIf(request.PurchasePlatform != null, (psp, p) => p.Platform == request.PurchasePlatform)
+                                                    .WhereIf(!string.IsNullOrEmpty(request.PurchaserId), (psp, p) => psp.PurchaserId == request.PurchaserId)
+                                                    .Where((psp, p) => psp.SkuPurchaseSchemeId == ps.Id).Any());
+                }
+            }
+            var sql = select.ToSql();
             var purchaseSchemeList = select.ToList<PurchaseSchemeResponse>();
 
 
@@ -226,6 +240,42 @@ namespace BBWYB.Server.Business
                         }
                     }
                     #endregion
+
+                    #region 获取采购方案基本信息
+                    if (request.IncludePurchaseSkuBasicInfo == 1)
+                    {
+                        foreach (var schemeProduct in schemeProductList)
+                        {
+                            try
+                            {
+                                var basicInfo = GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest()
+                                {
+                                    FirstApiMode = Enums.PurchaseProductAPIMode.Spider,
+                                    PriceMode = Enums.PurchaseOrderMode.批发,
+                                    Platform = schemeProduct.PurchasePlatform ?? Enums.Platform.阿里巴巴,
+                                    PurchaseProductId = schemeProduct.PurchaseProductId
+                                });
+                                if (basicInfo != null)
+                                {
+                                    foreach (var schemeProductSku in schemeProduct.PurchaseSchemeProductSkuList)
+                                    {
+                                        var basicSku = basicInfo.ItemList.FirstOrDefault(x => x.PurchaseSkuId == schemeProductSku.PurchaseSkuId);
+                                        if (basicSku != null)
+                                        {
+                                            schemeProductSku.PurchaseSkuTitle = basicSku.Title;
+                                            schemeProductSku.PurchaseSkuPrice = basicSku.Price;
+                                            schemeProductSku.PurchaseSkuLogo = basicSku.Logo;
+                                        }
+                                    }
+                                }
+                            }
+                            catch
+                            {
+
+                            }
+                        }
+                    }
+                    #endregion
                 }
             }
             return purchaseSchemeList;
@@ -316,18 +366,18 @@ namespace BBWYB.Server.Business
         //    return fsql.Select<Purchaser>().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList();
         //}
 
-        public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
-        {
-            var purchaseSchemeIdList = fsql.Select<PurchaseScheme>().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId &&
-                                                                                 ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id);
+        //public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
+        //{
+        //    var purchaseSchemeIdList = fsql.Select<PurchaseScheme>().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId &&
+        //                                                                         ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id);
 
-            fsql.Transaction(() =>
-            {
-                fsql.Delete<PurchaseScheme>(purchaseSchemeIdList).ExecuteAffrows();
-                fsql.Delete<PurchaseSchemeProduct>().Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)).ExecuteAffrows();
-                fsql.Delete<PurchaseSchemeProductSku>().Where(psps => purchaseSchemeIdList.Contains(psps.SkuPurchaseSchemeId)).ExecuteAffrows();
-            });
-        }
+        //    fsql.Transaction(() =>
+        //    {
+        //        fsql.Delete<PurchaseScheme>(purchaseSchemeIdList).ExecuteAffrows();
+        //        fsql.Delete<PurchaseSchemeProduct>().Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)).ExecuteAffrows();
+        //        fsql.Delete<PurchaseSchemeProductSku>().Where(psps => purchaseSchemeIdList.Contains(psps.SkuPurchaseSchemeId)).ExecuteAffrows();
+        //    });
+        //}
 
         public void DeletePurchaseScheme(long schemeId)
         {
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs
index 9bdfd77..14b9bb5 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs
@@ -21,5 +21,10 @@
         /// 采购Ske SpecId (1688独有)
         /// </summary>
         public string PurchaseSkuSpecId { get; set; }
+
+        /// <summary>
+        /// 采购配比
+        /// </summary>
+        public int? PurchaseRatio { get; set; }
     }
 }
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
index 8924508..0c2c4f1 100644
--- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
@@ -18,14 +18,19 @@ namespace BBWYB.Server.Model.Dto
 
         public IList<string> SkuIdList { get; set; }
 
-        ///// <summary>
-        ///// 采购商Id, 可空
-        ///// </summary>
-        //public string PurchaserId { get; set; }
+        /// <summary>
+        /// 采购商Id, 只要其中一个采购商品满足采购商条件则命中查询
+        /// </summary>
+        public string PurchaserId { get; set; }
 
-        ///// <summary>
-        ///// 采购平台
-        ///// </summary>
-        //public Enums.Platform? PurchasePlatform { get; set; }
+        /// <summary>
+        /// 采购平台, 只要其中一个采购商品满足平台条件则命中查询
+        /// </summary>
+        public Enums.Platform? PurchasePlatform { get; set; }
+
+        /// <summary>
+        /// 是否包含采购配件的基本信息(单价,Logo,标题等) 是=1 否=0或null
+        /// </summary>
+        public int? IncludePurchaseSkuBasicInfo { get; set; }
     }
 }
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
index 288e9f2..15c33cf 100644
--- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace BBWYB.Server.Model.Dto
+namespace BBWYB.Server.Model.Dto
 {
     public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct
     {
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
index 7374eaa..30942ea 100644
--- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
@@ -1,10 +1,21 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace BBWYB.Server.Model.Dto
+namespace BBWYB.Server.Model.Dto
 {
     public class PurchaseSchemeProductSkuResponse : Model.Db.PurchaseSchemeProductSku
     {
+
+        /// <summary>
+        /// 采购SKU标题 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值
+        /// </summary>
+        public string PurchaseSkuTitle { get; set; }
+
+        /// <summary>
+        /// 采购SKULogo 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值
+        /// </summary>
+        public string PurchaseSkuLogo { get; set; }
+
+        /// <summary>
+        /// 采购SKU单价 仅在查询条件IncludePurchaseSkuBasicInfo=1时具备该值
+        /// </summary>
+        public decimal? PurchaseSkuPrice { get; set; }
     }
 }