Prechádzať zdrojové kódy

Merge branch 'DuGuYang' into develop

lichunlei 3 rokov pred
rodič
commit
3259136140
74 zmenil súbory, kde vykonal 12640 pridanie a 346 odobranie
  1. 119 1
      AppStart/ExcelHelper.cs
  2. 1 0
      AppStart/PublicFunction.cs
  3. 1 0
      AppStart/TemplateViewLocationExpander.cs
  4. 9 8
      Areas/Admin/Controllers/MainServer/ConsumerOrdersController.cs
  5. 10 9
      Areas/Admin/Controllers/MainServer/MerchantAddInfoController.cs
  6. 403 0
      Areas/Admin/Controllers/MainServer/PosMachinesFeeChangeRecordController.cs
  7. 941 0
      Areas/Admin/Controllers/MainServer/PosMachinesTwoChangeController.cs
  8. 8 0
      Areas/Admin/Controllers/MainServer/PosMachinesTwoController.cs
  9. 11 3
      Areas/Admin/Controllers/MainServer/PosMerchantInfoListController.cs
  10. 8 1
      Areas/Admin/Controllers/MainServer/StoreHouseAmountRecordController.cs
  11. 73 33
      Areas/Admin/Controllers/MainServer/StoreHouseController.cs
  12. 319 155
      Areas/Admin/Controllers/MainServer/SysToolsController.cs
  13. 5 0
      Areas/Admin/Controllers/MainServer/UserAccountRecordController.cs
  14. 6 6
      Areas/Admin/Controllers/MainServer/UsersController.cs
  15. 371 0
      Areas/Admin/Controllers/SpServer/ActivateRecordController.cs
  16. 361 0
      Areas/Admin/Controllers/SpServer/BindRecordController.cs
  17. 339 0
      Areas/Admin/Controllers/SpServer/ChangeBindRecordController.cs
  18. 375 0
      Areas/Admin/Controllers/SpServer/TradeFluxRecordController.cs
  19. 375 0
      Areas/Admin/Controllers/SpServer/TradeRecordController.cs
  20. 337 0
      Areas/Admin/Controllers/SpServer/UnBindRecordController.cs
  21. 246 0
      Areas/Admin/Views/MainServer/PosMachinesFeeChangeRecord/Add.cshtml
  22. 250 0
      Areas/Admin/Views/MainServer/PosMachinesFeeChangeRecord/Edit.cshtml
  23. 202 0
      Areas/Admin/Views/MainServer/PosMachinesFeeChangeRecord/Index.cshtml
  24. 203 0
      Areas/Admin/Views/MainServer/PosMachinesTwoChange/Add.cshtml
  25. 215 0
      Areas/Admin/Views/MainServer/PosMachinesTwoChange/Edit.cshtml
  26. 134 0
      Areas/Admin/Views/MainServer/PosMachinesTwoChange/Import.cshtml
  27. 216 0
      Areas/Admin/Views/MainServer/PosMachinesTwoChange/Index.cshtml
  28. 8 1
      Areas/Admin/Views/MainServer/PosMerchantInfoList/Index.cshtml
  29. 3 3
      Areas/Admin/Views/MainServer/StoreHouse/Import.cshtml
  30. 4 0
      Areas/Admin/Views/MainServer/StoreHouse/Index.cshtml
  31. 13 0
      Areas/Admin/Views/MainServer/StoreHouseAmountRecord/Index.cshtml
  32. 4 4
      Areas/Admin/Views/MainServer/SysTools/ChangeBadPos.cshtml
  33. 1 0
      Areas/Admin/Views/MainServer/UserAccountRecord/Index.cshtml
  34. 47 40
      Areas/Admin/Views/MainServer/UserCashRecord/Import.cshtml
  35. 2 2
      Areas/Admin/Views/MainServer/Users/Children.cshtml
  36. 203 0
      Areas/Admin/Views/SpServer/ActivateRecord/Add.cshtml
  37. 205 0
      Areas/Admin/Views/SpServer/ActivateRecord/Edit.cshtml
  38. 170 0
      Areas/Admin/Views/SpServer/ActivateRecord/Index.cshtml
  39. 203 0
      Areas/Admin/Views/SpServer/BindRecord/Add.cshtml
  40. 205 0
      Areas/Admin/Views/SpServer/BindRecord/Edit.cshtml
  41. 192 0
      Areas/Admin/Views/SpServer/BindRecord/Index.cshtml
  42. 203 0
      Areas/Admin/Views/SpServer/ChangeBindRecord/Add.cshtml
  43. 205 0
      Areas/Admin/Views/SpServer/ChangeBindRecord/Edit.cshtml
  44. 171 0
      Areas/Admin/Views/SpServer/ChangeBindRecord/Index.cshtml
  45. 203 0
      Areas/Admin/Views/SpServer/SpTradeRecord/Add.cshtml
  46. 205 0
      Areas/Admin/Views/SpServer/SpTradeRecord/Edit.cshtml
  47. 152 0
      Areas/Admin/Views/SpServer/SpTradeRecord/Index.cshtml
  48. 203 0
      Areas/Admin/Views/SpServer/TradeFluxRecord/Add.cshtml
  49. 205 0
      Areas/Admin/Views/SpServer/TradeFluxRecord/Edit.cshtml
  50. 152 0
      Areas/Admin/Views/SpServer/TradeFluxRecord/Index.cshtml
  51. 209 0
      Areas/Admin/Views/SpServer/UnBindRecord/Add.cshtml
  52. 211 0
      Areas/Admin/Views/SpServer/UnBindRecord/Edit.cshtml
  53. 165 0
      Areas/Admin/Views/SpServer/UnBindRecord/Index.cshtml
  54. 1 1
      Areas/Api/Controllers/PublicMethodController.cs
  55. 25 0
      Models/PosMachinesFeeChangeRecord.cs
  56. 6 0
      Models/PosMachinesTwo.cs
  57. 73 0
      Models/WebCMSEntities.cs
  58. 0 8
      wwwroot/layuiadmin/modules_main/Loop_Admin.js
  59. 412 0
      wwwroot/layuiadmin/modules_main/PosMachinesFeeChangeRecord_Admin.js
  60. 552 0
      wwwroot/layuiadmin/modules_main/PosMachinesTwoChange_Admin.js
  61. 1 0
      wwwroot/layuiadmin/modules_main/PosMachinesTwo_Admin.js
  62. 1 0
      wwwroot/layuiadmin/modules_main/StoreHouseAmountRecord_Admin.js
  63. 5 4
      wwwroot/layuiadmin/modules_main/StoreHouse_Admin.js
  64. 66 65
      wwwroot/layuiadmin/modules_main/UserAccountRecord_Admin.js
  65. 2 2
      wwwroot/layuiadmin/modules_main/UsersChildren_Admin.js
  66. 392 0
      wwwroot/layuiadmin/modules_sp/ActivateRecord_Admin.js
  67. 416 0
      wwwroot/layuiadmin/modules_sp/BindRecord_Admin.js
  68. 414 0
      wwwroot/layuiadmin/modules_sp/ChangeBindRecord_Admin.js
  69. 390 0
      wwwroot/layuiadmin/modules_sp/TradeFluxRecord_Admin.js
  70. 390 0
      wwwroot/layuiadmin/modules_sp/TradeRecord_Admin.js
  71. 412 0
      wwwroot/layuiadmin/modules_sp/UnBindRecord_Admin.js
  72. BIN
      wwwroot/users/创客机具驳回仓库模版.xlsx
  73. BIN
      wwwroot/users/客小爽仓库调拨模版.xlsx
  74. BIN
      wwwroot/users/机具费率调整模版.xlsx

+ 119 - 1
AppStart/ExcelHelper.cs

@@ -34,7 +34,7 @@ namespace MySystem
                     string _ExcelPath = dataList[0];
                     string _Kind = dataList[1];
                     string checkKey = dataList[2];
-                    string Operator = dataList[3];
+                    string Operator = dataList[3]; // 操作人
                     int SuccessCount = 0;
                     int DoCount = 0;
                     string FullExcelPath = function.getPath(_ExcelPath);
@@ -274,6 +274,11 @@ namespace MySystem
 
                                         int BrandId = int.Parse(function.CheckInt(BrandIdString));
 
+                                        //调拨时若出货仓库与填写仓库不符,则该条出货失败
+                                        var posinfo = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == SnNo && m.BrandId == BrandId);
+                                        var storeinfo = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo && m.StoreId == posinfo.StoreId);
+                                        // if (storeinfo != null)
+                                        // {
                                         KqProducts kqProduct = db.KqProducts.FirstOrDefault(m => m.Id == BrandId) ?? new KqProducts();
                                         if (kqProduct.Id > 0)
                                         {
@@ -424,6 +429,11 @@ namespace MySystem
                                         {
                                             RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "的品牌填写有误");
                                         }
+                                        // }
+                                        // else
+                                        // {
+                                        //     RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + SnNo + "出货仓库与填写仓库不符");
+                                        // }
                                     }
                                     DoCount += Size;
                                     foreach (string key in storeData.Keys)
@@ -1307,6 +1317,114 @@ namespace MySystem
                                 }
                             }
                         }
+                        else if (_Kind == "ChangeFee")
+                        {
+                            using (var tran = db.Database.BeginTransaction())
+                            {
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    string posIds = "";
+                                    string userIds = "";
+                                    string warning = "";
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string PosNo = dr[0].ToString(); // 机具Sn
+                                        decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
+                                        int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
+                                        var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
+                                        if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 6)
+                                        {
+                                            warning += PosNo + ",";
+                                        }
+                                    }
+                                    if (!string.IsNullOrEmpty(warning))
+                                    {
+                                        RedisDbconn.Instance.AddList("ErrList" + checkKey, "机具" + warning + "该机具应直接设置,请全部重新导入");
+                                    }
+                                    else
+                                    {
+                                        for (int i = DoCount; i < DoCount + Size; i++)
+                                        {
+                                            DataRow dr = list.Rows[i];
+                                            string PosNo = dr[0].ToString(); // 机具Sn
+                                            decimal Amount = decimal.Parse(function.CheckNum(dr[1].ToString())); // 调整费率
+                                            int Kind = int.Parse(function.CheckInt(dr[2].ToString())); // 1 调升 2 调低
+                                            var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
+                                            if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 6)
+                                            {
+                                                warning += PosNo + ",";
+                                            }
+                                            if (Kind == 1)
+                                            {
+                                                pos.UpFeeFlag = 1;
+                                                pos.UpFeeDate = DateTime.Now;
+                                                pos.UpFeeMan = Operator;
+                                                db.SaveChanges();
+                                            }
+                                            if (Kind == 2)
+                                            {
+                                                pos.DownFeeFlag = 1;
+                                                pos.DownFeeDate = DateTime.Now;
+                                                pos.DownFeeMan = Operator;
+                                                db.SaveChanges();
+                                            }
+                                            if (!userIds.Contains(pos.BuyUserId.ToString()))
+                                            {
+                                                userIds += pos.BuyUserId + ",";
+                                            }
+                                            posIds += pos.Id + ",";
+                                        }
+                                        string[] lists = userIds.Split(new char[] { ',' });
+                                        int times = lists.ToList().Count;
+                                        for (int i = 0; i < times; i++)
+                                        {
+                                            var UserId = lists[i];
+                                            var posInfo = db.PosMachinesTwo.Where(m => posIds.Contains(m.Id.ToString()) && m.BuyUserId == Convert.ToInt32(UserId));
+                                            string snhtml = "<div style='margin-bottom: .48rem;'>";
+                                            foreach (var items in posInfo)
+                                            {
+                                                var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == items.BindMerchantId) ?? new PosMerchantInfo();
+                                                var brand = db.KqProducts.FirstOrDefault(m => m.Id == items.BrandId) ?? new KqProducts();
+                                                snhtml += "<div style='margin-bottom: .48rem;'><div class='f12'>商户姓名:" + mer.MerRealName + "</div>";
+                                                snhtml += "<div class='f12'>机具品牌:" + brand.Name + "</div>";
+                                                snhtml += "<div class='f12'>SN:" + items.PosSn + "</div>";
+                                                snhtml += "<div class='f12'>当前费率:0.6%</div>";
+                                                snhtml += "<div class='f12'>费率调整时间:" + items.DownFeeDate + "</div>";
+                                            }
+                                            snhtml += "</div>";
+                                            RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+                                            {
+                                                UserId = Convert.ToInt32(UserId), //创客
+                                                Title = "商户费率变更通知", //标题
+                                                Content = "<div class='f12' style='margin-bottom: .72rem'>您的商户刷卡交易费率已变更成功!</div>" + snhtml, //内容
+                                                Summary = "您的商户刷卡交易费率已变更成功!",
+                                                CreateDate = DateTime.Now,
+
+                                            }));
+                                        }
+                                        RedisDbconn.Instance.Set("CheckImport:" + checkKey, "success|" + SuccessCount);
+                                        RedisDbconn.Instance.SetExpire("CheckImport:" + checkKey, 60000);
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "BsServerAdminError");
+                                }
+                            }
+                        }
                         db.Dispose();
                     }
                 }

+ 1 - 0
AppStart/PublicFunction.cs

@@ -451,6 +451,7 @@ namespace MySystem
         public static Dictionary<string, Dictionary<string, string>> CashTables = new Dictionary<string, Dictionary<string, string>>();
         public static Dictionary<string, Dictionary<string, string>> BsTables = new Dictionary<string, Dictionary<string, string>>();
         public static Dictionary<string, Dictionary<string, string>> JobTables = new Dictionary<string, Dictionary<string, string>>();
+        public static Dictionary<string, Dictionary<string, string>> SpTables = new Dictionary<string, Dictionary<string, string>>();
         #endregion
     }
 }

+ 1 - 0
AppStart/TemplateViewLocationExpander.cs

@@ -14,6 +14,7 @@ namespace MySystem
                 "/Areas/Admin/Views/MainServer/{1}/{0}.cshtml",
                 "/Areas/Admin/Views/JobServer/{1}/{0}.cshtml",
                 "/Areas/Admin/Views/CashServer/{1}/{0}.cshtml",
+                "/Areas/Admin/Views/SpServer/{1}/{0}.cshtml",
             };
             return locations.Union(viewLocations);
         }

+ 9 - 8
Areas/Admin/Controllers/MainServer/ConsumerOrdersController.cs

@@ -25,6 +25,7 @@ namespace MySystem.Areas.Admin.Controllers
     {
         public ConsumerOrdersController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
         {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
         }
 
         #region 消费记录列表
@@ -82,7 +83,7 @@ namespace MySystem.Areas.Admin.Controllers
             }
 
 
-            Dictionary<string, object> obj = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ConsumerOrders", Fields, "Id desc", "0", page, limit, condition);
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ConsumerOrders", Fields, "Id desc", "0", page, limit, condition);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)
             {
@@ -138,7 +139,7 @@ namespace MySystem.Areas.Admin.Controllers
             Fields.Add("SeoTitle", data.SeoTitle);
             Fields.Add("SeoKeyword", data.SeoKeyword);
             Fields.Add("SeoDescription", data.SeoDescription);
-            int Id = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Add("ConsumerOrders", Fields, 0);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("ConsumerOrders", Fields, 0);
             AddSysLog(data.Id.ToString(), "ConsumerOrders", "add");
             db.SaveChanges();
 
@@ -181,7 +182,7 @@ namespace MySystem.Areas.Admin.Controllers
             Fields.Add("SeoTitle", data.SeoTitle);
             Fields.Add("SeoKeyword", data.SeoKeyword);
             Fields.Add("SeoDescription", data.SeoDescription);
-            new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, data.Id);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, data.Id);
             AddSysLog(data.Id.ToString(), "ConsumerOrders", "update");
             db.SaveChanges();
 
@@ -205,7 +206,7 @@ namespace MySystem.Areas.Admin.Controllers
                 int id = int.Parse(subid);
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
                 Fields.Add("Status", -1);
-                new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, id);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, id);
             }
             db.SaveChanges();
 
@@ -229,7 +230,7 @@ namespace MySystem.Areas.Admin.Controllers
                 int id = int.Parse(subid);
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
                 Fields.Add("Status", 1);
-                new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, id);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, id);
             }
             db.SaveChanges();
             return "success";
@@ -252,7 +253,7 @@ namespace MySystem.Areas.Admin.Controllers
                 int id = int.Parse(subid);
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
                 Fields.Add("Status", 0);
-                new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, id);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ConsumerOrders", Fields, id);
             }
             db.SaveChanges();
             return "success";
@@ -267,7 +268,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// <param name="Id"></param>
         public string Sort(int Id, int Sort)
         {
-            new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Sort("ConsumerOrders", Sort, Id);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("ConsumerOrders", Sort, Id);
 
             AddSysLog(Id.ToString(), "ConsumerOrders", "sort");
             return "success";
@@ -337,7 +338,7 @@ namespace MySystem.Areas.Admin.Controllers
             }
 
 
-            Dictionary<string, object> obj = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ConsumerOrders", Fields, "Id desc", "0", 1, 20000, condition, "", false);
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ConsumerOrders", Fields, "Id desc", "0", 1, 20000, condition, "", false);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)
             {

+ 10 - 9
Areas/Admin/Controllers/MainServer/MerchantAddInfoController.cs

@@ -25,6 +25,7 @@ namespace MySystem.Areas.Admin.Controllers
     {
         public MerchantAddInfoController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
         {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
         }
 
         #region 商户进件资料列表
@@ -65,7 +66,7 @@ namespace MySystem.Areas.Admin.Controllers
             }
 
 
-            Dictionary<string, object> obj = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).IndexData("MerchantAddInfo", Fields, "Id desc", "0", page, limit, condition);
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("MerchantAddInfo", Fields, "Id desc", "0", page, limit, condition);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)
             {
@@ -193,7 +194,7 @@ namespace MySystem.Areas.Admin.Controllers
             Fields.Add("SeoTitle", data.SeoTitle);
             Fields.Add("SeoKeyword", data.SeoKeyword);
             Fields.Add("SeoDescription", data.SeoDescription);
-            int Id = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Add("MerchantAddInfo", Fields, 0);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("MerchantAddInfo", Fields, 0);
             AddSysLog(data.Id.ToString(), "MerchantAddInfo", "add");
             db.SaveChanges();
 
@@ -318,11 +319,11 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 BusinessCode = "KXS" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(5);
                 Fields.Add("BusinessCode", BusinessCode);
-                Id = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Add("MerchantAddInfo", Fields, 0);
+                Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("MerchantAddInfo", Fields, 0);
             }
             else
             {
-                new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, data.Id);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, data.Id);
                 Id = data.Id;
                 BusinessCode = check.BusinessCode;
             }
@@ -368,7 +369,7 @@ namespace MySystem.Areas.Admin.Controllers
                 int id = int.Parse(subid);
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
                 Fields.Add("Status", -1);
-                new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, id);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, id);
             }
             db.SaveChanges();
 
@@ -392,7 +393,7 @@ namespace MySystem.Areas.Admin.Controllers
                 int id = int.Parse(subid);
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
                 Fields.Add("Status", 1);
-                new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, id);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, id);
             }
             db.SaveChanges();
             return "success";
@@ -415,7 +416,7 @@ namespace MySystem.Areas.Admin.Controllers
                 int id = int.Parse(subid);
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
                 Fields.Add("Status", 0);
-                new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, id);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("MerchantAddInfo", Fields, id);
             }
             db.SaveChanges();
             return "success";
@@ -430,7 +431,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// <param name="Id"></param>
         public string Sort(int Id, int Sort)
         {
-            new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).Sort("MerchantAddInfo", Sort, Id);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("MerchantAddInfo", Sort, Id);
 
             AddSysLog(Id.ToString(), "MerchantAddInfo", "sort");
             return "success";
@@ -483,7 +484,7 @@ namespace MySystem.Areas.Admin.Controllers
             }
 
 
-            Dictionary<string, object> obj = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).IndexData("MerchantAddInfo", Fields, "Id desc", "0", 1, 20000, condition, "", false);
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("MerchantAddInfo", Fields, "Id desc", "0", 1, 20000, condition, "", false);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)
             {

+ 403 - 0
Areas/Admin/Controllers/MainServer/PosMachinesFeeChangeRecordController.cs

@@ -0,0 +1,403 @@
+/*
+ * 机具费率调整申请
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.Models;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class PosMachinesFeeChangeRecordController : BaseController
+    {
+        public PosMachinesFeeChangeRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+        }
+
+        #region 机具费率调整申请列表
+
+        /// <summary>
+        /// 根据条件查询机具费率调整申请列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(PosMachinesFeeChangeRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询机具费率调整申请列表
+
+        /// <summary>
+        /// 机具费率调整申请列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(PosMachinesFeeChangeRecord data, string UserIdMakerCode, string StatusSelect, string UserIdRealName, string PosUserIdMakerCode, string PosUserIdRealName, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("CreateDate", "3"); //时间
+            Fields.Add("PosSn", "1"); //机具SN
+            Fields.Add("MerNo", "1"); //商户号
+            Fields.Add("Sort", "0"); //
+
+
+            string condition = " and Status>=-1";
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+            //创客创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UsersForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //创客真实姓名
+            if (!string.IsNullOrEmpty(UserIdRealName))
+            {
+                condition += " and UserId in (select UserId from UsersForRealName where RealName='" + UserIdRealName + "')";
+            }
+            //机具所属人创客编号
+            if (!string.IsNullOrEmpty(PosUserIdMakerCode))
+            {
+                condition += " and PosUserId in (select PosUserId from UsersForMakerCode where MakerCode='" + PosUserIdMakerCode + "')";
+            }
+            //机具所属人真实姓名
+            if (!string.IsNullOrEmpty(PosUserIdRealName))
+            {
+                condition += " and PosUserId in (select PosUserId from UsersForRealName where RealName='" + PosUserIdRealName + "')";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosMachinesFeeChangeRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic.Remove("UserId");
+                //机具所属人
+                int PosUserId = int.Parse(function.CheckInt(dic["PosUserId"].ToString()));
+                Users posuserid_Users = db.Users.FirstOrDefault(m => m.Id == PosUserId) ?? new Users();
+                dic["PosUserIdMakerCode"] = posuserid_Users.MakerCode;
+                dic["PosUserIdRealName"] = posuserid_Users.RealName;
+                dic.Remove("PosUserId");
+                //状态
+                int Status = int.Parse(function.CheckInt(dic["Status"].ToString()));
+                if (Status == 0) dic["Status"] = "处理中";
+                if (Status == 1) dic["Status"] = "成功";
+                if (Status == -1) dic["Status"] = "失败";
+                //产品类型
+                dic["Sort"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["Sort"].ToString()));
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加机具费率调整申请
+
+        /// <summary>
+        /// 增加或修改机具费率调整申请信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加机具费率调整申请
+
+        /// <summary>
+        /// 增加或修改机具费率调整申请信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(PosMachinesFeeChangeRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("UserId", data.UserId); //创客
+            Fields.Add("ChangeFee", data.ChangeFee); //调整费率
+            Fields.Add("PosSn", data.PosSn); //机具SN
+            Fields.Add("MerNo", data.MerNo); //商户号
+            Fields.Add("PosUserId", data.PosUserId); //机具所属人
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("PosMachinesFeeChangeRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "PosMachinesFeeChangeRecord", "add");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改机具费率调整申请
+
+        /// <summary>
+        /// 增加或修改机具费率调整申请信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            PosMachinesFeeChangeRecord editData = db.PosMachinesFeeChangeRecord.FirstOrDefault(m => m.Id == Id) ?? new PosMachinesFeeChangeRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改机具费率调整申请
+
+        /// <summary>
+        /// 增加或修改机具费率调整申请信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(PosMachinesFeeChangeRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("UserId", data.UserId); //创客
+            Fields.Add("ChangeFee", data.ChangeFee); //调整费率
+            Fields.Add("PosSn", data.PosSn); //机具SN
+            Fields.Add("MerNo", data.MerNo); //商户号
+            Fields.Add("PosUserId", data.PosUserId); //机具所属人
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesFeeChangeRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "PosMachinesFeeChangeRecord", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除机具费率调整申请信息
+
+        /// <summary>
+        /// 删除机具费率调整申请信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosMachinesFeeChangeRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesFeeChangeRecord", Fields, id);
+            }
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosMachinesFeeChangeRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesFeeChangeRecord", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosMachinesFeeChangeRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesFeeChangeRecord", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("PosMachinesFeeChangeRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "PosMachinesFeeChangeRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                db.PosMachinesFeeChangeRecord.Add(new PosMachinesFeeChangeRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "PosMachinesFeeChangeRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(PosMachinesFeeChangeRecord data, string UserIdMakerCode, string UserIdRealName, string PosUserIdMakerCode, string PosUserIdRealName)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CreateDate", "3"); //时间
+            Fields.Add("PosSn", "1"); //机具SN
+            Fields.Add("MerNo", "1"); //商户号
+
+
+            string condition = " and Status>-1";
+            //创客创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UsersForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //创客真实姓名
+            if (!string.IsNullOrEmpty(UserIdRealName))
+            {
+                condition += " and UserId in (select UserId from UsersForRealName where RealName='" + UserIdRealName + "')";
+            }
+            //机具所属人创客编号
+            if (!string.IsNullOrEmpty(PosUserIdMakerCode))
+            {
+                condition += " and PosUserId in (select PosUserId from UsersForMakerCode where MakerCode='" + PosUserIdMakerCode + "')";
+            }
+            //机具所属人真实姓名
+            if (!string.IsNullOrEmpty(PosUserIdRealName))
+            {
+                condition += " and PosUserId in (select PosUserId from UsersForRealName where RealName='" + PosUserIdRealName + "')";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosMachinesFeeChangeRecord", Fields, "Id desc", "0", 1, 20000, condition, "UserId,ChangeFee,PosSn,MerNo,PosUserId", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic.Remove("UserId");
+                //机具所属人
+                int PosUserId = int.Parse(function.CheckInt(dic["PosUserId"].ToString()));
+                Users posuserid_Users = db.Users.FirstOrDefault(m => m.Id == PosUserId) ?? new Users();
+                dic["PosUserIdMakerCode"] = posuserid_Users.MakerCode;
+                dic["PosUserIdRealName"] = posuserid_Users.RealName;
+                dic.Remove("PosUserId");
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("UserIdMakerCode", "创客创客编号");
+            ReturnFields.Add("UserIdRealName", "创客真实姓名");
+            ReturnFields.Add("ChangeFee", "调整费率");
+            ReturnFields.Add("PosSn", "机具SN");
+            ReturnFields.Add("MerNo", "商户号");
+            ReturnFields.Add("PosUserIdMakerCode", "机具所属人创客编号");
+            ReturnFields.Add("PosUserIdRealName", "机具所属人真实姓名");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "PosMachinesFeeChangeRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 941 - 0
Areas/Admin/Controllers/MainServer/PosMachinesTwoChangeController.cs

@@ -0,0 +1,941 @@
+/*
+ * 机具库
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Data;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.Models;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class PosMachinesTwoChangeController : BaseController
+    {
+        public PosMachinesTwoChangeController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+        }
+
+        #region 机具库列表
+
+        /// <summary>
+        /// 根据条件查询机具库列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(PosMachinesTwo data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询机具库列表
+
+        /// <summary>
+        /// 机具库列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(PosMachinesTwo data, string BindingStateSelect, string ActivationStateSelect, string UpFeeFlagSelect, string UserIdMakerCode, string UserIdRealName, string StoreIdCode, string StoreIdName, string ActivationDateData, string BindingDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("PosSn", "1"); //SN编号
+            Fields.Add("BrandId", "0"); //品牌
+
+            string condition = " and Status>-1 AND BindingState = 1 AND DATE_SUB(CURDATE(), INTERVAL 180 DAY) >= date(BindingTime)";
+            //绑定状态
+            if (!string.IsNullOrEmpty(BindingStateSelect))
+            {
+                condition += " and BindingState=" + BindingStateSelect;
+            }
+            //激活状态
+            if (!string.IsNullOrEmpty(ActivationStateSelect))
+            {
+                condition += " and ActivationState=" + ActivationStateSelect;
+            }
+            //所属创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and BuyUserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //所属创客真实姓名
+            if (!string.IsNullOrEmpty(UserIdRealName))
+            {
+                condition += " and BuyUserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
+            }
+            //所属仓库编号
+            if (!string.IsNullOrEmpty(StoreIdCode))
+            {
+                condition += " and StoreId in (select StoreId from StoreForCode where Code='" + StoreIdCode + "')";
+            }
+            //所属仓库名称
+            if (!string.IsNullOrEmpty(StoreIdName))
+            {
+                condition += " and StoreId in (select StoreId from StoreForName where Name='" + StoreIdName + "')";
+            }
+            //品牌
+            // condition += " and BrandId = " + data.BrandId;
+            if (!string.IsNullOrEmpty(UpFeeFlagSelect))
+            {
+                condition += " and UpFeeFlag = " + UpFeeFlagSelect;
+            }
+
+            if (!string.IsNullOrEmpty(ActivationDateData))
+            {
+                string[] datelist = ActivationDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and ActivationTime>='" + start + " 00:00:00' and ActivationTime<='" + end + " 23:59:59'";
+            }
+
+            if (!string.IsNullOrEmpty(BindingDateData))
+            {
+                string[] datelist = BindingDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and BindingTime>='" + start + " 00:00:00' and BindingTime<='" + end + " 23:59:59'";
+            }
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosMachinesTwo", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //绑定状态
+                int BindingState = int.Parse(dic["BindingState"].ToString());
+                if (BindingState == 0) dic["BindingState"] = "未绑定";
+                if (BindingState == 1) dic["BindingState"] = "已绑定";
+                //激活状态
+                int ActivationState = int.Parse(dic["ActivationState"].ToString());
+                if (ActivationState == 0) dic["ActivationState"] = "未激活";
+                if (ActivationState == 1) dic["ActivationState"] = "已激活";
+                //所属创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic.Remove("UserId");
+                //所属仓库
+                int StoreId = int.Parse(function.CheckInt(dic["StoreId"].ToString()));
+                StoreHouse storeid_StoreHouse = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
+                dic["StoreIdCode"] = storeid_StoreHouse.StoreNo;
+                dic["StoreIdName"] = storeid_StoreHouse.StoreName;
+                dic.Remove("StoreId");
+                //产品类型
+                dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
+                //参加活动
+                dic["ActivityList"] = RelationClass.GetProfitObjectsActivesList(dic["ActivityList"].ToString());
+                //绑定商户
+                int BindMerchantId = int.Parse(function.CheckInt(dic["BindMerchantId"].ToString()));
+                PosMerchantInfo bindmerchantid_MerchantInfo = db.PosMerchantInfo.FirstOrDefault(m => m.Id == BindMerchantId) ?? new PosMerchantInfo();
+                dic["BindMerchantIdMerchantNo"] = bindmerchantid_MerchantInfo.MerchantNo;
+                dic["BindMerchantIdMerchantName"] = bindmerchantid_MerchantInfo.MerchantName;
+                dic.Remove("BindMerchantId");
+                //机具类型
+                int PosSnType = int.Parse(dic["PosSnType"].ToString());
+                if (PosSnType == 0) dic["PosSnType"] = "购买机具";
+                if (PosSnType == 1) dic["PosSnType"] = "赠送机具";
+                //设备类型
+                string DeviceType = dic["DeviceType"].ToString();
+                if (DeviceType == "KysSignPos") dic["DeviceType"] = "快益刷电签POS";
+                if (DeviceType == "KssSignPos") dic["DeviceType"] = "快闪刷电签POS";
+                if (DeviceType == "") dic["DeviceType"] = "";
+
+                //盟主信息
+                int LeaderUserId = int.Parse(function.CheckInt(dic["LeaderUserId"].ToString()));
+                if (LeaderUserId != 0)
+                {
+                    Users users = db.Users.FirstOrDefault(m => m.Id == LeaderUserId) ?? new Users();
+                    dic["UserInfo"] = users.MakerCode + "_" + users.RealName;
+                }
+
+                //是否为第一台机具
+                int IsFirst = int.Parse(dic["IsFirst"].ToString());
+                if (IsFirst == 0) dic["IsFirst"] = "否";
+                if (IsFirst == 1) dic["IsFirst"] = "是";
+
+                //循环开始时间
+                if (!string.IsNullOrEmpty(dic["RecycEndDate"].ToString()))
+                {
+                    var RecycStartDate = Convert.ToDateTime(dic["RecycEndDate"].ToString()).AddMonths(-3).ToString("yyyy-MM-dd HH:mm:ss");
+                    dic["RecycStartDate"] = RecycStartDate;
+                }
+
+                //是否调升
+                int UpFeeFlag = int.Parse(dic["UpFeeFlag"].ToString());
+                if (UpFeeFlag == 0) dic["UpFeeFlag"] = "否";
+                if (UpFeeFlag == 1) dic["UpFeeFlag"] = "是";
+
+                //是否调降
+                int DownFeeFlag = int.Parse(dic["DownFeeFlag"].ToString());
+                if (DownFeeFlag == 0) dic["DownFeeFlag"] = "否";
+                if (DownFeeFlag == 1) dic["DownFeeFlag"] = "是";
+
+                //调升时间
+                if (!string.IsNullOrEmpty(dic["UpFeeDate"].ToString()))
+                {
+                    var UpFeeDate = Convert.ToDateTime(dic["UpFeeDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
+                    dic["UpFeeDate"] = UpFeeDate;
+                }
+
+                //调降时间
+                if (!string.IsNullOrEmpty(dic["DownFeeDate"].ToString()))
+                {
+                    var DownFeeDate = Convert.ToDateTime(dic["DownFeeDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
+                    dic["DownFeeDate"] = DownFeeDate;
+                }
+
+
+            }
+            Dictionary<string, object> other = new Dictionary<string, object>();
+            int TotalCount = 0;//总机具数
+            string KysCount99 = "0.00";
+            string KssCount99 = "0.00";
+            string KssCoun198 = "0.00";
+            string KssCount298 = "0.00";
+            DataTable dt = OtherMySqlConn.dtable("select count(0) from PosMachinesTwo where 1=1" + condition);
+            if (dt.Rows.Count > 0)
+            {
+                TotalCount = int.Parse(function.CheckNum(dt.Rows[0][0].ToString()));
+            }
+            // dt = OtherMySqlConn.dtable("select sum(TotalPrice) from Orders where PayStatus=1" + condition);
+            // if (dt.Rows.Count > 0)
+            // {
+            //     FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
+            // }
+            other.Add("TotalCount", TotalCount);
+            other.Add("KysCount99", 0);
+            other.Add("KssCount99", 0);
+            other.Add("KssCoun198", 0);
+            other.Add("KssCount298", 0);
+            obj.Add("other", other);
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加机具库
+
+        /// <summary>
+        /// 增加或修改机具库信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加机具库
+
+        /// <summary>
+        /// 增加或修改机具库信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(PosMachinesTwo data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("PosMachinesTwo", Fields, 0);
+            AddSysLog(data.Id.ToString(), "PosMachinesTwo", "add");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改机具库
+
+        /// <summary>
+        /// 增加或修改机具库信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            PosMachinesTwo editData = db.PosMachinesTwo.FirstOrDefault(m => m.Id == Id) ?? new PosMachinesTwo();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改机具库
+
+        /// <summary>
+        /// 增加或修改机具库信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(PosMachinesTwo data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("PosSnType", data.PosSnType);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "PosMachinesTwo", "update");
+            db.SaveChanges();
+            RedisDbconn.Instance.Clear("PosMachinesTwo:" + data.Id);
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 未使用机具归位总仓
+
+        /// <summary>
+        /// 未使用机具归位总仓
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Home(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            PosMachinesTwo editData = db.PosMachinesTwo.FirstOrDefault(m => m.Id == Id) ?? new PosMachinesTwo();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 未使用机具归位总仓
+
+        /// <summary>
+        /// 未使用机具归位总仓
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Home(PosMachinesTwo data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("SeoTitle", "");
+            Fields.Add("SeoKeyword", "");
+            Fields.Add("PosSnType", 0);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "PosMachinesTwo", "home");
+            db.SaveChanges();
+            RedisDbconn.Instance.Clear("PosMachinesTwo:" + data.Id);
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 删除机具库信息
+
+        /// <summary>
+        /// 删除机具库信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosMachinesTwo", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, id);
+            }
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosMachinesTwo", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosMachinesTwo", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Sort("PosMachinesTwo", Sort, Id);
+
+            AddSysLog(Id.ToString(), "PosMachinesTwo", "sort");
+            return "success";
+        }
+        #endregion
+
+
+        #region 批量调升费率
+
+        /// <summary>
+        /// 批量调升费率
+        /// </summary>
+        /// <returns></returns>
+        public string BatchSetting(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosMachinesTwo", "UpFeePosMachinesTwo");
+            List<int> posIds = new List<int>();
+            List<int> upposIds = new List<int>();
+            string userIds = "";
+            foreach (string subids in idlist)
+            {
+                int id = int.Parse(subids);
+                var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == id) ?? new PosMachinesTwo();
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("UpFeeFlag", 1);
+                Fields.Add("UpFeeMan", SysUserName);
+                Fields.Add("UpFeeDate", DateTime.Now);
+
+                if (!userIds.Contains(pos.BuyUserId.ToString()))
+                {
+                    userIds += pos.BuyUserId + ",";
+                }
+
+                if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 6)
+                {
+
+
+                    // PosId:机具Id
+                    // Kind:1或2,1为费率0.63,2为费率0.6
+                    // OpMan:操作人,app传创客编号,后台传SysUserName
+                    string info = "{\"RecordId\":\"\",\"PosId\":\"" + id + "\",\"Fee\": \"" + 0.63 + "\",\"Kind\": \"" + 1 + "\",\"OpMan\": \"" + SysUserName + "\"}";
+                    RedisDbconn.Instance.AddList("SetDepositQueue", info);
+                }
+                else
+                {
+                    upposIds.Add(id);
+                }
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, id);
+
+            }
+            string[] lists = userIds.TrimEnd(',').Split(new char[] { ',' });
+            int times = lists.ToList().Count;
+            if (upposIds.Count > 0)
+            {
+                //调升
+                for (int i = 0; i < times; i++)
+                {
+                    var UserId = lists[i];
+                    var posInfo = db.PosMachinesTwo.Where(m => upposIds.Contains(m.Id) && m.BuyUserId == Convert.ToInt32(UserId)).ToList();
+                    string snhtml = "<div style='margin-bottom: .48rem;'>";
+                    foreach (var items in posInfo)
+                    {
+                        var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == items.BindMerchantId);
+                        string Name = mer.MerchantName;
+                        if (mer.BrandId == 2)
+                        {
+                            if (Name.Contains("-"))
+                            {
+                                Name = Name.Split('-')[1];
+                            }
+                            else if (Name.Contains("_"))
+                            {
+                                Name = Name.Split('_')[1];
+                            }
+                        }
+                        var brand = db.KqProducts.FirstOrDefault(m => m.Id == items.BrandId);
+                        snhtml += "<div style='margin-bottom: .48rem;'><div class='f16'>商户姓名:" + Name + "</div>";
+                        snhtml += "<div class='f16'>机具品牌:" + brand.Name + "</div>";
+                        snhtml += "<div class='f16'>SN:" + items.PosSn + "</div></div>";
+                    }
+                    snhtml += "</div>";
+                    RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+                    {
+                        UserId = Convert.ToInt32(UserId), //创客
+                        Title = "商户费率变更通知", //标题
+                        Content = "<div class='f16' style='margin-bottom: .72rem'>您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率</div>" + snhtml, //内容
+                        Summary = "您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率",
+                        CreateDate = DateTime.Now,
+
+                    }));
+                }
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+
+        // #region 批量调升费率(无接口限制)
+
+        // /// <summary>
+        // /// 批量调升费率
+        // /// </summary>
+        // /// <returns></returns>
+        // public string BatchSetting(string Id)
+        // {
+        //     string[] idlist = Id.Split(new char[] { ',' });
+        //     AddSysLog(Id, "PosMachinesTwo", "UpFeePosMachinesTwo");
+        //     List<int> posIds = new List<int>();
+        //     List<int> upposIds = new List<int>();
+        //     string userIds = "";
+        //     foreach (string subids in idlist)
+        //     {
+        //         int id = int.Parse(subids);
+        //         var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == id) ?? new PosMachinesTwo();
+        //         Dictionary<string, object> Fields = new Dictionary<string, object>();
+        //         Fields.Add("UpFeeFlag", 1);
+        //         Fields.Add("UpFeeMan", SysUserName);
+        //         Fields.Add("UpFeeDate", DateTime.Now);
+
+        //         if (!userIds.Contains(pos.BuyUserId.ToString()))
+        //         {
+        //             userIds += pos.BuyUserId + ",";
+        //         }
+        //         upposIds.Add(id);
+        //         new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, id);
+
+        //     }
+        //     string[] lists = userIds.TrimEnd(',').Split(new char[] { ',' });
+        //     int times = lists.ToList().Count;
+        //     if (upposIds.Count > 0)
+        //     {
+        //         //调升
+        //         for (int i = 0; i < times; i++)
+        //         {
+        //             var UserId = lists[i];
+        //             var posInfo = db.PosMachinesTwo.Where(m => upposIds.Contains(m.Id) && m.BuyUserId == Convert.ToInt32(UserId)).ToList();
+        //             string snhtml = "<div style='margin-bottom: .48rem;'>";
+        //             foreach (var items in posInfo)
+        //             {
+        //                 var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == items.BindMerchantId);
+        //                 string Name = mer.MerchantName;
+        //                 if (mer.BrandId == 2)
+        //                 {
+        //                     if (Name.Contains("-"))
+        //                     {
+        //                         Name = Name.Split('-')[1];
+        //                     }
+        //                     else if (Name.Contains("_"))
+        //                     {
+        //                         Name = Name.Split('_')[1];
+        //                     }
+        //                 }
+        //                 var brand = db.KqProducts.FirstOrDefault(m => m.Id == items.BrandId);
+        //                 snhtml += "<div style='margin-bottom: .48rem;'><div class='f16'>商户姓名:" + Name + "</div>";
+        //                 snhtml += "<div class='f16'>机具品牌:" + brand.Name + "</div>";
+        //                 snhtml += "<div class='f16'>SN:" + items.PosSn + "</div></div>";
+        //             }
+        //             snhtml += "</div>";
+        //             RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+        //             {
+        //                 UserId = Convert.ToInt32(UserId), //创客
+        //                 Title = "商户费率变更通知", //标题
+        //                 Content = "<div class='f16' style='margin-bottom: .72rem'>您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率</div>" + snhtml, //内容
+        //                 Summary = "您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率",
+        //                 CreateDate = DateTime.Now,
+
+        //             }));
+        //         }
+        //     }
+        //     db.SaveChanges();
+        //     db.Dispose();
+        //     return "success";
+        // }
+
+        // #endregion
+
+
+        #region 导入费率调整结果
+        /// <summary>
+        /// 导入费率调整结果
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string ImportEnd(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+
+            List<int> dnposIds = new List<int>();
+            string userIds = "";
+            string warning = "";
+
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+                string PosNo = dr[0].ToString(); // 机具Sn
+                var Amount = double.Parse(dr[1].ToString()); // 调整费率
+                int Kind = int.Parse(dr[2].ToString()); // 1 调升 2 调低
+                var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosNo) ?? new PosMachinesTwo();
+                if (pos.UpFeeFlag == 1)
+                {
+                    if (Kind != 2 || Amount != 0.6)
+                    {
+                        warning += PosNo + ",该机具调低费率数值或类型不正确,请检查好后全部重新导入";
+                    }
+                    else
+                    {
+                        if (Kind == 2 && Amount == 0.6)
+                        {
+                            pos.DownFeeFlag = 1;
+                            pos.DownFeeDate = DateTime.Now;
+                            pos.DownFeeMan = SysUserName + "_" + SysRealName;
+                            var poschange = db.PosMachinesFeeChangeRecord.FirstOrDefault(m => m.PosId == pos.Id);
+                            poschange.Status = 1;
+                            db.SaveChanges();
+                            dnposIds.Add(pos.Id);
+
+                        }
+                        if (!userIds.Contains(pos.BuyUserId.ToString()))
+                        {
+                            userIds += pos.BuyUserId + ",";
+                        }
+                    }
+                }
+
+                else
+                {
+                    warning += PosNo + ",该机具不符合调低条件,请检查好后全部重新导入";
+                }
+            }
+            if (!string.IsNullOrEmpty(warning))
+            {
+                return "waning |" + warning;
+            }
+            string[] lists = userIds.TrimEnd(',').Split(new char[] { ',' });
+            int times = lists.ToList().Count;
+            if (dnposIds.Count > 0)
+            {
+                //调降
+                for (int i = 0; i < times; i++)
+                {
+                    var UserId = lists[i];
+                    var posInfo = db.PosMachinesTwo.Where(m => dnposIds.Contains(m.Id) && m.BuyUserId == Convert.ToInt32(UserId)).ToList();
+                    string snhtml = "<div style='margin-bottom: .48rem;'>";
+                    foreach (var items in posInfo)
+                    {
+                        var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == items.BindMerchantId);
+                        string Name = mer.MerchantName;
+                        if (mer.BrandId == 2)
+                        {
+                            if (Name.Contains("-"))
+                            {
+                                Name = Name.Split('-')[1];
+                            }
+                            else if (Name.Contains("_"))
+                            {
+                                Name = Name.Split('_')[1];
+                            }
+                        }
+                        var brand = db.KqProducts.FirstOrDefault(m => m.Id == items.BrandId);
+                        snhtml += "<div style='margin-bottom: .48rem;'><div class='f16'>商户姓名:" + Name + "</div>";
+                        snhtml += "<div class='f16'>机具品牌:" + brand.Name + "</div>";
+                        snhtml += "<div class='f16'>SN:" + items.PosSn + "</div>";
+                        snhtml += "<div class='f16'>当前费率:0.6%</div>";
+                        snhtml += "<div class='f16'>费率调整时间:" + items.DownFeeDate + "</div></div>";
+                    }
+                    snhtml += "</div>";
+                    RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+                    {
+                        UserId = Convert.ToInt32(UserId), //创客
+                        Title = "商户费率变更通知", //标题
+                        Content = "<div class='f16' style='margin-bottom: .72rem'>您的商户刷卡交易费率已变更成功!</div>" + snhtml, //内容
+                        Summary = "您的商户刷卡交易费率已变更成功!",
+                        CreateDate = DateTime.Now,
+
+                    }));
+                }
+            }
+            AddSysLog("0", "PosMachinesTwoChange", "ImportEnd");
+            return "success";
+        }
+        #endregion
+
+
+        #region 导入数据
+
+        public IActionResult Import(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            return View();
+        }
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        [HttpPost]
+        public string ImportPost(string ExcelPath)
+        {
+            string key = function.MD5_16(Guid.NewGuid().ToString());
+            RedisDbconn.Instance.AddList("ExcelImportV2", ExcelPath + "#cut#ChangeFee#cut#" + key + "#cut#" + SysUserName);
+            return "success|" + key;
+        }
+        public string CheckImport(string key)
+        {
+            string result = RedisDbconn.Instance.Get<string>("CheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    return result;
+                }
+                return datalist[0];
+            }
+            return "0";
+        }
+        public Dictionary<string, object> CheckImportV2(string key)
+        {
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            string result = RedisDbconn.Instance.Get<string>("CheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    List<string> errList = RedisDbconn.Instance.GetList<string>("ErrList" + key);
+                    if (errList.Count > 0)
+                    {
+                        Obj.Add("status", 2);
+                        Obj.Add("errList", errList);
+                    }
+                    else
+                    {
+                        Obj.Add("status", 1);
+                        Obj.Add("data", result);
+                    }
+                    return Obj;
+                }
+                Obj.Add("status", 0);
+                Obj.Add("data", datalist[0]);
+                return Obj;
+            }
+            Obj.Add("status", -1);
+            Obj.Add("data", "执行中...");
+            return Obj;
+        }
+        #endregion
+
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(PosMachinesTwo data, string BindingStateSelect, string ActivationStateSelect, string UserIdMakerCode, string UserIdRealName, string StoreIdCode, string StoreIdName)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("PosSn", "1"); //SN编号
+            Fields.Add("BrandId", "0"); //品牌
+
+            string condition = " and Status>-1";
+            //绑定状态
+            if (!string.IsNullOrEmpty(BindingStateSelect))
+            {
+                condition += " and BindingState=" + BindingStateSelect;
+            }
+            //激活状态
+            if (!string.IsNullOrEmpty(ActivationStateSelect))
+            {
+                condition += " and ActivationState=" + ActivationStateSelect;
+            }
+            //所属创客创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //所属创客真实姓名
+            if (!string.IsNullOrEmpty(UserIdRealName))
+            {
+                condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
+            }
+            //所属仓库编号
+            if (!string.IsNullOrEmpty(StoreIdCode))
+            {
+                condition += " and StoreId in (select StoreId from StoreForCode where Code='" + StoreIdCode + "')";
+            }
+            //所属仓库名称
+            if (!string.IsNullOrEmpty(StoreIdName))
+            {
+                condition += " and StoreId in (select StoreId from StoreForName where Name='" + StoreIdName + "')";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosMachinesTwo", Fields, "Id desc", "0", 1, 20000, condition, "BindingState,ActivationState,UserId,StoreId,PosSn,BrandId,ActivityList,BindMerchantId,PosSnType,DeviceType,BindingTime,UpFeeDate,DownFeeDate,ActivationTime,TransferTime", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //绑定状态
+                int BindingState = int.Parse(dic["BindingState"].ToString());
+                if (BindingState == 0) dic["BindingState"] = "未绑定";
+                if (BindingState == 1) dic["BindingState"] = "已绑定";
+                //绑定时间
+                if (!string.IsNullOrEmpty(dic["BindingTime"].ToString()))
+                {
+                    DateTime BindingTime = Convert.ToDateTime(dic["BindingTime"].ToString());
+                }
+
+                //激活状态
+                int ActivationState = int.Parse(dic["ActivationState"].ToString());
+                if (ActivationState == 0) dic["ActivationState"] = "未激活";
+                if (ActivationState == 1) dic["ActivationState"] = "已激活";
+                //激活时间
+                if (!string.IsNullOrEmpty(dic["ActivationTime"].ToString()))
+                {
+                    DateTime ActivationTime = Convert.ToDateTime(dic["ActivationTime"].ToString());
+                }
+
+                //划拨时间
+                if (!string.IsNullOrEmpty(dic["TransferTime"].ToString()))
+                {
+                    DateTime TransferTime = Convert.ToDateTime(dic["TransferTime"].ToString());
+                }
+                //调升时间
+                if (!string.IsNullOrEmpty(dic["UpFeeDate"].ToString()))
+                {
+                    DateTime UpFeeDate = Convert.ToDateTime(dic["UpFeeDate"].ToString());
+                }
+
+                //调降时间
+                if (!string.IsNullOrEmpty(dic["DownFeeDate"].ToString()))
+                {
+                    DateTime DownFeeDate = Convert.ToDateTime(dic["DownFeeDate"].ToString());
+                }
+                //所属创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic.Remove("UserId");
+                //所属仓库
+                int StoreId = int.Parse(function.CheckInt(dic["StoreId"].ToString()));
+                StoreHouse storeid_StoreHouse = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
+                dic["StoreIdCode"] = storeid_StoreHouse.StoreNo;
+                dic["StoreIdName"] = storeid_StoreHouse.StoreName;
+                dic.Remove("StoreId");
+                //产品类型
+                dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
+                //参加活动
+                // dic["ActivityList"] = RelationClass.GetProfitObjectsActivesList(dic["ActivityList"].ToString());
+                //绑定商户
+                int BindMerchantId = int.Parse(function.CheckInt(dic["BindMerchantId"].ToString()));
+                PosMerchantInfo bindmerchantid_MerchantInfo = db.PosMerchantInfo.FirstOrDefault(m => m.Id == BindMerchantId) ?? new PosMerchantInfo();
+                dic["BindMerchantIdMerchantNo"] = bindmerchantid_MerchantInfo.MerchantNo;
+                dic["BindMerchantIdMerchantName"] = bindmerchantid_MerchantInfo.MerchantName;
+                dic.Remove("BindMerchantId");
+                //机具类型
+                int PosSnType = int.Parse(dic["PosSnType"].ToString());
+                if (PosSnType == 0) dic["PosSnType"] = "购买机具";
+                if (PosSnType == 1) dic["PosSnType"] = "赠送机具";
+                // //设备类型
+                // string DeviceType = dic["DeviceType"].ToString();
+                // if (DeviceType == "KysSignPos") dic["DeviceType"] = "快益刷电签POS";
+                // if (DeviceType == "KssSignPos") dic["DeviceType"] = "快闪刷电签POS";
+                // if (DeviceType == "") dic["DeviceType"] = "";
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("UserIdMakerCode", "创客编号");
+            ReturnFields.Add("UserIdRealName", "创客姓名");
+            ReturnFields.Add("StoreIdCode", "仓库编号");
+            ReturnFields.Add("StoreIdName", "仓库名称");
+            ReturnFields.Add("BrandId", "产品类型");
+            ReturnFields.Add("PosSn", "SN编号");
+            ReturnFields.Add("PosSnType", "SN类型");
+            // ReturnFields.Add("ActivityList", "参加活动");
+            ReturnFields.Add("BindMerchantIdMerchantNo", "绑定商户编号");
+            ReturnFields.Add("BindMerchantIdMerchantName", "绑定商户姓名");
+            ReturnFields.Add("DeviceType", "设备类型");
+            ReturnFields.Add("BindingState", "绑定状态");
+            ReturnFields.Add("BindingTime", "绑定时间");
+            ReturnFields.Add("ActivationState", "激活状态");
+            ReturnFields.Add("ActivationTime", "激活时间");
+            ReturnFields.Add("TransferTime", "划拨时间");
+            ReturnFields.Add("UpFeeFlag", "调升标记");
+            ReturnFields.Add("UpFeeDate", "调升时间");
+            ReturnFields.Add("UpFeeMan", "调升人");
+            ReturnFields.Add("DownFeeFlag", "调降标记");
+            ReturnFields.Add("DownFeeDate", "调降时间");
+            ReturnFields.Add("DownFeeMan", "调降人");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "PosMachinesTwo", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 8 - 0
Areas/Admin/Controllers/MainServer/PosMachinesTwoController.cs

@@ -170,6 +170,14 @@ namespace MySystem.Areas.Admin.Controllers
                 if (IsFirst == 0) dic["IsFirst"] = "否";
                 if (IsFirst == 1) dic["IsFirst"] = "是";
 
+                //循环开始时间
+                if (!string.IsNullOrEmpty(dic["RecycEndDate"].ToString()))
+                {
+                    var RecycStartDate = Convert.ToDateTime(dic["RecycEndDate"].ToString()).AddMonths(-3).ToString("yyyy-MM-dd HH:mm:ss");
+                    dic["RecycStartDate"] = RecycStartDate;
+                }
+
+
             }
             Dictionary<string, object> other = new Dictionary<string, object>();
             int TotalCount = 0;//总机具数

+ 11 - 3
Areas/Admin/Controllers/MainServer/PosMerchantInfoListController.cs

@@ -51,7 +51,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// 商户列表
         /// </summary>
         /// <returns></returns>
-        public JsonResult IndexData(PosMerchantInfo data, string MerIdcardNo, string MerchantName, int page = 1, int limit = 30)
+        public JsonResult IndexData(PosMerchantInfo data, string MerIdcardNo, string MerchantName, string PhoneNo, int page = 1, int limit = 30)
         {
 
             Dictionary<string, string> Fields = new Dictionary<string, string>();
@@ -60,14 +60,22 @@ namespace MySystem.Areas.Admin.Controllers
             //身份证号
             if (!string.IsNullOrEmpty(MerIdcardNo))
             {
-                condition += " and MerIdcardNo like '%" + MerIdcardNo + "%'";
+                var IdCardf = MerIdcardNo.Substring(0, 6);
+                var IdCardb = MerIdcardNo.Substring(MerIdcardNo.Length - 4);
+                condition += " and LEFT(MerIdcardNo,6)=" + IdCardf + " AND RIGHT(MerIdcardNo,4)=" + IdCardb + "";
             }
             //商户姓名
             if (!string.IsNullOrEmpty(MerchantName))
             {
                 condition += " and MerchantName like '%" + MerchantName + "%'";
             }
-
+            //手机号
+            if (!string.IsNullOrEmpty(PhoneNo))
+            {
+                var PhoneNof = PhoneNo.Substring(0, 3);
+                var PhoneNob = PhoneNo.Substring(PhoneNo.Length- 4);
+                condition += " and LEFT(MerchantMobile,3)=" + PhoneNof + " AND RIGHT(MerchantMobile,4)=" + PhoneNob + "";
+            }
             Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosMerchantInfo", Fields, "Id desc", "0", page, limit, condition);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)

+ 8 - 1
Areas/Admin/Controllers/MainServer/StoreHouseAmountRecordController.cs

@@ -82,7 +82,7 @@ namespace MySystem.Areas.Admin.Controllers
             }
 
 
-            Dictionary<string, object> obj = new AdminContent(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouseAmountRecord", Fields, "Id desc", "0", page, limit, condition);
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouseAmountRecord", Fields, "Id desc", "0", page, limit, condition);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)
             {
@@ -98,6 +98,13 @@ namespace MySystem.Areas.Admin.Controllers
                 int AmountType = int.Parse(dic["AmountType"].ToString());
                 if (AmountType == 0) dic["AmountType"] = "固定额度";
                 if (AmountType == 1) dic["AmountType"] = "临时额度";
+                //变动类别
+                int ChangeType = int.Parse(dic["Sort"].ToString());
+                if (ChangeType == 1) dic["ChangeType"] = "购买临时额度";
+                if (ChangeType == 2) dic["ChangeType"] = "增减分仓临时额度";
+                if (ChangeType == 3) dic["ChangeType"] = "调低额度返回余额";
+                if (ChangeType == 4) dic["ChangeType"] = "仓库发货|预发机申请";
+                if (ChangeType == 5) dic["ChangeType"] = "后台仓库调拨";
                 //操作类别
                 int OperateType = int.Parse(dic["OperateType"].ToString());
                 if (OperateType == 1) dic["OperateType"] = "增加";

+ 73 - 33
Areas/Admin/Controllers/MainServer/StoreHouseController.cs

@@ -291,7 +291,7 @@ namespace MySystem.Areas.Admin.Controllers
                         account.FixedAmount = 20000;
                         account.ValidAmount = 20000;
                     }
-                    
+
                     RedisDbconn.Instance.Set("StoreForName:" + data.StoreName, Id);
                     AddSysLog(data.Id.ToString(), "StoreHouse", "add");
                     db.SaveChanges();
@@ -666,11 +666,11 @@ namespace MySystem.Areas.Admin.Controllers
         /// 机具驳回仓库
         /// </summary>
         /// <param name="ExcelData"></param>
-        public string RejectStore(string ExcelData, int Kind = 0)
+        public string RejectStore(string ExcelData, int ExcelKind = 0)
         {
             ExcelData = HttpUtility.UrlDecode(ExcelData);
             JsonData list = JsonMapper.ToObject(ExcelData);
-            if (Kind == 1)
+            if (ExcelKind == 1)
             {
                 string error = "";
                 List<string> PosSnList = new List<string>();
@@ -686,25 +686,31 @@ namespace MySystem.Areas.Admin.Controllers
                     string Remark = itemJson.Contains("\"F\"") ? dr["F"].ToString() : "";
                     UserForMakerCode userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
                     StoreForCode storeForCode = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo);
-                    var store = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId && m.UserId == userForMakerCode.UserId && m.BrandId == BrandId);
+                    var store = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId && m.BrandId == BrandId);
+                    MachineForSnNo machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
+                    var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0 && m.BuyUserId == userForMakerCode.UserId);
+                    var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0);
+                    var posInfos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0 && m.StoreId == store.Id);
+                    if (pos == null)
+                    {
+                        error += "以下操作失败" + PosSn + ',' + "未找到创客" + MakerCode + "的该台机具" + '\n';
+                    }
                     if (store == null)
                     {
-                        error += "以下操作失败" + StoreNo + ',' + "未找到该仓库" + '\n';
+                        error += "以下操作失败" + PosSn + ',' + StoreNo + ',' + "未找到该仓库" + '\n';
                     }
                     var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
-                    MachineForSnNo machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
-                    var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.UserId == user.Id && m.BindingState == 0);
                     if (posInfo == null)
                     {
-                        error += "以下操作失败" + PosSn + ',' + "未找到该品牌的机具" + '\n';
+                        error += "以下操作失败" + PosSn + ',' + "未找到该品牌的未使用机具" + '\n';
                     }
-                    else if (PosSnList.Contains(PosSn))
+                    if (posInfos != null)
                     {
-                        error += "以下操作失败" + PosSn + ',' + "该机具号重复" + '\n';
+                        error += "以下操作失败" + PosSn + ',' + "该机具已在仓库:" + StoreNo + '\n';
                     }
-                    else if (!string.IsNullOrEmpty(error))
+                    if (PosSnList.Contains(PosSn))
                     {
-                        return "Warning|" + error;
+                        error += "以下操作失败" + PosSn + ',' + "该机具号重复" + '\n';
                     }
                     else
                     {
@@ -712,6 +718,10 @@ namespace MySystem.Areas.Admin.Controllers
                     }
 
                 }
+                if (!string.IsNullOrEmpty(error))
+                {
+                    return "Warning|" + error;
+                }
                 for (int i = 1; i < list.Count; i++)
                 {
                     JsonData dr = list[i];
@@ -724,8 +734,12 @@ namespace MySystem.Areas.Admin.Controllers
                     string Remark = itemJson.Contains("\"F\"") ? dr["F"].ToString() : "";
                     decimal amount = 0;
                     UserForMakerCode userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
-                    var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
-                    var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new UserAccount();
+                    var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn);
+                    StoreForCode storeForCode = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo);
+                    var fromStore = db.StoreHouse.FirstOrDefault(m => m.Id == pos.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
+                    var toStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
+                    var user = db.Users.FirstOrDefault(m => m.Id == toStore.UserId) ?? new Users();
+                    var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == toStore.UserId) ?? new UserAccount();
                     var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == Convert.ToInt32(BrandId)) ?? new KqProducts();
                     if (brandInfo.Name.Contains("电签"))
                     {
@@ -735,26 +749,23 @@ namespace MySystem.Areas.Admin.Controllers
                     {
                         amount = 300;
                     }
-                    userAccount.ValidAmount += amount;
+                    userAccount.ValidAmount -= amount;
                     string text = string.Format("导入机具驳回仓库,UserId: '" + user.Id + "',BeforeChangeAmount:'" + userAccount.ValidAmount + "',AfterChangeAmount:'" + userAccount.ValidAmount + amount + "',ChangeAmount:'" + amount + "',Time'" + DateTime.Now + "'");
                     function.WriteLog(text, "机具驳回仓库");//机具驳回仓库日志
                     db.SaveChanges();
                     MachineForSnNo machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
-                    var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.UserId == user.Id && m.BindingState == 0);
+                    var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0);
                     if (posInfo != null)
                     {
-                        var storehouse = db.StoreHouse.FirstOrDefault(m => m.Id == posInfo.StoreId);
-                        storehouse.TotalNum += 1;
-                        storehouse.LaveNum += 1;
-                        storehouse.OutNum -= 1;
-                        db.SaveChanges();
+                        var changeNo = "JJBH" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
                         StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
                         {
                             CreateDate = DateTime.Now,
-                            CreateMan = SysUserName,
-                            StoreId = storehouse.Id, //出货 仓库
+                            StoreId = fromStore.Id, //出货仓库
+                            ToStoreId = toStore.Id, //发货仓库
                             BrandId = Convert.ToInt32(BrandId), //产品类型
                             ProductName = RelationClass.GetKqProductBrandInfo(Convert.ToInt32(BrandId)), //产品名称
+                            ChangeNo = changeNo, //变更记录单号
                             BizBatchNo = No, //业务批次号
                             TransType = 1, //交易类型
                             SnNo = PosSn, //SN编号
@@ -766,34 +777,63 @@ namespace MySystem.Areas.Admin.Controllers
                             SourceStoreId = posInfo.SourceStoreId, //源仓库编号
                             BrandType = posInfo.DeviceType, //品牌类型
                         }).Entity;
+                        db.SaveChanges();
 
                         db.StoreChangeHistory.Add(new StoreChangeHistory()
                         {
                             CreateDate = DateTime.Now,
                             UserId = user.Id, //创客
+                            StoreId = fromStore.Id, //出货仓库
+                            ToStoreId = toStore.Id, //发货仓库
                             BrandId = Convert.ToInt32(BrandId), //产品类型
-                            ChangeRecordNo = "JJBH" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), //变更记录单号
+                            ChangeRecordNo = changeNo, //变更记录单号
                             SeoTitle = "机具驳回仓库",
                             BizBatchNo = No, //业务批次号
                             SnNo = PosSn, //SN编号
                         });
-                        StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
+                        db.SaveChanges();
+
+                        StoreBalance fbalance = db.StoreBalance.Add(new StoreBalance()
                         {
                             CreateDate = DateTime.Now,
-                            StoreId = posInfo.StoreId, //仓库
+                            StoreId = fromStore.Id, //仓库
+                            BrandId = Convert.ToInt32(BrandId), //产品类型
+                            OpStoreNum = 1, //操作库存数
+                            OpSymbol = "-", //操作符
+                            BeforeTotalNum = fromStore.TotalNum, //操作前总库存数
+                            AfterTotalNum = fromStore.TotalNum - 1, //操作后总库存数
+                            BeforeLaveNum = fromStore.LaveNum, //操作前剩余库存数
+                            AfterLaveNum = fromStore.LaveNum - 1, //操作后剩余库存数
+                            BeforeOutNum = fromStore.OutNum, //操作前出库数
+                            AfterOutNum = fromStore.OutNum - 1, //操作后出库数
+                        }).Entity;
+                        db.SaveChanges();
+
+                        StoreBalance tbalance = db.StoreBalance.Add(new StoreBalance()
+                        {
+                            CreateDate = DateTime.Now,
+                            StoreId = toStore.Id, //仓库
                             BrandId = Convert.ToInt32(BrandId), //产品类型
                             OpStoreNum = 1, //操作库存数
                             OpSymbol = "+", //操作符
-                            BeforeTotalNum = storehouse.TotalNum, //操作前总库存数
-                            AfterTotalNum = storehouse.TotalNum + 1, //操作后总库存数
-                            BeforeLaveNum = storehouse.LaveNum, //操作前剩余库存数
-                            AfterLaveNum = storehouse.LaveNum + 1, //操作后剩余库存数
-                            BeforeOutNum = storehouse.OutNum, //操作前出库数
-                            AfterOutNum = storehouse.OutNum - 1, //操作后出库数
+                            BeforeTotalNum = toStore.TotalNum, //操作前总库存数
+                            AfterTotalNum = toStore.TotalNum + 1, //操作后总库存数
+                            BeforeLaveNum = toStore.LaveNum, //操作前剩余库存数
+                            AfterLaveNum = toStore.LaveNum + 1, //操作后剩余库存数
+                            BeforeOutNum = toStore.OutNum, //操作前出库数
+                            AfterOutNum = toStore.OutNum, //操作后出库数
                         }).Entity;
+                        db.SaveChanges();
+
+                        posInfo.StoreId = toStore.Id;
+                        toStore.TotalNum += 1;
+                        toStore.LaveNum += 1;
+                        fromStore.TotalNum -= 1;
+                        fromStore.LaveNum -= 1;
+                        db.SaveChanges();
+
                     }
                 }
-                db.SaveChanges();
             }
             AddSysLog("0", "MachinesRejectStore", "Import");
             return "success";

+ 319 - 155
Areas/Admin/Controllers/MainServer/SysToolsController.cs

@@ -1062,12 +1062,21 @@ namespace MySystem.Areas.Admin.Controllers
             string DepositGet = "未领取";
             string DepositUser = "";
             string DepositToUser = "";
+            decimal headAmount = 0;
+            decimal footAmount = 0;
             ActiveReward reward = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.RewardAmount != 40) ?? new ActiveReward();
             if (reward.Id > 0)
             {
                 Users user = db.Users.FirstOrDefault(m => m.Id == reward.UserId) ?? new Users();
                 DepositGet = "已领取";
                 DepositUser = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile;
+                var fAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 0);
+                var lAmount = db.ActiveReward.FirstOrDefault(m => m.KqSnNo == pos.PosSn && m.ActType == 1);
+                if (fAmount != null && lAmount != null)
+                {
+                    headAmount = fAmount.RewardAmount;
+                    footAmount = lAmount.RewardAmount;
+                }
             }
             string DepositGet6 = "未领取";
             string DepositUser6 = "";
@@ -1112,8 +1121,8 @@ namespace MySystem.Areas.Admin.Controllers
             string SendStatus = applyorder.SendStatus == 1 ? "已发货" : "未发货";
             string ApplyDate = apply.CreateDate == null ? "" : apply.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string SendDate = applyorder.SendDate == null ? "" : applyorder.SendDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
-            string TransferTime = pos.TransferTime == null ? "" : pos.TransferTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string CreateDate = pos.CreateDate == null ? "" : pos.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
+            string TransferTime = pos.TransferTime == null ? "" : pos.TransferTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string RecycEndDate = pos.RecycEndDate == null ? "" : pos.RecycEndDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string ActiveTime = reward.CreateDate == null ? "" : reward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
             string ActiveTime6 = lisreward.CreateDate == null ? "" : lisreward.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
@@ -1150,6 +1159,7 @@ namespace MySystem.Areas.Admin.Controllers
             result += "是否发货:" + SendStatus + ",发货时间:" + SendDate + "\n";
             result += "押金:" + Deposit + "\n";
             result += "是否返现:" + DepositGet + ",领取时间:" + ActiveTime + "\n";
+            result += "返现金额:" + headAmount + " " + " " + footAmount + "\n";//TODO: 添加返现金额和额外奖励
             result += "押金返现应返现对象:" + DepositToUser + "\n";
             result += "押金返现实际返现对象:" + DepositUser + "\n";
             if (pos.BrandId == 6)
@@ -1505,7 +1515,7 @@ namespace MySystem.Areas.Admin.Controllers
         }
 
         [HttpPost]
-        public string ChangeBadPosDo(string OldSn, string NewSn, string BackStoreNo, string OutStoreNo, string MakerCode = "", int IsSend = 0)
+        public string ChangeBadPosDo(string OldSn, string NewSn, int IsSend = 0)
         {
             if (string.IsNullOrEmpty(OldSn))
             {
@@ -1521,135 +1531,253 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "原机具SN数量和新机具SN数量不一致";
             }
-            WebCMSEntities db = new WebCMSEntities();
-            PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == OldSn);
-            StoreForCode storeForBack = db.StoreForCode.FirstOrDefault(m => m.Code == BackStoreNo) ?? new StoreForCode();
-            StoreForCode storeForOut = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode();
-            StoreHouse BackStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForBack.StoreId) ?? new StoreHouse();
-            StoreHouse OutStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForOut.StoreId) ?? new StoreHouse();
-            string ChangeNo = "BPC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3);
-            KqProducts oldPosBrand = new KqProducts();
-            KqProducts newPosBrand = new KqProducts();
-            MachineChange add = db.MachineChange.Add(new MachineChange()
-            {
-                CreateDate = DateTime.Now,
-                UpdateDate = DateTime.Now,
-                CreateMan = SysUserName + "-" + SysRealName,
-                ChangeNo = ChangeNo, //转换单号
-                UserId = 0, //创客
-                ChangeTime = DateTime.Now, //转换时间
-                BackStoreId = BackStore.Id, //退回仓库
-                BackStoreName = BackStore.StoreName, //退回仓库名称
-                Remark = "坏机换新", //订单备注
-                BackStoreUserId = BackStore.UserId, //退回仓库归属人
-                OutProductType = int.Parse(OutStore.BrandId), //出库产品类型
-                OutProductName = OutStore.ProductName, //出库产品名称
-                OutStoreId = OutStore.Id, //出库仓库
-                OutStoreName = OutStore.StoreName, //出库仓库名称
-                OutStoreAreas = OutStore.Areas, //出库仓库所在地区
-                OutStoreAddress = OutStore.Address, //出库仓库地址
-                OutStoreManager = "", //出库仓库联系人
-                OutStoreManagerMobile = OutStore.ManageMobile, //出库仓库联系人手机号
-            }).Entity;
-            db.SaveChanges();
-            int BackProductType = 0;
-            string BackProductName = "";
-            string ChangeDeviceName = "";
-            string ChangeSnExpand = "";
+            decimal amount = 0;
             for (int i = 0; i < OldSnList.Length; i++)
             {
                 string OldSnNum = OldSnList[i];
                 string NewSnNum = NewSnList[i];
                 MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new MachineForSnNo();
                 MachineForSnNo newForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == NewSnNum) ?? new MachineForSnNo();
-                PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId);
+                PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId && m.BindingState == 0);
+                oldpos.Status = -1;
+                var oldStore = db.StoreHouse.FirstOrDefault(m => m.Id == oldpos.StoreId);
                 if (oldpos == null)
                 {
-                    return "原机具SN不正确";
+                    return "原机具SN不正确或者不符合换机条件";
                 }
-                PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId);
+                PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId && m.BuyUserId == 0 && m.UserId == 0 && m.BindingState == 0);
                 if (newpos == null)
                 {
-                    return "新机具SN不正确";
+                    return "新机具SN不正确或者不为仓库机";
                 }
-                oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts();
-                newPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new KqProducts();
-                Users user  = new Users();
-                if (!string.IsNullOrEmpty(MakerCode))
+                if (oldpos.BrandId != newpos.BrandId)
+                {
+                    return "新机具和旧机具品牌不相同";
+                }
+
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new KqProducts();
+                if (brandInfo.Name.Contains("大POS"))
+                {
+                    amount = 300;
+                }
+                if (brandInfo.Name.Contains("电签"))
                 {
-                    UserForMakerCode userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
-                    user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
+                    amount = 200;
+                }
+                var storehouse = db.StoreHouse.FirstOrDefault(m => m.Id == newpos.StoreId) ?? new StoreHouse();
+                storehouse.LaveNum -= 1;
+                var userAcount = db.UserAccount.FirstOrDefault(m => m.Id == storehouse.UserId) ?? new UserAccount();
+                if (oldpos.StoreId != newpos.StoreId)
+                {
+                    userAcount.ValidAmount += amount;
+                    newpos.StoreId = oldpos.StoreId;
+                    newpos.BuyUserId = oldpos.BuyUserId;
+                    newpos.UserId = oldpos.UserId;
+                    newpos.LeaderUserId = oldpos.LeaderUserId;
+                    newpos.PreUserId = oldpos.PreUserId;
+                    newpos.IsFirst = oldpos.IsFirst;
                 }
                 else
                 {
-                    user = db.Users.FirstOrDefault(m => m.Id == oldpos.UserId) ?? new Users();
+                    newpos.BuyUserId = oldpos.BuyUserId;
+                    newpos.UserId = oldpos.UserId;
+                    newpos.LeaderUserId = oldpos.LeaderUserId;
+                    newpos.PreUserId = oldpos.PreUserId;
+                    newpos.IsFirst = oldpos.IsFirst;
                 }
-                newpos.BuyUserId = oldpos.BuyUserId;
-                newpos.UserId = oldpos.UserId;
-                newpos.RecycEndDate = oldpos.RecycEndDate;
-                newpos.ScanQrTrade = oldpos.ScanQrTrade;
-                newpos.DebitCardTrade = oldpos.DebitCardTrade;
-                newpos.CreditTrade = oldpos.CreditTrade;
-                newpos.PosSnType = oldpos.PosSnType;
-                newpos.TransferTime = oldpos.TransferTime;
-                newpos.IsPurchase = oldpos.IsPurchase;
-                newpos.BindingState = oldpos.BindingState;
-                newpos.ActivationState = oldpos.ActivationState;
-                newpos.BindingTime = oldpos.BindingTime;
-                newpos.ActivationTime = oldpos.ActivationTime;
-                newpos.IsFirst = oldpos.IsFirst;
-                newpos.SeoKeyword = oldpos.SeoKeyword;
-                newpos.PrizeParams = oldpos.PrizeParams;
-                newpos.LeaderUserId = oldpos.LeaderUserId;
-                newpos.IsFirst = oldpos.IsFirst;
-                oldpos.Status = -1;
-                db.MachineChangeDetail.Add(new MachineChangeDetail()
+                db.SaveChanges();
+
+                var oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts();
+                var newPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new KqProducts();
+                var UserId = 0;
+                if (oldpos.BuyUserId == 0)
+                {
+                    UserId = oldStore.UserId;
+                }
+                else
+                {
+                    UserId = oldpos.BuyUserId;
+                }
+                BrokenMachineChange add = db.BrokenMachineChange.Add(new BrokenMachineChange()
                 {
                     CreateDate = DateTime.Now,
                     CreateMan = SysUserName + "-" + SysRealName,
-                    ChangeNo = ChangeNo, //订单号
-                    ChangeId = add.Id, //订单Id
-                    BackProductType = oldpos.BrandId, //退回产品类型
-                    BackProductName = oldPosBrand.Name, //退回产品名称
-                    UserId = 0, //创客
-                    BackSnNo = oldpos.PosSn, //设备SN编号
-                    OutProductType = newpos.BrandId, //出库产品类型
-                    OutProductName = newPosBrand.Name, //出库产品名称
-                    OutSnNo = newpos.PosSn, //出库设备SN编号
-                    OutSnType = newpos.PosSnType, //出库SN机具类型
-                    Remark = "坏机换新", //备注
-                    BackSnType = oldpos.PosSnType, //退回SN机具类型
-                });
+                    ChangeNo = "BPC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3), //转换单号
+                    UserId = UserId, //创客
+                }).Entity;
                 db.SaveChanges();
-                BackProductType = oldpos.BrandId;
-                BackProductName = newPosBrand.Name;
-                ChangeDeviceName = oldpos.DeviceName;
-                ChangeSnExpand += oldpos.PosSn + "\n";
-                PublicFunction.SycnMachineCount(oldpos.BuyUserId, oldpos.BrandId);
-            }
-            add.BackProductType = BackProductType; //退回产品类型
-            add.BackProductName = BackProductName; //退回产品名称
-            add.ChangeDeviceName = ChangeDeviceName; //转换机具名称
-            add.ChangeDeviceNum = OldSnList.Length; //转换机具数量
-            add.ChangeSnExpand = ChangeSnExpand; //机具SN
-            BackStore.LaveNum += OldSnList.Length; //退回仓库库存
-            OutStore.LaveNum -= OldSnList.Length; //出货仓库库存
-            db.SaveChanges();
-            db.Dispose();
-            if (IsSend == 1)
-            {
-                RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+                BrokenMachineChangeDetail adds = db.BrokenMachineChangeDetail.Add(new BrokenMachineChangeDetail()
                 {
-                    UserId = pos.BuyUserId, //接收创客
-                    MsgType = 2,
-                    Title = "坏机换新成功通知", //标题
-                    Summary = "您的 " + oldPosBrand.Name + " SN:" + OldSn + "已经成功为您换为" + newPosBrand.Name + "SN:" + NewSn + "。",
                     CreateDate = DateTime.Now,
+                    CreateMan = SysUserName + "-" + SysRealName,
+                    OutSnNo = OldSnNum,
+                    BackSnNo = NewSnNum,
+                    ChangeNo = add.ChangeNo, //转换单号
+                    ChangeId = add.Id, //转换记录Id
+                    UserId = add.UserId, //创客
+                }).Entity;
+                db.SaveChanges();
+                if (IsSend == 1)
+                {
+                    RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+                    {
+                        UserId = UserId, //接收创客
+                        MsgType = 2,
+                        Title = "坏机换新成功通知", //标题
+                        Summary = "您的坏机 " + oldPosBrand.Name + " SN:" + OldSn + "已经成功为您换为" + newPosBrand.Name + "SN:" + NewSn + "。",
+                        CreateDate = DateTime.Now,
 
-                }));
+                    }));
+                }
             }
             return "success";
         }
+
+        // public string ChangeBadPosDo(string OldSn, string NewSn, string BackStoreNo, string OutStoreNo, string MakerCode = "", int IsSend = 0)
+        // {
+        //     if (string.IsNullOrEmpty(OldSn))
+        //     {
+        //         return "请输入原机具SN";
+        //     }
+        //     if (string.IsNullOrEmpty(NewSn))
+        //     {
+        //         return "请输入新机具SN";
+        //     }
+        //     string[] OldSnList = OldSn.Split('\n');
+        //     string[] NewSnList = NewSn.Split('\n');
+        //     if (OldSnList.Length != NewSnList.Length)
+        //     {
+        //         return "原机具SN数量和新机具SN数量不一致";
+        //     }
+        //     WebCMSEntities db = new WebCMSEntities();
+        //     PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == OldSn);
+        //     StoreForCode storeForBack = db.StoreForCode.FirstOrDefault(m => m.Code == BackStoreNo) ?? new StoreForCode();
+        //     StoreForCode storeForOut = db.StoreForCode.FirstOrDefault(m => m.Code == OutStoreNo) ?? new StoreForCode();
+        //     StoreHouse BackStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForBack.StoreId) ?? new StoreHouse();
+        //     StoreHouse OutStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForOut.StoreId) ?? new StoreHouse();
+        //     string ChangeNo = "BPC" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(3);
+        //     KqProducts oldPosBrand = new KqProducts();
+        //     KqProducts newPosBrand = new KqProducts();
+        //     MachineChange add = db.MachineChange.Add(new MachineChange()
+        //     {
+        //         CreateDate = DateTime.Now,
+        //         UpdateDate = DateTime.Now,
+        //         CreateMan = SysUserName + "-" + SysRealName,
+        //         ChangeNo = ChangeNo, //转换单号
+        //         UserId = 0, //创客
+        //         ChangeTime = DateTime.Now, //转换时间
+        //         BackStoreId = BackStore.Id, //退回仓库
+        //         BackStoreName = BackStore.StoreName, //退回仓库名称
+        //         Remark = "坏机换新", //订单备注
+        //         BackStoreUserId = BackStore.UserId, //退回仓库归属人
+        //         OutProductType = int.Parse(OutStore.BrandId), //出库产品类型
+        //         OutProductName = OutStore.ProductName, //出库产品名称
+        //         OutStoreId = OutStore.Id, //出库仓库
+        //         OutStoreName = OutStore.StoreName, //出库仓库名称
+        //         OutStoreAreas = OutStore.Areas, //出库仓库所在地区
+        //         OutStoreAddress = OutStore.Address, //出库仓库地址
+        //         OutStoreManager = "", //出库仓库联系人
+        //         OutStoreManagerMobile = OutStore.ManageMobile, //出库仓库联系人手机号
+        //     }).Entity;
+        //     db.SaveChanges();
+        //     int BackProductType = 0;
+        //     string BackProductName = "";
+        //     string ChangeDeviceName = "";
+        //     string ChangeSnExpand = "";
+        //     for (int i = 0; i < OldSnList.Length; i++)
+        //     {
+        //         string OldSnNum = OldSnList[i];
+        //         string NewSnNum = NewSnList[i];
+        //         MachineForSnNo oldForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == OldSnNum) ?? new MachineForSnNo();
+        //         MachineForSnNo newForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == NewSnNum) ?? new MachineForSnNo();
+        //         PosMachinesTwo oldpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == oldForSnNo.SnId);
+        //         if (oldpos == null)
+        //         {
+        //             return "原机具SN不正确";
+        //         }
+        //         PosMachinesTwo newpos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == newForSnNo.SnId);
+        //         if (newpos == null)
+        //         {
+        //             return "新机具SN不正确";
+        //         }
+        //         oldPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == oldpos.BrandId) ?? new KqProducts();
+        //         newPosBrand = db.KqProducts.FirstOrDefault(m => m.Id == newpos.BrandId) ?? new KqProducts();
+        //         Users user = new Users();
+        //         if (!string.IsNullOrEmpty(MakerCode))
+        //         {
+        //             UserForMakerCode userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+        //             user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
+        //         }
+        //         else
+        //         {
+        //             user = db.Users.FirstOrDefault(m => m.Id == oldpos.UserId) ?? new Users();
+        //         }
+        //         newpos.BuyUserId = oldpos.BuyUserId;
+        //         newpos.UserId = oldpos.UserId;
+        //         newpos.RecycEndDate = oldpos.RecycEndDate;
+        //         newpos.ScanQrTrade = oldpos.ScanQrTrade;
+        //         newpos.DebitCardTrade = oldpos.DebitCardTrade;
+        //         newpos.CreditTrade = oldpos.CreditTrade;
+        //         newpos.PosSnType = oldpos.PosSnType;
+        //         newpos.TransferTime = oldpos.TransferTime;
+        //         newpos.IsPurchase = oldpos.IsPurchase;
+        //         newpos.BindingState = oldpos.BindingState;
+        //         newpos.ActivationState = oldpos.ActivationState;
+        //         newpos.BindingTime = oldpos.BindingTime;
+        //         newpos.ActivationTime = oldpos.ActivationTime;
+        //         newpos.IsFirst = oldpos.IsFirst;
+        //         newpos.SeoKeyword = oldpos.SeoKeyword;
+        //         newpos.PrizeParams = oldpos.PrizeParams;
+        //         newpos.LeaderUserId = oldpos.LeaderUserId;
+        //         newpos.IsFirst = oldpos.IsFirst;
+        //         oldpos.Status = -1;
+        //         db.MachineChangeDetail.Add(new MachineChangeDetail()
+        //         {
+        //             CreateDate = DateTime.Now,
+        //             CreateMan = SysUserName + "-" + SysRealName,
+        //             ChangeNo = ChangeNo, //订单号
+        //             ChangeId = add.Id, //订单Id
+        //             BackProductType = oldpos.BrandId, //退回产品类型
+        //             BackProductName = oldPosBrand.Name, //退回产品名称
+        //             UserId = 0, //创客
+        //             BackSnNo = oldpos.PosSn, //设备SN编号
+        //             OutProductType = newpos.BrandId, //出库产品类型
+        //             OutProductName = newPosBrand.Name, //出库产品名称
+        //             OutSnNo = newpos.PosSn, //出库设备SN编号
+        //             OutSnType = newpos.PosSnType, //出库SN机具类型
+        //             Remark = "坏机换新", //备注
+        //             BackSnType = oldpos.PosSnType, //退回SN机具类型
+        //         });
+        //         db.SaveChanges();
+        //         BackProductType = oldpos.BrandId;
+        //         BackProductName = newPosBrand.Name;
+        //         ChangeDeviceName = oldpos.DeviceName;
+        //         ChangeSnExpand += oldpos.PosSn + "\n";
+        //         PublicFunction.SycnMachineCount(oldpos.BuyUserId, oldpos.BrandId);
+        //     }
+        //     add.BackProductType = BackProductType; //退回产品类型
+        //     add.BackProductName = BackProductName; //退回产品名称
+        //     add.ChangeDeviceName = ChangeDeviceName; //转换机具名称
+        //     add.ChangeDeviceNum = OldSnList.Length; //转换机具数量
+        //     add.ChangeSnExpand = ChangeSnExpand; //机具SN
+        //     BackStore.LaveNum += OldSnList.Length; //退回仓库库存
+        //     OutStore.LaveNum -= OldSnList.Length; //出货仓库库存
+        //     db.SaveChanges();
+        //     db.Dispose();
+        //     if (IsSend == 1)
+        //     {
+        //         RedisDbconn.Instance.AddList("MsgPersonalQueue", Newtonsoft.Json.JsonConvert.SerializeObject(new MsgPersonal()
+        //         {
+        //             UserId = pos.BuyUserId, //接收创客
+        //             MsgType = 2,
+        //             Title = "坏机换新成功通知", //标题
+        //             Summary = "您的 " + oldPosBrand.Name + " SN:" + OldSn + "已经成功为您换为" + newPosBrand.Name + "SN:" + NewSn + "。",
+        //             CreateDate = DateTime.Now,
+
+        //         }));
+        //     }
+        //     return "success";
+        // }
         #endregion
 
 
@@ -1721,7 +1849,7 @@ namespace MySystem.Areas.Admin.Controllers
             if (forMerNo != null)
             {
                 PosMerchantInfo merchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId);
-                if(merchant != null)
+                if (merchant != null)
                 {
                     db.PosMerchantInfo.Remove(merchant);
                 }
@@ -1867,46 +1995,47 @@ namespace MySystem.Areas.Admin.Controllers
             ViewBag.SwapSnExpand = SwapSnExpand;
             ViewBag.SnNos = SnNos;
 
-            List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
-            var machineApplie = db.MachineApply.Where(m => m.Status > -1).ToList();
+            // List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
+            // var machineApplie = db.MachineApply.Where(m => m.Status > -1).ToList();
 
-            if (!string.IsNullOrEmpty(SwapSnExpand))
-            {
-                machineApplie = db.MachineApply.Where(m => m.Status > -1 && m.SwapSnExpand.Contains(SwapSnExpand)).ToList();
-                foreach (var item in machineApplie)
-                {
-                    var orders = db.Orders.FirstOrDefault(m => m.Sort == item.Id && m.Id == item.QueryCount);
-                    Dictionary<string, object> data = new Dictionary<string, object>();
-                    data["ApplyNo"] = item.ApplyNo.ToString();
-                    data["OrderNo"] = orders.OrderNo.ToString();
-                    data["MakerCode"] = item.ApplyNo.ToString();
-                    data["RealName"] = item.ApplyNo.ToString();
-                    data["ComeSn"] = item.ApplyNo.ToString();
-                    data["SendSn"] = item.ApplyNo.ToString();
-                    data["CreateDate"] = item.ApplyNo.ToString();
-                    data["Status"] = item.ApplyNo.ToString();
-                    dataList.Add(data);
-                }
-            }
-            if (!string.IsNullOrEmpty(SnNos))
-            {
-                machineApplie = db.MachineApply.Where(m => m.Status > -1 && m.SwapSnExpand.Contains(SnNos)).ToList();
-                foreach (var item in machineApplie)
-                {
-                    var orders = db.Orders.FirstOrDefault(m => m.Sort == item.Id && m.Id == item.QueryCount);
-                    Dictionary<string, object> data = new Dictionary<string, object>();
-                    data["ApplyNo"] = item.ApplyNo.ToString();
-                    data["OrderNo"] = orders.OrderNo.ToString();
-                    data["MakerCode"] = item.ApplyNo.ToString();
-                    data["RealName"] = item.ApplyNo.ToString();
-                    data["ComeSn"] = item.ApplyNo.ToString();
-                    data["SendSn"] = item.ApplyNo.ToString();
-                    data["CreateDate"] = item.ApplyNo.ToString();
-                    data["Status"] = item.ApplyNo.ToString();
-                    dataList.Add(data);
-                }
-            }
-            return View(dataList);
+            // if (!string.IsNullOrEmpty(SwapSnExpand))
+            // {
+            //     machineApplie = db.MachineApply.Where(m => m.Status > -1 && m.SwapSnExpand.Contains(SwapSnExpand)).ToList();
+            //     foreach (var item in machineApplie)
+            //     {
+            //         var orders = db.Orders.FirstOrDefault(m => m.Sort == item.Id && m.Id == item.QueryCount);
+            //         Dictionary<string, object> data = new Dictionary<string, object>();
+            //         data["ApplyNo"] = item.ApplyNo.ToString();
+            //         data["OrderNo"] = orders.OrderNo.ToString();
+            //         data["MakerCode"] = item.ApplyNo.ToString();
+            //         data["RealName"] = item.ApplyNo.ToString();
+            //         data["ComeSn"] = item.ApplyNo.ToString();
+            //         data["SendSn"] = item.ApplyNo.ToString();
+            //         data["CreateDate"] = item.ApplyNo.ToString();
+            //         data["Status"] = item.ApplyNo.ToString();
+            //         dataList.Add(data);
+            //     }
+            // }
+            // if (!string.IsNullOrEmpty(SnNos))
+            // {
+            //     machineApplie = db.MachineApply.Where(m => m.Status > -1 && m.SwapSnExpand.Contains(SnNos)).ToList();
+            //     foreach (var item in machineApplie)
+            //     {
+            //         var orders = db.Orders.FirstOrDefault(m => m.Sort == item.Id && m.Id == item.QueryCount);
+            //         Dictionary<string, object> data = new Dictionary<string, object>();
+            //         data["ApplyNo"] = item.ApplyNo.ToString();
+            //         data["OrderNo"] = orders.OrderNo.ToString();
+            //         data["MakerCode"] = item.ApplyNo.ToString();
+            //         data["RealName"] = item.ApplyNo.ToString();
+            //         data["ComeSn"] = item.ApplyNo.ToString();
+            //         data["SendSn"] = item.ApplyNo.ToString();
+            //         data["CreateDate"] = item.ApplyNo.ToString();
+            //         data["Status"] = item.ApplyNo.ToString();
+            //         dataList.Add(data);
+            //     }
+            // }
+            // return View(dataList);
+            return View();
         }
 
         #endregion
@@ -1918,8 +2047,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// </summary>
         /// <returns></returns>
 
-        [HttpPost]
-        public JsonResult LoopData(string SwapSnExpand, string SnNos, int page = 1, int limit = 30)
+        public IActionResult LoopData(string SwapSnExpand, string SnNos, int page = 1, int limit = 30)
         {
             Dictionary<string, string> Fields = new Dictionary<string, string>();
             Fields.Add("SwapSnExpand", "1"); //申请机具SN
@@ -1968,20 +2096,56 @@ namespace MySystem.Areas.Admin.Controllers
                 machineApplie = db.MachineApply.Where(m => m.Status > -1).ToList();
                 foreach (var item in machineApplie)
                 {
-                    var orders = db.Orders.FirstOrDefault(m => m.Sort == item.Id && m.Id == item.QueryCount);
+                    var orders = db.Orders.FirstOrDefault(m => m.Sort == item.Id && m.Id == item.QueryCount) ?? new Orders();
+                    var user = db.Users.FirstOrDefault(m => m.Id == item.UserId) ?? new Users();
                     Dictionary<string, object> data = new Dictionary<string, object>();
                     data["ApplyNo"] = item.ApplyNo.ToString();
-                    data["OrderNo"] = orders.OrderNo.ToString();
-                    data["MakerCode"] = item.ApplyNo.ToString();
-                    data["RealName"] = item.ApplyNo.ToString();
-                    data["ComeSn"] = item.ApplyNo.ToString();
-                    data["SendSn"] = item.ApplyNo.ToString();
-                    data["CreateDate"] = item.ApplyNo.ToString();
-                    data["Status"] = item.ApplyNo.ToString();
+                    if (!string.IsNullOrEmpty(orders.OrderNo))
+                    {
+                        data["OrderNo"] = orders.OrderNo.ToString();
+                    }
+                    if (string.IsNullOrEmpty(orders.OrderNo))
+                    {
+                        data["OrderNo"] = "";
+                    }
+                    if (!string.IsNullOrEmpty(orders.SnNos))
+                    {
+                        data["SendSn"] = orders.SnNos.ToString();
+                    }
+                    if (string.IsNullOrEmpty(orders.SnNos))
+                    {
+                        data["SendSn"] = "";
+                    }
+                    if (!string.IsNullOrEmpty(user.MakerCode))
+                    {
+                        data["MakerCode"] = user.MakerCode.ToString();
+                    }
+                    if (string.IsNullOrEmpty(user.MakerCode))
+                    {
+                        data["MakerCode"] = "";
+                    }
+                    if (!string.IsNullOrEmpty(user.RealName))
+                    {
+                        data["RealName"] = user.RealName.ToString();
+                    }
+                    if (string.IsNullOrEmpty(user.RealName))
+                    {
+                        data["RealName"] = "";
+                    }
+                    data["ComeSn"] = item.SwapSnExpand.ToString();
+                    data["CreateDate"] = item.CreateDate.ToString();
+                    if (item.ApplyNo.ToString() == "0")
+                    {
+                        data["Status"] = "待处理";
+                    }
+                    if (item.ApplyNo.ToString() == "1")
+                    {
+                        data["Status"] = "成功";
+                    }
                     dataList.Add(data);
                 }
             }
-
+            dataList = dataList.Skip((page - 1) * limit).Take(limit).ToList();//分页的重点
             return Json(dataList);
         }
 

+ 5 - 0
Areas/Admin/Controllers/MainServer/UserAccountRecordController.cs

@@ -124,6 +124,11 @@ namespace MySystem.Areas.Admin.Controllers
                 dic["ProductTypeName"] = RelationClass.GetKqProductBrandInfo(ProductType);
                 int ChangeType = int.Parse(dic["ChangeType"].ToString());
                 dic["ChangeTypeName"] = RelationClassForConst.GetChangeTypeInfo(ChangeType);
+                
+                //获得盟主5元奖励的机具Sn
+                int SnId = int.Parse(dic["QueryCount"].ToString());
+                PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == SnId) ?? new PosMachinesTwo();
+                dic["PosSn"] = pos.PosSn;
             }
             Dictionary<string, object> other = new Dictionary<string, object>();
             

+ 6 - 6
Areas/Admin/Controllers/MainServer/UsersController.cs

@@ -1599,7 +1599,7 @@ namespace MySystem.Areas.Admin.Controllers
 
             WebCMSEntities db = new WebCMSEntities();
             Dictionary<string, object> other = new Dictionary<string, object>();
-            DataTable dt = OtherMySqlConn.dtable("select Sum(HelpDirectTradeAmt + HelpDirectDebitTradeAmt) from TradeDaySummary where QueryCount=0 and SeoTitle='self' and UserId= '" + ParentId + "'" + con);
+            DataTable dt = OtherMySqlConn.dtable("select Sum(HelpDirectTradeAmt + HelpDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='self' and UserId= '" + ParentId + "'" + con);
             if (dt.Rows.Count > 0)
             {
                 TotalAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));
@@ -1630,7 +1630,7 @@ namespace MySystem.Areas.Admin.Controllers
                 YAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));
             }
 
-            dt = OtherMySqlConn.dtable("select Sum(NotHelpDirectTradeAmt + NotHelpDirectDebitTradeAmt) from TradeDaySummary where QueryCount=0 and SeoTitle='self' and UserId= '" + ParentId + "'" + con);
+            dt = OtherMySqlConn.dtable("select Sum(NotHelpDirectTradeAmt + NotHelpDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='self' and UserId= '" + ParentId + "'" + con);
             if (dt.Rows.Count > 0)
             {
                 TotalAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));
@@ -1684,7 +1684,7 @@ namespace MySystem.Areas.Admin.Controllers
                 TACount = Convert.ToInt32(function.CheckNum(dt.Rows[0][0].ToString()));
             }
 
-            DataTable dts = OtherMySqlConn.dtable("select Sum(HelpNonDirectTradeAmt + HelpNonDirectDebitTradeAmt) from TradeDaySummary where QueryCount=0 and SeoTitle='team' and UserId= '" + ParentId + "'" + con);
+            DataTable dts = OtherMySqlConn.dtable("select Sum(HelpNonDirectTradeAmt + HelpNonDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='team' and UserId= '" + ParentId + "'" + con);
             if (dts.Rows.Count > 0)
             {
                 TotalAmtfc1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][0].ToString()));
@@ -1715,7 +1715,7 @@ namespace MySystem.Areas.Admin.Controllers
                 YAmtfc1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][0].ToString()));
             }
 
-            dts = OtherMySqlConn.dtable("select Sum(NotHelpNoonDirectTradeAmt + NotHelpNonDirectDebitTradeAmt) from TradeDaySummary where QueryCount=0 and SeoTitle='team' and UserId= '" + ParentId + "'" + con);
+            dts = OtherMySqlConn.dtable("select Sum(NotHelpNonDirectTradeAmt + NotHelpNonDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='team' and UserId= '" + ParentId + "'" + con);
             if (dts.Rows.Count > 0)
             {
                 TotalAmtwd1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][0].ToString()));
@@ -1842,7 +1842,7 @@ namespace MySystem.Areas.Admin.Controllers
 
             WebCMSEntities db = new WebCMSEntities();
             Dictionary<string, object> obj = new Dictionary<string, object>();
-            DataTable dt = OtherMySqlConn.dtable("select Sum(HelpNonDirectTradeAmt + HelpNonDirectDebitTradeAmt) from TradeDaySummary where QueryCount=0 and SeoTitle='team'" + condition);
+            DataTable dt = OtherMySqlConn.dtable("select Sum(HelpNonDirectTradeAmt + HelpNonDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='team'" + condition);
             if (dt.Rows.Count > 0)
             {
                 TotalAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));
@@ -1873,7 +1873,7 @@ namespace MySystem.Areas.Admin.Controllers
                 YAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));
             }
 
-            dt = OtherMySqlConn.dtable("select Sum(NotHelpNonDirectTradeAmt + NotHelpNonDirectDebitTradeAmt) from TradeDaySummary where QueryCount=0 and SeoTitle='team'" + condition);
+            dt = OtherMySqlConn.dtable("select Sum(NotHelpNonDirectTradeAmt + NotHelpNonDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='team'" + condition);
             if (dt.Rows.Count > 0)
             {
                 TotalAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));

+ 371 - 0
Areas/Admin/Controllers/SpServer/ActivateRecordController.cs

@@ -0,0 +1,371 @@
+/*
+ * 激活记录
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.SpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class ActivateRecordController : BaseController
+    {
+        public ActivateRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SpSqlConnStr"].ToString();
+        }
+
+        #region 激活记录列表
+
+        /// <summary>
+        /// 根据条件查询激活记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(ActivateRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询激活记录列表
+
+        /// <summary>
+        /// 激活记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(ActivateRecord data, string ActivateStatusSelect, string ProductTypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerMobile", "1"); //商户手机号
+            Fields.Add("SnNo", "1"); //终端机身号
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //激活状态
+            if (!string.IsNullOrEmpty(ActivateStatusSelect))
+            {
+                condition += " and ActivateStatus=" + ActivateStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("ActivateRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //激活状态
+                string ActivateStatus = dic["ActivateStatus"].ToString();
+                if (ActivateStatus == "0") dic["ActivateStatus"] = "未激活";
+                if (ActivateStatus == "1") dic["ActivateStatus"] = "激活";
+                //产品类型
+                string ProductType = dic["ProductType"].ToString();
+                if (ProductType == "KYSPOS") dic["ProductType"] = "快益刷";
+                if (ProductType == "KPOS") dic["ProductType"] = "快联盟大POS";
+                if (ProductType == "SIGNPOS") dic["ProductType"] = "快联盟电签POS";
+                if (ProductType == "SUPPOS") dic["ProductType"] = "超级Mpos";
+                if (ProductType == "") dic["ProductType"] = "";
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加激活记录
+
+        /// <summary>
+        /// 增加或修改激活记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加激活记录
+
+        /// <summary>
+        /// 增加或修改激活记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(ActivateRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Add("ActivateRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "ActivateRecord", "add");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改激活记录
+
+        /// <summary>
+        /// 增加或修改激活记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            ActivateRecord editData = spdb.ActivateRecord.FirstOrDefault(m => m.Id == Id) ?? new ActivateRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改激活记录
+
+        /// <summary>
+        /// 增加或修改激活记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(ActivateRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ActivateRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "ActivateRecord", "update");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除激活记录信息
+
+        /// <summary>
+        /// 删除激活记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ActivateRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ActivateRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ActivateRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ActivateRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ActivateRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ActivateRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Sort("ActivateRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "ActivateRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                spdb.ActivateRecord.Add(new ActivateRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                spdb.SaveChanges();
+            }
+            AddSysLog("0", "ActivateRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(ActivateRecord data, string ActivateStatusSelect, string ProductTypeSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerMobile", "1"); //商户手机号
+            Fields.Add("SnNo", "1"); //终端机身号
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //激活状态
+            if (!string.IsNullOrEmpty(ActivateStatusSelect))
+            {
+                condition += " and ActivateStatus=" + ActivateStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("ActivateRecord", Fields, "Id desc", "0", 1, 20000, condition, "MerNo,MerName,MerMobile,SnNo,MerRegDate,AssessMonth,AssessMonthCount,ActivateStatus,ActivateDate,MerRealName,MerIdcardNo,Remark,AgentNo,ProductType,ChannelSerial", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //激活状态
+                string ActivateStatus = dic["ActivateStatus"].ToString();
+                if (ActivateStatus == "0") dic["ActivateStatus"] = "未激活";
+                if (ActivateStatus == "1") dic["ActivateStatus"] = "激活";
+                //产品类型
+                string ProductType = dic["ProductType"].ToString();
+                if (ProductType == "KYSPOS") dic["ProductType"] = "快益刷";
+                if (ProductType == "KPOS") dic["ProductType"] = "快联盟大POS";
+                if (ProductType == "SIGNPOS") dic["ProductType"] = "快联盟电签POS";
+                if (ProductType == "SUPPOS") dic["ProductType"] = "超级Mpos";
+                if (ProductType == "") dic["ProductType"] = "";
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("MerNo", "商户编号");
+            ReturnFields.Add("MerName", "商户名称");
+            ReturnFields.Add("MerMobile", "商户手机号");
+            ReturnFields.Add("SnNo", "终端机身号");
+            ReturnFields.Add("MerRegDate", "注册日期");
+            ReturnFields.Add("AssessMonth", "考核月");
+            ReturnFields.Add("AssessMonthCount", "考核第几月");
+            ReturnFields.Add("ActivateStatus", "激活状态");
+            ReturnFields.Add("ActivateDate", "激活日期");
+            ReturnFields.Add("MerRealName", "商户真实姓名");
+            ReturnFields.Add("MerIdcardNo", "商户身份证号");
+            ReturnFields.Add("Remark", "备注");
+            ReturnFields.Add("AgentNo", "代理商编号");
+            ReturnFields.Add("ProductType", "产品类型");
+            ReturnFields.Add("ChannelSerial", "渠道流水号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "ActivateRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 361 - 0
Areas/Admin/Controllers/SpServer/BindRecordController.cs

@@ -0,0 +1,361 @@
+/*
+ * 绑定记录
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.SpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class BindRecordController : BaseController
+    {
+        public BindRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SpSqlConnStr"].ToString();
+        }
+
+        #region 绑定记录列表
+
+        /// <summary>
+        /// 根据条件查询绑定记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(BindRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询绑定记录列表
+
+        /// <summary>
+        /// 绑定记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(BindRecord data, string MerOperateTypeSelect, string MerStatusSelect, string ProductTypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("AgentName", "1"); //机构名称
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerSnNo", "1"); //终端机身号
+            Fields.Add("MerNewSnNo", "1"); //新终端机身号
+            Fields.Add("CreateTime", "3"); //创建时间
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //操作类型
+            if (!string.IsNullOrEmpty(MerOperateTypeSelect))
+            {
+                condition += " and MerOperateType=" + MerOperateTypeSelect;
+            }
+            //商户状态
+            if (!string.IsNullOrEmpty(MerStatusSelect))
+            {
+                condition += " and MerStatus=" + MerStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("BindRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加绑定记录
+
+        /// <summary>
+        /// 增加或修改绑定记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加绑定记录
+
+        /// <summary>
+        /// 增加或修改绑定记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(BindRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Add("BindRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "BindRecord", "add");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改绑定记录
+
+        /// <summary>
+        /// 增加或修改绑定记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            BindRecord editData = spdb.BindRecord.FirstOrDefault(m => m.Id == Id) ?? new BindRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改绑定记录
+
+        /// <summary>
+        /// 增加或修改绑定记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(BindRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("BindRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "BindRecord", "update");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除绑定记录信息
+
+        /// <summary>
+        /// 删除绑定记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "BindRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("BindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "BindRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("BindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "BindRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("BindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Sort("BindRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "BindRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                spdb.BindRecord.Add(new BindRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                spdb.SaveChanges();
+            }
+            AddSysLog("0", "BindRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(BindRecord data, string MerOperateTypeSelect, string MerStatusSelect, string ProductTypeSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("AgentName", "1"); //机构名称
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerSnNo", "1"); //终端机身号
+            Fields.Add("MerNewSnNo", "1"); //新终端机身号
+            Fields.Add("CreateTime", "3"); //创建时间
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //操作类型
+            if (!string.IsNullOrEmpty(MerOperateTypeSelect))
+            {
+                condition += " and MerOperateType=" + MerOperateTypeSelect;
+            }
+            //商户状态
+            if (!string.IsNullOrEmpty(MerStatusSelect))
+            {
+                condition += " and MerStatus=" + MerStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("BindRecord", Fields, "Id desc", "0", 1, 20000, condition, "AgentName,MerNo,MerName,MerSnNo,MerOperateDate,MerOperateType,MerStatus,ProductType,MerNewSnNo,Remark,CreateTime,UpdateTime,ChannelSerial", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("AgentName", "机构名称");
+            ReturnFields.Add("MerNo", "商户编号");
+            ReturnFields.Add("MerName", "商户名称");
+            ReturnFields.Add("MerSnNo", "终端机身号");
+            ReturnFields.Add("MerOperateDate", "操作时间");
+            ReturnFields.Add("MerOperateType", "操作类型");
+            ReturnFields.Add("MerStatus", "商户状态");
+            ReturnFields.Add("ProductType", "产品类型");
+            ReturnFields.Add("MerNewSnNo", "新终端机身号");
+            ReturnFields.Add("Remark", "注释");
+            ReturnFields.Add("CreateTime", "创建时间");
+            ReturnFields.Add("UpdateTime", "更新时间");
+            ReturnFields.Add("ChannelSerial", "渠道流水号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "BindRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 339 - 0
Areas/Admin/Controllers/SpServer/ChangeBindRecordController.cs

@@ -0,0 +1,339 @@
+/*
+ * 换绑记录
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.SpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class ChangeBindRecordController : BaseController
+    {
+        public ChangeBindRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SpSqlConnStr"].ToString();
+        }
+
+        #region 换绑记录列表
+
+        /// <summary>
+        /// 根据条件查询换绑记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(ChangeBindRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询换绑记录列表
+
+        /// <summary>
+        /// 换绑记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(ChangeBindRecord data, string ProductTypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("AgentName", "1"); //机构名称
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerSnNo", "1"); //终端机身号
+            Fields.Add("MerNewSnNo", "1"); //新终端机身号
+            Fields.Add("ConfirmTime", "3"); //提交时间
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("ChangeBindRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加换绑记录
+
+        /// <summary>
+        /// 增加或修改换绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加换绑记录
+
+        /// <summary>
+        /// 增加或修改换绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(ChangeBindRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Add("ChangeBindRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "ChangeBindRecord", "add");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改换绑记录
+
+        /// <summary>
+        /// 增加或修改换绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            ChangeBindRecord editData = spdb.ChangeBindRecord.FirstOrDefault(m => m.Id == Id) ?? new ChangeBindRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改换绑记录
+
+        /// <summary>
+        /// 增加或修改换绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(ChangeBindRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ChangeBindRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "ChangeBindRecord", "update");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除换绑记录信息
+
+        /// <summary>
+        /// 删除换绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ChangeBindRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ChangeBindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ChangeBindRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ChangeBindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ChangeBindRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("ChangeBindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Sort("ChangeBindRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "ChangeBindRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                spdb.ChangeBindRecord.Add(new ChangeBindRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                spdb.SaveChanges();
+            }
+            AddSysLog("0", "ChangeBindRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(ChangeBindRecord data, string ProductTypeSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("AgentName", "1"); //机构名称
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerSnNo", "1"); //终端机身号
+            Fields.Add("MerNewSnNo", "1"); //新终端机身号
+            Fields.Add("ConfirmTime", "3"); //提交时间
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("ChangeBindRecord", Fields, "Id desc", "0", 1, 20000, condition, "AgentName,MerNo,MerName,MerSnNo,ProductType,MerNewSnNo,Remark,ConfirmTime,ReBindTime,ChannelSerial,AgentNo", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("AgentName", "机构名称");
+            ReturnFields.Add("MerNo", "商户编号");
+            ReturnFields.Add("MerName", "商户名称");
+            ReturnFields.Add("MerSnNo", "终端机身号");
+            ReturnFields.Add("ProductType", "产品类型");
+            ReturnFields.Add("MerNewSnNo", "新终端机身号");
+            ReturnFields.Add("Remark", "注释");
+            ReturnFields.Add("ConfirmTime", "提交时间");
+            ReturnFields.Add("ReBindTime", "重新绑定时间");
+            ReturnFields.Add("ChannelSerial", "渠道流水号");
+            ReturnFields.Add("AgentNo", "机构号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "ChangeBindRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 375 - 0
Areas/Admin/Controllers/SpServer/TradeFluxRecordController.cs

@@ -0,0 +1,375 @@
+/*
+ * 流量卡分佣交易
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.SpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class TradeFluxRecordController : BaseController
+    {
+        public TradeFluxRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SpSqlConnStr"].ToString();
+        }
+
+        #region 流量卡分佣交易列表
+
+        /// <summary>
+        /// 根据条件查询流量卡分佣交易列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(TradeFluxRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询流量卡分佣交易列表
+
+        /// <summary>
+        /// 流量卡分佣交易列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(TradeFluxRecord data, string TradeStatusSelect, string ProductTypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("KqTradeSeq", "1"); //快钱交易流水号
+
+
+            string condition = " and Status>-1";
+            //交易状态
+            if (!string.IsNullOrEmpty(TradeStatusSelect))
+            {
+                condition += " and TradeStatus=" + TradeStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("TradeFluxRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //交易状态
+                string TradeStatus = dic["TradeStatus"].ToString();
+                if (TradeStatus == "1") dic["TradeStatus"] = "成功";
+                if (TradeStatus == "2") dic["TradeStatus"] = "失败";
+                if (TradeStatus == "") dic["TradeStatus"] = "";
+                //银行卡类型
+                string BankCardType = dic["BankCardType"].ToString();
+                if (BankCardType == "0001") dic["BankCardType"] = "贷记卡";
+                if (BankCardType == "0002") dic["BankCardType"] = "借记卡";
+                if (BankCardType == "") dic["BankCardType"] = "";
+                //产品类型
+                string ProductType = dic["ProductType"].ToString();
+                if (ProductType == "KYSPOS") dic["ProductType"] = "快益刷";
+                if (ProductType == "KPOS") dic["ProductType"] = "快联盟大POS";
+                if (ProductType == "SIGNPOS") dic["ProductType"] = "快联盟电签POS";
+                if (ProductType == "SUPPOS") dic["ProductType"] = "超级Mpos";
+                if (ProductType == "") dic["ProductType"] = "";
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加流量卡分佣交易
+
+        /// <summary>
+        /// 增加或修改流量卡分佣交易信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加流量卡分佣交易
+
+        /// <summary>
+        /// 增加或修改流量卡分佣交易信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(TradeFluxRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Add("TradeFluxRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "TradeFluxRecord", "add");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改流量卡分佣交易
+
+        /// <summary>
+        /// 增加或修改流量卡分佣交易信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            TradeFluxRecord editData = spdb.TradeFluxRecord.FirstOrDefault(m => m.Id == Id) ?? new TradeFluxRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改流量卡分佣交易
+
+        /// <summary>
+        /// 增加或修改流量卡分佣交易信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(TradeFluxRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeFluxRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "TradeFluxRecord", "update");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除流量卡分佣交易信息
+
+        /// <summary>
+        /// 删除流量卡分佣交易信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "TradeFluxRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeFluxRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "TradeFluxRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeFluxRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "TradeFluxRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeFluxRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Sort("TradeFluxRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "TradeFluxRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                spdb.TradeFluxRecord.Add(new TradeFluxRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                spdb.SaveChanges();
+            }
+            AddSysLog("0", "TradeFluxRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(TradeFluxRecord data, string TradeStatusSelect, string ProductTypeSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("KqTradeSeq", "1"); //快钱交易流水号
+
+
+            string condition = " and Status>-1";
+            //交易状态
+            if (!string.IsNullOrEmpty(TradeStatusSelect))
+            {
+                condition += " and TradeStatus=" + TradeStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("TradeFluxRecord", Fields, "Id desc", "0", 1, 20000, condition, "TradeSerialNo,MerNo,TradeAmount,TradeStatus,TradeDate,TradeTime,BankCardType,DigAmt,BankCardNo,FeeAmount,KqTradeSeq,ProductType,AgentNo", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //交易状态
+                string TradeStatus = dic["TradeStatus"].ToString();
+                if (TradeStatus == "1") dic["TradeStatus"] = "成功";
+                if (TradeStatus == "2") dic["TradeStatus"] = "失败";
+                if (TradeStatus == "") dic["TradeStatus"] = "";
+                //银行卡类型
+                string BankCardType = dic["BankCardType"].ToString();
+                if (BankCardType == "0001") dic["BankCardType"] = "贷记卡";
+                if (BankCardType == "0002") dic["BankCardType"] = "借记卡";
+                if (BankCardType == "") dic["BankCardType"] = "";
+                //产品类型
+                string ProductType = dic["ProductType"].ToString();
+                if (ProductType == "KYSPOS") dic["ProductType"] = "快益刷";
+                if (ProductType == "KPOS") dic["ProductType"] = "快联盟大POS";
+                if (ProductType == "SIGNPOS") dic["ProductType"] = "快联盟电签POS";
+                if (ProductType == "SUPPOS") dic["ProductType"] = "超级Mpos";
+                if (ProductType == "") dic["ProductType"] = "";
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("TradeSerialNo", "交易单号");
+            ReturnFields.Add("MerNo", "商户编号");
+            ReturnFields.Add("TradeAmount", "交易金额");
+            ReturnFields.Add("TradeStatus", "交易状态");
+            ReturnFields.Add("TradeDate", "交易日期");
+            ReturnFields.Add("TradeTime", "交易时间");
+            ReturnFields.Add("BankCardType", "银行卡类型");
+            ReturnFields.Add("DigAmt", "挖款金额");
+            ReturnFields.Add("BankCardNo", "交易卡号");
+            ReturnFields.Add("FeeAmount", "手续费");
+            ReturnFields.Add("KqTradeSeq", "快钱交易流水号");
+            ReturnFields.Add("ProductType", "产品类型");
+            ReturnFields.Add("AgentNo", "代理商编号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "TradeFluxRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 375 - 0
Areas/Admin/Controllers/SpServer/TradeRecordController.cs

@@ -0,0 +1,375 @@
+/*
+ * 交易记录
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.SpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class SpTradeRecordController : BaseController
+    {
+        public SpTradeRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SpSqlConnStr"].ToString();
+        }
+
+        #region 交易记录列表
+
+        /// <summary>
+        /// 根据条件查询交易记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(TradeRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询交易记录列表
+
+        /// <summary>
+        /// 交易记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(TradeRecord data, string TradeStatusSelect, string ProductTypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //交易状态
+            if (!string.IsNullOrEmpty(TradeStatusSelect))
+            {
+                condition += " and TradeStatus=" + TradeStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("TradeRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //交易状态
+                string TradeStatus = dic["TradeStatus"].ToString();
+                if (TradeStatus == "1") dic["TradeStatus"] = "成功";
+                if (TradeStatus == "2") dic["TradeStatus"] = "失败";
+                if (TradeStatus == "") dic["TradeStatus"] = "";
+                //银行卡类型
+                string BankCardType = dic["BankCardType"].ToString();
+                if (BankCardType == "0001") dic["BankCardType"] = "贷记卡";
+                if (BankCardType == "0002") dic["BankCardType"] = "借记卡";
+                if (BankCardType == "") dic["BankCardType"] = "";
+                //产品类型
+                string ProductType = dic["ProductType"].ToString();
+                if (ProductType == "KYSPOS") dic["ProductType"] = "快益刷";
+                if (ProductType == "KPOS") dic["ProductType"] = "快联盟大POS";
+                if (ProductType == "SIGNPOS") dic["ProductType"] = "快联盟电签POS";
+                if (ProductType == "SUPPOS") dic["ProductType"] = "超级Mpos";
+                if (ProductType == "") dic["ProductType"] = "";
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加交易记录
+
+        /// <summary>
+        /// 增加或修改交易记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加交易记录
+
+        /// <summary>
+        /// 增加或修改交易记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(TradeRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Add("TradeRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "TradeRecord", "add");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改交易记录
+
+        /// <summary>
+        /// 增加或修改交易记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            TradeRecord editData = spdb.TradeRecord.FirstOrDefault(m => m.Id == Id) ?? new TradeRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改交易记录
+
+        /// <summary>
+        /// 增加或修改交易记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(TradeRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "TradeRecord", "update");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除交易记录信息
+
+        /// <summary>
+        /// 删除交易记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "TradeRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "TradeRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "TradeRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("TradeRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Sort("TradeRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "TradeRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                spdb.TradeRecord.Add(new TradeRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                spdb.SaveChanges();
+            }
+            AddSysLog("0", "TradeRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(TradeRecord data, string TradeStatusSelect, string ProductTypeSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //交易状态
+            if (!string.IsNullOrEmpty(TradeStatusSelect))
+            {
+                condition += " and TradeStatus=" + TradeStatusSelect;
+            }
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("TradeRecord", Fields, "Id desc", "0", 1, 20000, condition, "TradeSerialNo,MerNo,TradeAmount,TradeStatus,TradeDate,TradeTime,BankCardType,BankCardNo,SettleFee,Remark,ProductType,AgentNo,ChannelSerial", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //交易状态
+                string TradeStatus = dic["TradeStatus"].ToString();
+                if (TradeStatus == "1") dic["TradeStatus"] = "成功";
+                if (TradeStatus == "2") dic["TradeStatus"] = "失败";
+                if (TradeStatus == "") dic["TradeStatus"] = "";
+                //银行卡类型
+                string BankCardType = dic["BankCardType"].ToString();
+                if (BankCardType == "0001") dic["BankCardType"] = "贷记卡";
+                if (BankCardType == "0002") dic["BankCardType"] = "借记卡";
+                if (BankCardType == "") dic["BankCardType"] = "";
+                //产品类型
+                string ProductType = dic["ProductType"].ToString();
+                if (ProductType == "KYSPOS") dic["ProductType"] = "快益刷";
+                if (ProductType == "KPOS") dic["ProductType"] = "快联盟大POS";
+                if (ProductType == "SIGNPOS") dic["ProductType"] = "快联盟电签POS";
+                if (ProductType == "SUPPOS") dic["ProductType"] = "超级Mpos";
+                if (ProductType == "") dic["ProductType"] = "";
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("TradeSerialNo", "交易单号");
+            ReturnFields.Add("MerNo", "商户编号");
+            ReturnFields.Add("TradeAmount", "交易金额");
+            ReturnFields.Add("TradeStatus", "交易状态");
+            ReturnFields.Add("TradeDate", "交易日期");
+            ReturnFields.Add("TradeTime", "交易时间");
+            ReturnFields.Add("BankCardType", "银行卡类型");
+            ReturnFields.Add("BankCardNo", "交易卡号");
+            ReturnFields.Add("SettleFee", "出款手续费");
+            ReturnFields.Add("Remark", "备注");
+            ReturnFields.Add("ProductType", "产品类型");
+            ReturnFields.Add("AgentNo", "代理商编号");
+            ReturnFields.Add("ChannelSerial", "渠道流水号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "TradeRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 337 - 0
Areas/Admin/Controllers/SpServer/UnBindRecordController.cs

@@ -0,0 +1,337 @@
+/*
+ * 解绑记录
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.SpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class UnBindRecordController : BaseController
+    {
+        public UnBindRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SpSqlConnStr"].ToString();
+        }
+
+        #region 解绑记录列表
+
+        /// <summary>
+        /// 根据条件查询解绑记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(UnBindRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询解绑记录列表
+
+        /// <summary>
+        /// 解绑记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(UnBindRecord data, string ProductTypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("AgentName", "1"); //机构名称
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerSnNo", "1"); //终端机身号
+            Fields.Add("UnBindTime", "3"); //解绑时间
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("UnBindRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加解绑记录
+
+        /// <summary>
+        /// 增加或修改解绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加解绑记录
+
+        /// <summary>
+        /// 增加或修改解绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(UnBindRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("AgentNo", data.AgentNo); //机构号
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Add("UnBindRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "UnBindRecord", "add");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改解绑记录
+
+        /// <summary>
+        /// 增加或修改解绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            UnBindRecord editData = spdb.UnBindRecord.FirstOrDefault(m => m.Id == Id) ?? new UnBindRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改解绑记录
+
+        /// <summary>
+        /// 增加或修改解绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(UnBindRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("AgentNo", data.AgentNo); //机构号
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("UnBindRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "UnBindRecord", "update");
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除解绑记录信息
+
+        /// <summary>
+        /// 删除解绑记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UnBindRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("UnBindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UnBindRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("UnBindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UnBindRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Edit("UnBindRecord", Fields, id);
+            }
+            spdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).Sort("UnBindRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "UnBindRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string Import(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+
+                spdb.UnBindRecord.Add(new UnBindRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                spdb.SaveChanges();
+            }
+            AddSysLog("0", "UnBindRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(UnBindRecord data, string ProductTypeSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("AgentName", "1"); //机构名称
+            Fields.Add("MerNo", "1"); //商户编号
+            Fields.Add("MerName", "1"); //商户名称
+            Fields.Add("MerSnNo", "1"); //终端机身号
+            Fields.Add("UnBindTime", "3"); //解绑时间
+            Fields.Add("ChannelSerial", "1"); //渠道流水号
+
+
+            string condition = " and Status>-1";
+            //产品类型
+            if (!string.IsNullOrEmpty(ProductTypeSelect))
+            {
+                condition += " and ProductType=" + ProductTypeSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.SpTables).IndexData("UnBindRecord", Fields, "Id desc", "0", 1, 20000, condition, "AgentName,MerNo,MerName,MerSnNo,ProductType,Remark,UnBindTime,ChannelSerial,AgentNo", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("AgentName", "机构名称");
+            ReturnFields.Add("MerNo", "商户编号");
+            ReturnFields.Add("MerName", "商户名称");
+            ReturnFields.Add("MerSnNo", "终端机身号");
+            ReturnFields.Add("ProductType", "产品类型");
+            ReturnFields.Add("Remark", "注释");
+            ReturnFields.Add("UnBindTime", "解绑时间");
+            ReturnFields.Add("ChannelSerial", "渠道流水号");
+            ReturnFields.Add("AgentNo", "机构号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "UnBindRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 246 - 0
Areas/Admin/Views/MainServer/PosMachinesFeeChangeRecord/Add.cshtml

@@ -0,0 +1,246 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>机具费率调整申请(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+@{Dictionary<string, string> UsersDic = new MySystem.DictionaryClass().getUsersDic();}
+<div class="layui-form-item">
+<label class="layui-form-label">创客</label>
+<div class="layui-input-inline">
+<select id="UserId" name="UserId" lay-search="">
+<option value="">请选择</option>
+@foreach (string key in UsersDic.Keys)
+{
+<option value="@key">@UsersDic[key]</option>
+}
+</select>
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">调整费率</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="ChangeFee" name="ChangeFee" maxlength="20" lay-verify="" autocomplete="off" placeholder="请输入调整费率">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">机具SN</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="PosSn" name="PosSn" maxlength="50" lay-verify="required|" autocomplete="off" placeholder="请输入机具SN">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">商户号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="MerNo" name="MerNo" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入商户号">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">机具所属人</label>
+<div class="layui-input-inline">
+<select id="PosUserId" name="PosUserId" lay-search="">
+<option value="">请选择</option>
+@foreach (string key in UsersDic.Keys)
+{
+<option value="@key">@UsersDic[key]</option>
+}
+</select>
+</div>
+</div>
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 250 - 0
Areas/Admin/Views/MainServer/PosMachinesFeeChangeRecord/Edit.cshtml

@@ -0,0 +1,250 @@
+@using MySystem.Models;
+@{PosMachinesFeeChangeRecord editData = ViewBag.data as PosMachinesFeeChangeRecord;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>机具费率调整申请(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+@{Dictionary<string, string> UsersDic = new MySystem.DictionaryClass().getUsersDic();}
+<div class="layui-form-item">
+<label class="layui-form-label">创客</label>
+<div class="layui-input-inline">
+<select id="UserId" name="UserId" lay-search="">
+<option value="">请选择</option>
+@foreach (string key in UsersDic.Keys)
+{
+<option value="@key">@UsersDic[key]</option>
+}
+</select>
+<script>$("#UserId").val("@editData.UserId");</script>
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">调整费率</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="ChangeFee" name="ChangeFee" value="@editData.ChangeFee" maxlength="20" lay-verify="" autocomplete="off" placeholder="请输入调整费率">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">机具SN</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="PosSn" name="PosSn" value="@editData.PosSn" maxlength="50" lay-verify="required|" autocomplete="off" placeholder="请输入机具SN">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">商户号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="MerNo" name="MerNo" value="@editData.MerNo" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入商户号">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">机具所属人</label>
+<div class="layui-input-inline">
+<select id="PosUserId" name="PosUserId" lay-search="">
+<option value="">请选择</option>
+@foreach (string key in UsersDic.Keys)
+{
+<option value="@key">@UsersDic[key]</option>
+}
+</select>
+<script>$("#PosUserId").val("@editData.PosUserId");</script>
+</div>
+</div>
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 202 - 0
Areas/Admin/Views/MainServer/PosMachinesFeeChangeRecord/Index.cshtml

@@ -0,0 +1,202 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>机具费率调整申请</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline {
+            width: 175px !important;
+        }
+
+        .layui-form-label {
+            width: 85px !important;
+        }
+
+        .layui-inline {
+            margin-right: 0px !important;
+        }
+
+        .w100 {
+            width: 100px !important;
+        }
+
+        .ml50 {
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创客创客编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="UserIdMakerCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创客真实姓名</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="UserIdRealName" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创建时间</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" readonly name="CreateDateData" id="CreateDate"
+                                placeholder="" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">机具SN</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="PosSn" placeholder="" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">商户号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="MerNo" placeholder="" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">机具所属人创客编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="PosUserIdMakerCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">机具所属人真实姓名</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="PosUserIdRealName" autocomplete="off">
+                        </div>
+                    </div>
+                    @{
+                        Dictionary<string, string> ProfitObjectsActivesDic = new
+                    MySystem.DictionaryClass().getKqProductBrandDic();
+                    }
+                    <div class="layui-inline">
+                        <label class="layui-form-label">品牌</label>
+                        <div class="layui-input-inline">
+                            <select id="Sort" name="Sort" lay-search="">
+                                <option value="">全部...</option>
+                                @foreach (string key in ProfitObjectsActivesDic.Keys)
+                                {
+                                    <option value="@key">@ProfitObjectsActivesDic[key]</option>
+                                }
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">状态</label>
+                        <div class="layui-input-inline">
+                            <select id="StatusSelect" name="StatusSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">处理中</option>
+                                <option value="1">成功</option>
+                                <option value="-1">失败</option>
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i
+                            class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i
+                            class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_export,"))
+                    {
+                        @* <button class="layui-btn" data-type="ImportData"><i
+                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>导入</button> *@
+                        <button class="layui-btn" data-type="ExportExcel"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script
+        src="/layuiadmin/modules_main/PosMachinesFeeChangeRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 203 - 0
Areas/Admin/Views/MainServer/PosMachinesTwoChange/Add.cshtml

@@ -0,0 +1,203 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>机具库(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 215 - 0
Areas/Admin/Views/MainServer/PosMachinesTwoChange/Edit.cshtml

@@ -0,0 +1,215 @@
+@using MySystem.Models;
+@{PosMachinesTwo editData = ViewBag.data as PosMachinesTwo;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>机具库(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">机具类型</label>
+                            <div class="layui-input-inline">
+                                <select id="PosSnType" name="PosSnType" lay-search="">
+                                    <option value=""></option>
+                                    <option value="0">购买机</option>
+                                    <option value="1">赠送机</option>
+                                </select>
+                                <script>$("#PosSnType").val("@editData.PosSnType");</script>
+                            </div>
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 134 - 0
Areas/Admin/Views/MainServer/PosMachinesTwoChange/Import.cshtml

@@ -0,0 +1,134 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>导入数据</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+    <style>
+        .layui-form-label {
+            width: 135px !important;
+        }
+
+        .layui-form-item .layui-input-block {
+            margin-left: 165px !important;
+        }
+    </style>
+</head>
+
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+
+        <div class="layui-card">
+            <div class="layui-card-body">
+                <div class="layui-tab" lay-filter="mytabbar">
+                    <div class="layui-tab-content mt20">
+                        <div class="layui-tab-item layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">模板下载</label>
+                                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                                    <a href="/users/机具费率调整模版.xlsx">点击下载机具费率调整模板</a>
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">excel文件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="ExcelPath" name="ExcelPath" value="">
+                                        <button class="layui-btn" type="button" id="ExcelPathBtn">选择</button>
+                                        <div class="layui-inline layui-word-aux"></div>
+                                    </div>
+                                    <div class="mt10" id="ExcelPathFile">
+                                    </div>
+                                </div>
+                            </div>
+
+                        </div>
+
+                    </div>
+                </div>
+                <div class="layui-form-item layui-hide">
+                    <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                        value="确认">
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+
+
+        //编辑器
+        KindEditor.ready(function (K) {
+
+        });
+
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+
+            //日期
+
+
+            //上传文件
+            WebUploadJs('ExcelPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', { width: 0, height: 0, quality: 0 }, { max_file_size: 1048576 }, function (filename) {
+                var fName = (filename.substring(filename.lastIndexOf("/"))).split("/");
+                $('#ExcelPathFile').html(fName);
+                $('#ExcelPath').val(filename);
+            });
+
+            //穿梭框
+
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        });
+
+    </script>
+</body>
+
+</html>

+ 216 - 0
Areas/Admin/Views/MainServer/PosMachinesTwoChange/Index.cshtml

@@ -0,0 +1,216 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>机具库</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline {
+            width: 175px !important;
+        }
+
+        .layui-form-label {
+            width: 85px !important;
+        }
+
+        .layui-inline {
+            margin-right: 0px !important;
+        }
+
+        .w100 {
+            width: 100px !important;
+        }
+
+        .ml50 {
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创客编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="UserIdMakerCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创客姓名</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="UserIdRealName" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">仓库编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="StoreIdCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">仓库名称</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="StoreIdName" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">SN编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="PosSn" placeholder="" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否调升费率</label>
+                        <div class="layui-input-inline">
+                            <select id="UpFeeFlagSelect" name="UpFeeFlagSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="1">已调升</option>
+                                <option value="0">未调升</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">绑定状态</label>
+                        <div class="layui-input-inline">
+                            <select id="BindingStateSelect" name="BindingStateSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">未绑定</option>
+                                <option value="1">已绑定</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">激活状态</label>
+                        <div class="layui-input-inline">
+                            <select id="ActivationStateSelect" name="ActivationStateSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">未激活</option>
+                                <option value="1">已激活</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">激活时间</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" readonly name="ActivationDateData"
+                                id="ActivationTime" placeholder="激活时间" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">绑定时间</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" readonly name="BindingDateData" id="BindingTime"
+                                placeholder="绑定时间" autocomplete="off">
+                        </div>
+                    </div>
+                    @{
+                        Dictionary<string, string> ProfitObjectsActivesDic = new
+                    MySystem.DictionaryClass().getKqProductBrandDic();
+                    }
+                    <div class="layui-inline">
+                        <label class="layui-form-label">品牌</label>
+                        <div class="layui-input-inline">
+                            <select id="BrandId" name="BrandId" lay-search="">
+                                <option value="">全部...</option>
+                                @foreach (string key in ProfitObjectsActivesDic.Keys)
+                                {
+                                    <option value="@key">@ProfitObjectsActivesDic[key]</option>
+                                }
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                        @if (RightInfo.Contains("," + right + "_export,"))
+                        {
+                            <button class="layui-btn" data-type="ExportExcel"><i
+                                class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+                        }
+                        @if (RightInfo.Contains("," + right + "_batchset,"))
+                        {
+                            <button class="layui-btn" data-type="BatchSetting"><i
+                                class="layui-icon layui-icon-edit layuiadmin-button-btn"></i>批量调升费率</button>
+                        }
+                        @if (RightInfo.Contains("," + right + "_import,"))
+                        {
+                            @* <button class="layui-btn" data-type="ImportData"><i class="layui-icon layui-icon-export
+                                layuiadmin-button-btn"></i>导入机具费率</button> *@
+                            <button class="layui-btn" data-type="ImportData"><i
+                                class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>导入机具费率</button>
+                        }
+                    </div>
+                </div>
+            </div>
+            <div id="excelForm" style="display:none; padding:20px;">
+                <div class="layui-tab-item layui-show">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">模板下载</label>
+                        <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">excel文件</label>
+                        <div class="layui-form-mid layui-word-aux">
+                            <div class="layui-upload">
+                                <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                            </div>
+                            <div class="mt10" id="ExcelFileList">
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item ml10">
+                    <div class="layui-input-block">
+                        <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <blockquote class="layui-elem-quote layui-text">
+                    总机具(台):<span style="color: #f00;" id="TotalCount">0</span>
+                </blockquote>
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                            <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_Home,"))
+                    {
+                            <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="home"><i class="layui-icon layui-icon-edit"></i>一键归位</a>
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script
+        src="/layuiadmin/modules_main/PosMachinesTwoChange_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 8 - 1
Areas/Admin/Views/MainServer/PosMerchantInfoList/Index.cshtml

@@ -40,7 +40,7 @@
                         <label class="layui-form-label">身份证号</label>
                         <div class="layui-input-inline">
                             <input class="layui-input" type="text" name="MerIdcardNo" 
-                                placeholder="请输入身份证号前六位或后四位" autocomplete="off">
+                                placeholder="请输入身份证号" autocomplete="off">
                         </div>
                     </div>
                     <div class="layui-inline">
@@ -50,6 +50,13 @@
                                 placeholder="请输入商户姓名" autocomplete="off">
                         </div>
                     </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">手机号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="MerchantMobile" 
+                                placeholder="请输入手机号" autocomplete="off">
+                        </div>
+                    </div>
                     <div class="layui-inline ml50">
                         <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
                             <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询

+ 3 - 3
Areas/Admin/Views/MainServer/StoreHouse/Import.cshtml

@@ -49,10 +49,10 @@
                                 {
                                 <a href="/users/客小爽仓库发货至创客模版.xlsx">点击下载仓库发货至创客模版</a>
                                 }
-                                @if(ExcelKind == "4")
+                                @* @if(ExcelKind == "4")
                                 {
-                                <a href="/users/客小爽机具驳回仓库模版.xlsx">点击下载机具驳回仓库模版</a>
-                                }
+                                <a href="/users/客机具驳回仓库.xlsx">点击下载创客机具驳回仓库模版</a>
+                                } *@
                             </div>
                         </div>
                         <div class="layui-form-item">

+ 4 - 0
Areas/Admin/Views/MainServer/StoreHouse/Index.cshtml

@@ -154,6 +154,10 @@
                             class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>仓库发货至创客</button>
                         @* <button class="layui-btn" data-type="ImportBack"><i class="layui-icon layui-icon-upload
                             layuiadmin-button-btn"></i>机具回仓库</button> *@
+
+                    }
+                    @if (RightInfo.Contains("," + right + "_import4,") || RightInfo.Contains("," + right + "_import,"))
+                    {
                         <button class="layui-btn" data-type="ImportRejectStore"><i
                             class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>机具驳回仓库</button>
 

+ 13 - 0
Areas/Admin/Views/MainServer/StoreHouseAmountRecord/Index.cshtml

@@ -73,6 +73,19 @@
                             </select>
                         </div>
                     </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">变动类别</label>
+                        <div class="layui-input-inline">
+                            <select id="AmountTypeSelect" name="AmountTypeSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">购买临时额度</option>
+                                <option value="1">增减分仓临时额度</option>
+                                <option value="1">调低额度返回余额</option>
+                                <option value="1">仓库发货,预发机申请</option>
+                                <option value="1">后台仓库调拨</option>
+                            </select>
+                        </div>
+                    </div>
                     <div class="layui-inline">
                         <label class="layui-form-label">操作类别</label>
                         <div class="layui-input-inline">

+ 4 - 4
Areas/Admin/Views/MainServer/SysTools/ChangeBadPos.cshtml

@@ -34,16 +34,16 @@
                                     <label class="layui-form-label">原机具SN</label>
                                     <div class="layui-input-block">
                                         <textarea class="layui-textarea" lay-verify="required|" name="OldSn" id="OldSn"
-                                            placeholder="请输入原机具SN,多个SN用回车隔开"></textarea>
+                                            placeholder="请输入原机具SN"></textarea>
                                     </div>
                                 </div>
                                 <div class="layui-form-item">
                                     <label class="layui-form-label">新机具SN</label>
                                     <div class="layui-input-block">
                                         <textarea class="layui-textarea" lay-verify="required|" name="NewSn" id="NewSn"
-                                            placeholder="请输入新机具SN,多个SN用回车隔开"></textarea>
+                                            placeholder="请输入新机具SN"></textarea>
                                     </div>
-                                </div>
+                                @* </div>
                                 <div class="layui-form-item">
                                     <label class="layui-form-label">退回仓库编号</label>
                                     <div class="layui-input-inline">
@@ -66,7 +66,7 @@
                                         <input class="layui-input" type="text" id="MakerCode" name="MakerCode" maxlength="50"
                                             autocomplete="off" placeholder="请输入创客编号">
                                     </div>
-                                </div>
+                                </div> *@
                                 <div class="layui-form-item">
                                     <label class="layui-form-label">是否推送消息</label>
                                     <div class="layui-input-block">

+ 1 - 0
Areas/Admin/Views/MainServer/UserAccountRecord/Index.cshtml

@@ -109,6 +109,7 @@
                                 <option value="60">流量卡分佣</option>
                                 <option value="111">分润补贴</option>
                                 <option value="112">直推奖励</option>
+                                <option value="116">大盟主奖励</option>
                             </select>
                         </div>
                     </div>

+ 47 - 40
Areas/Admin/Views/MainServer/UserCashRecord/Import.cshtml

@@ -1,64 +1,69 @@
 @{
     string RightInfo = ViewBag.RightInfo as string;
     string right = ViewBag.right as string;
-    
+
 }
 <!DOCTYPE html>
 <html>
+
 <head>
     <meta charset="utf-8">
     <title>导入数据</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
     <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
     <script src="/admin/js/jquery-1.10.1.min.js"></script>
     <script src="/admin/js/LAreaData2.js"></script>
     <style>
-        .layui-form-label{
+        .layui-form-label {
             width: 135px !important;
         }
-        .layui-form-item .layui-input-block{
+
+        .layui-form-item .layui-input-block {
             margin-left: 165px !important;
         }
     </style>
 </head>
+
 <body>
 
     <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
-        
+
         <div class="layui-card">
-          <div class="layui-card-body">
-            <div class="layui-tab" lay-filter="mytabbar">
-                <div class="layui-tab-content mt20">
-                    <div class="layui-tab-item layui-show">
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">模板下载</label>
-                            <div class="layui-form-mid layui-word-aux" id="excelTemp">
-                                <a href="/users/提现结果模板.xlsx">点击下载入库模版</a>
-                            </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">excel文件</label>
-                            <div class="layui-input-block">
-                                <div class="layui-upload">
-                                    <input type="hidden" id="ExcelPath" name="ExcelPath" value="">
-                                    <button class="layui-btn" type="button" id="ExcelPathBtn">选择</button>
-                                    <div class="layui-inline layui-word-aux"></div>
+            <div class="layui-card-body">
+                <div class="layui-tab" lay-filter="mytabbar">
+                    <div class="layui-tab-content mt20">
+                        <div class="layui-tab-item layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">模板下载</label>
+                                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                                    <a href="/users/提现结果模板.xlsx">点击下载入库模版</a>
                                 </div>
-                                <div class="mt10" id="ExcelPathFile">
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">excel文件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="ExcelPath" name="ExcelPath" value="">
+                                        <button class="layui-btn" type="button" id="ExcelPathBtn">选择</button>
+                                        <div class="layui-inline layui-word-aux"></div>
+                                    </div>
+                                    <div class="mt10" id="ExcelPathFile">
+                                    </div>
                                 </div>
                             </div>
+
                         </div>
 
                     </div>
-
+                </div>
+                <div class="layui-form-item layui-hide">
+                    <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                        value="确认">
                 </div>
             </div>
-            <div class="layui-form-item layui-hide">
-                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
-            </div>
-          </div>
         </div>
     </div>
 
@@ -67,14 +72,14 @@
     <script src="/other/mybjq/kindeditor-min.js"></script>
     <script src="/other/mybjq/lang/zh_CN.js"></script>
     <script>
-        
-                    
+
+
         //编辑器
         KindEditor.ready(function (K) {
-            
+
         });
 
-        
+
         var tree;
         var element;
         var upload;
@@ -94,29 +99,30 @@
             tree = layui.tree;
             element = layui.element;
             upload = layui.upload;
-        
+
             //Hash地址的定位
             var layid = location.hash.replace(/^#test=/, '');
             element.tabChange('test', layid);
             element.on('tab(test)', function (elem) {
                 location.hash = 'test=' + $(this).attr('lay-id');
             });
-    
+
             //日期
-            
+
 
             //上传文件
-            WebUploadJs('ExcelPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {width:0,height:0,quality:0},{max_file_size:1048576},  function (filename) {
-                $('#ExcelPathFile').html(filename);
+            WebUploadJs('ExcelPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', { width: 0, height: 0, quality: 0 }, { max_file_size: 1048576 }, function (filename) {
+                var fName = (filename.substring(filename.lastIndexOf("/"))).split("/");
+                $('#ExcelPathFile').html(fName);
                 $('#ExcelPath').val(filename);
             });
 
             //穿梭框
-            
-            
+
+
 
             //TreeView,比如权限管理
-            
+
 
             //省市区
 
@@ -124,4 +130,5 @@
 
     </script>
 </body>
+
 </html>

+ 2 - 2
Areas/Admin/Views/MainServer/Users/Children.cshtml

@@ -97,7 +97,7 @@
                     </br>
                     刷卡交易总额(稳)(元):<span style="color: #f00;" id="TotalAmtwd">0.00</span> | 贷记卡交易额(稳)(元):<span style="color: #f00;" id="DAmtwd">0.00</span> | 借记卡非封顶交易额(稳)(元):<span style="color: #f00;" id="JAmtwd">0.00</span> | 借记卡封顶交易额(稳)(元):<span style="color: #f00;" id="JfAmtwd">0.00</span> | 借记卡交易笔数(稳)(元):<span style="color: #f00;" id="JCountwd">0.00</span> | 云闪付小额交易额(稳)(元):<span style="color: #f00;" id="YAmtwd">0.00</span>
                     </br>
-                    个人绑定数:<span style="color: #f00;" id="PBCount">0</span> | 个人激活数:<span style="color: #f00;" id="PACount">0</span> 
+                    个人机具绑定数:<span style="color: #f00;" id="PBCount">0</span> | 个人机具激活数:<span style="color: #f00;" id="PACount">0</span> 
                     </br>
                     团队交易额:
                     </br>
@@ -105,7 +105,7 @@
                     </br>
                     刷卡交易总额(稳)(元):<span style="color: #f00;" id="TotalAmtwd1">0.00</span> | 贷记卡交易额(稳)(元):<span style="color: #f00;" id="DAmtwd1">0.00</span> | 借记卡非封顶交易额(稳)(元):<span style="color: #f00;" id="JAmtwd1">0.00</span> | 借记卡封顶交易额(稳)(元):<span style="color: #f00;" id="JfAmtwd1">0.00</span> | 借记卡交易笔数(稳)(元):<span style="color: #f00;" id="JCountwd1">0.00</span> | 云闪付小额交易额(稳)(元):<span style="color: #f00;" id="YAmtwd1">0.00</span>
                     </br>
-                    团队绑定数:<span style="color: #f00;" id="TBCount">0</span> | 团队激活数:<span style="color: #f00;" id="TACount">0</span> 
+                    团队机具绑定数:<span style="color: #f00;" id="TBCount">0</span> | 团队机具激活数:<span style="color: #f00;" id="TACount">0</span> 
                 
                 </blockquote>
                 <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>

+ 203 - 0
Areas/Admin/Views/SpServer/ActivateRecord/Add.cshtml

@@ -0,0 +1,203 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>激活记录(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 205 - 0
Areas/Admin/Views/SpServer/ActivateRecord/Edit.cshtml

@@ -0,0 +1,205 @@
+@using MySystem.SpModels;
+@{ActivateRecord editData = ViewBag.data as ActivateRecord;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>激活记录(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 170 - 0
Areas/Admin/Views/SpServer/ActivateRecord/Index.cshtml

@@ -0,0 +1,170 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>激活记录</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+<label class="layui-form-label">商户编号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户名称</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerName" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户手机号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerMobile" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">终端机身号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="SnNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">激活状态</label>
+<div class="layui-input-inline">
+<select id="ActivateStatusSelect" name="ActivateStatusSelect" lay-search="">
+<option value="">全部...</option>
+<option value="0">未激活</option>
+<option value="1">激活</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">产品类型</label>
+<div class="layui-input-inline">
+<select id="ProductTypeSelect" name="ProductTypeSelect" lay-search="">
+<option value="">全部...</option>
+<option value="KYSPOS">快益刷</option>
+<option value="KPOS">快联盟大POS</option>
+<option value="SIGNPOS">快联盟电签POS</option>
+<option value="SUPPOS">超级Mpos</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">渠道流水号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="ChannelSerial" placeholder="" autocomplete="off">
+</div>
+</div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_sp/ActivateRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 203 - 0
Areas/Admin/Views/SpServer/BindRecord/Add.cshtml

@@ -0,0 +1,203 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>绑定记录(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 205 - 0
Areas/Admin/Views/SpServer/BindRecord/Edit.cshtml

@@ -0,0 +1,205 @@
+@using MySystem.SpModels;
+@{BindRecord editData = ViewBag.data as BindRecord;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>绑定记录(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 192 - 0
Areas/Admin/Views/SpServer/BindRecord/Index.cshtml

@@ -0,0 +1,192 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>绑定记录</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+<label class="layui-form-label">机构名称</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="AgentName" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户编号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户名称</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerName" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">终端机身号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerSnNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">操作类型</label>
+<div class="layui-input-inline">
+<select id="MerOperateTypeSelect" name="MerOperateTypeSelect" lay-search="">
+<option value="">全部...</option>
+<option value="绑定">绑定</option>
+<option value="解绑">解绑</option>
+<option value="换绑">换绑</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户状态</label>
+<div class="layui-input-inline">
+<select id="MerStatusSelect" name="MerStatusSelect" lay-search="">
+<option value="">全部...</option>
+<option value="正常">正常</option>
+<option value="禁用">禁用</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">产品类型</label>
+<div class="layui-input-inline">
+<select id="ProductTypeSelect" name="ProductTypeSelect" lay-search="">
+<option value="">全部...</option>
+<option value="MPOS">MPOS</option>
+<option value="传统POS">传统POS</option>
+<option value="电签POS">电签POS</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">新终端机身号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNewSnNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">创建时间</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" readonly name="CreateTimeData" id="CreateTime" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">渠道流水号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="ChannelSerial" placeholder="" autocomplete="off">
+</div>
+</div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_sp/BindRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 203 - 0
Areas/Admin/Views/SpServer/ChangeBindRecord/Add.cshtml

@@ -0,0 +1,203 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>换绑记录(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 205 - 0
Areas/Admin/Views/SpServer/ChangeBindRecord/Edit.cshtml

@@ -0,0 +1,205 @@
+@using MySystem.SpModels;
+@{ChangeBindRecord editData = ViewBag.data as ChangeBindRecord;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>换绑记录(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 171 - 0
Areas/Admin/Views/SpServer/ChangeBindRecord/Index.cshtml

@@ -0,0 +1,171 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>换绑记录</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+<label class="layui-form-label">机构名称</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="AgentName" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户编号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户名称</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerName" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">终端机身号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerSnNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">产品类型</label>
+<div class="layui-input-inline">
+<select id="ProductTypeSelect" name="ProductTypeSelect" lay-search="">
+<option value="">全部...</option>
+<option value="MPOS">MPOS</option>
+<option value="传统POS">传统POS</option>
+<option value="电签POS">电签POS</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">新终端机身号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNewSnNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">提交时间</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" readonly name="ConfirmTimeData" id="ConfirmTime" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">渠道流水号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="ChannelSerial" placeholder="" autocomplete="off">
+</div>
+</div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_sp/ChangeBindRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 203 - 0
Areas/Admin/Views/SpServer/SpTradeRecord/Add.cshtml

@@ -0,0 +1,203 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>交易记录(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 205 - 0
Areas/Admin/Views/SpServer/SpTradeRecord/Edit.cshtml

@@ -0,0 +1,205 @@
+@using MySystem.SpModels;
+@{TradeRecord editData = ViewBag.data as TradeRecord;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>交易记录(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 152 - 0
Areas/Admin/Views/SpServer/SpTradeRecord/Index.cshtml

@@ -0,0 +1,152 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>交易记录</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+<label class="layui-form-label">商户编号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">交易状态</label>
+<div class="layui-input-inline">
+<select id="TradeStatusSelect" name="TradeStatusSelect" lay-search="">
+<option value="">全部...</option>
+<option value="1">成功</option>
+<option value="2">失败</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">产品类型</label>
+<div class="layui-input-inline">
+<select id="ProductTypeSelect" name="ProductTypeSelect" lay-search="">
+<option value="">全部...</option>
+<option value="KYSPOS">快益刷</option>
+<option value="KPOS">快联盟大POS</option>
+<option value="SIGNPOS">快联盟电签POS</option>
+<option value="SUPPOS">超级Mpos</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">渠道流水号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="ChannelSerial" placeholder="" autocomplete="off">
+</div>
+</div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_sp/TradeRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 203 - 0
Areas/Admin/Views/SpServer/TradeFluxRecord/Add.cshtml

@@ -0,0 +1,203 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>流量卡分佣交易(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 205 - 0
Areas/Admin/Views/SpServer/TradeFluxRecord/Edit.cshtml

@@ -0,0 +1,205 @@
+@using MySystem.SpModels;
+@{TradeFluxRecord editData = ViewBag.data as TradeFluxRecord;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>流量卡分佣交易(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 152 - 0
Areas/Admin/Views/SpServer/TradeFluxRecord/Index.cshtml

@@ -0,0 +1,152 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>流量卡分佣交易</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+<label class="layui-form-label">商户编号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">交易状态</label>
+<div class="layui-input-inline">
+<select id="TradeStatusSelect" name="TradeStatusSelect" lay-search="">
+<option value="">全部...</option>
+<option value="1">成功</option>
+<option value="2">失败</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">快钱交易流水号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="KqTradeSeq" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">产品类型</label>
+<div class="layui-input-inline">
+<select id="ProductTypeSelect" name="ProductTypeSelect" lay-search="">
+<option value="">全部...</option>
+<option value="KYSPOS">快益刷</option>
+<option value="KPOS">快联盟大POS</option>
+<option value="SIGNPOS">快联盟电签POS</option>
+<option value="SUPPOS">超级Mpos</option>
+</select>
+</div>
+</div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_sp/TradeFluxRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 209 - 0
Areas/Admin/Views/SpServer/UnBindRecord/Add.cshtml

@@ -0,0 +1,209 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>解绑记录(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+<div class="layui-form-item">
+<label class="layui-form-label">机构号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="AgentNo" name="AgentNo" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入机构号">
+</div>
+</div>
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 211 - 0
Areas/Admin/Views/SpServer/UnBindRecord/Edit.cshtml

@@ -0,0 +1,211 @@
+@using MySystem.SpModels;
+@{UnBindRecord editData = ViewBag.data as UnBindRecord;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>解绑记录(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <ul class="layui-tab-title">
+                    <li class="layui-this" lay-id="1">基本信息</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+<div class="layui-form-item">
+<label class="layui-form-label">机构号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="AgentNo" name="AgentNo" value="@editData.AgentNo" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入机构号">
+</div>
+</div>
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 165 - 0
Areas/Admin/Views/SpServer/UnBindRecord/Index.cshtml

@@ -0,0 +1,165 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>解绑记录</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline{
+            width: 175px !important;
+        }
+        .layui-form-label{
+            width: 85px !important;
+        }
+        .layui-inline{
+            margin-right: 0px !important;
+        }
+        .w100{
+            width: 100px !important;
+        }
+        .ml50{
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+<label class="layui-form-label">机构名称</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="AgentName" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户编号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">商户名称</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerName" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">终端机身号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="MerSnNo" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">产品类型</label>
+<div class="layui-input-inline">
+<select id="ProductTypeSelect" name="ProductTypeSelect" lay-search="">
+<option value="">全部...</option>
+<option value="MPOS">MPOS</option>
+<option value="传统POS">传统POS</option>
+<option value="电签POS">电签POS</option>
+</select>
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">解绑时间</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" readonly name="UnBindTimeData" id="UnBindTime" placeholder="" autocomplete="off">
+</div>
+</div>
+<div class="layui-inline">
+<label class="layui-form-label">渠道流水号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="ChannelSerial" placeholder="" autocomplete="off">
+</div>
+</div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>添加</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_sp/UnBindRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 1 - 1
Areas/Api/Controllers/PublicMethodController.cs

@@ -223,7 +223,7 @@ namespace MySystem.Areas.Api.Controllers
         public JsonResult LayUIUpload([FromForm] IFormCollection rf, string Path = "", string Resize = "")
         {
             IFormFile imgFile = rf.Files[0];
-            string Icon = MySystemLib.SystemPublicFuction.GetFilePath(imgFile, Path + "/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/");
+            string Icon = MySystemLib.SystemPublicFuction.GetFilePath(imgFile, Path + "/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/",false);
             string piccut = "";
             if (!string.IsNullOrEmpty(Resize) && (imgFile.FileName.ToLower().EndsWith(".png") || imgFile.FileName.EndsWith(".jpg")))
             {

+ 25 - 0
Models/PosMachinesFeeChangeRecord.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace MySystem.Models
+{
+    public partial class PosMachinesFeeChangeRecord
+    {
+        public int Id { get; set; }
+        public int Sort { get; set; }
+        public int QueryCount { get; set; }
+        public int Status { get; set; }
+        public DateTime? CreateDate { get; set; }
+        public DateTime? UpdateDate { get; set; }
+        public string SeoTitle { get; set; }
+        public string SeoKeyword { get; set; }
+        public string SeoDescription { get; set; }
+        public int PosUserId { get; set; }
+        public string MerNo { get; set; }
+        public int MerchantId { get; set; }
+        public string PosSn { get; set; }
+        public decimal ChangeFee { get; set; }
+        public int PosId { get; set; }
+        public int UserId { get; set; }
+    }
+}

+ 6 - 0
Models/PosMachinesTwo.cs

@@ -46,5 +46,11 @@ namespace MySystem.Models
         public int LeaderUserId { get; set; }
         public int PreUserId { get; set; }
         public int IsFirst { get; set; }
+        public string DownFeeMan { get; set; }
+        public string UpFeeMan { get; set; }
+        public DateTime? DownFeeDate { get; set; }
+        public DateTime? UpFeeDate { get; set; }
+        public ulong DownFeeFlag { get; set; }
+        public ulong UpFeeFlag { get; set; }
     }
 }

+ 73 - 0
Models/WebCMSEntities.cs

@@ -121,6 +121,7 @@ namespace MySystem.Models
         public virtual DbSet<PosCouponRecord> PosCouponRecord { get; set; }
         public virtual DbSet<PosCoupons> PosCoupons { get; set; }
         public virtual DbSet<PosMachines> PosMachines { get; set; }
+        public virtual DbSet<PosMachinesFeeChangeRecord> PosMachinesFeeChangeRecord { get; set; }
         public virtual DbSet<PosMachinesTwo> PosMachinesTwo { get; set; }
         public virtual DbSet<PosMerchantInfo> PosMerchantInfo { get; set; }
         public virtual DbSet<PosMerchantOtherInfo> PosMerchantOtherInfo { get; set; }
@@ -8143,6 +8144,56 @@ namespace MySystem.Models
                 entity.Property(e => e.Version).HasColumnType("int(11)");
             });
 
+            modelBuilder.Entity<PosMachinesFeeChangeRecord>(entity =>
+            {
+                entity.Property(e => e.Id).HasColumnType("int(11)");
+
+                entity.Property(e => e.ChangeFee).HasColumnType("decimal(18,2)");
+
+                entity.Property(e => e.CreateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.MerNo)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.MerchantId).HasColumnType("int(11)");
+
+                entity.Property(e => e.PosId).HasColumnType("int(11)");
+
+                entity.Property(e => e.PosSn)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.PosUserId).HasColumnType("int(11)");
+
+                entity.Property(e => e.QueryCount).HasColumnType("int(11)");
+
+                entity.Property(e => e.SeoDescription)
+                    .HasColumnType("varchar(500)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoKeyword)
+                    .HasColumnType("varchar(200)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.SeoTitle)
+                    .HasColumnType("varchar(100)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
+                entity.Property(e => e.Sort).HasColumnType("int(11)");
+
+                entity.Property(e => e.Status).HasColumnType("int(11)");
+
+                entity.Property(e => e.UpdateDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UserId).HasColumnType("int(11)");
+            });
+
             modelBuilder.Entity<PosMachinesTwo>(entity =>
             {
                 entity.Property(e => e.Id).HasColumnType("int(11)");
@@ -8197,6 +8248,17 @@ namespace MySystem.Models
                     .HasCharSet("utf8")
                     .HasCollation("utf8_general_ci");
 
+                entity.Property(e => e.DownFeeDate).HasColumnType("datetime");
+
+                entity.Property(e => e.DownFeeFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'");
+
+                entity.Property(e => e.DownFeeMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
                 entity.Property(e => e.IsFirst).HasColumnType("int(11)");
 
                 entity.Property(e => e.IsPurchase).HasColumnType("int(11)");
@@ -8256,6 +8318,17 @@ namespace MySystem.Models
 
                 entity.Property(e => e.TransferTime).HasColumnType("datetime");
 
+                entity.Property(e => e.UpFeeDate).HasColumnType("datetime");
+
+                entity.Property(e => e.UpFeeFlag)
+                    .HasColumnType("bit(1)")
+                    .HasDefaultValueSql("b'0'");
+
+                entity.Property(e => e.UpFeeMan)
+                    .HasColumnType("varchar(50)")
+                    .HasCharSet("utf8")
+                    .HasCollation("utf8_general_ci");
+
                 entity.Property(e => e.UpdateDate).HasColumnType("datetime");
 
                 entity.Property(e => e.UserId).HasColumnType("int(11)");

+ 0 - 8
wwwroot/layuiadmin/modules_main/Loop_Admin.js

@@ -1,11 +1,3 @@
-/*
- * @Author: DuGuYang 2731498193@qq.com
- * @Date: 2022-09-19 11:13:43
- * @LastEditors: DuGuYang 2731498193@qq.com
- * @LastEditTime: 2022-09-22 15:26:37
- * @FilePath: /admin-server/wwwroot/layuiadmin/modules_main/SysTools_Admin.js
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
- */
 var ExcelData, ExcelKind;
 
 function ConfirmImport() {

+ 412 - 0
wwwroot/layuiadmin/modules_main/PosMachinesFeeChangeRecord_Admin.js

@@ -0,0 +1,412 @@
+var ExcelData, ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/PosMachinesFeeChangeRecord/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layCreateDate = laydate.render({
+        elem: '#CreateDate',
+        type: 'datetime',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#CreateDate').val(value);
+            }
+        }
+    });
+
+
+    //excel导入
+    excel = layui.excel;
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, {}, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function (obj) {
+        var value = obj.value //得到修改后的值
+            , data = obj.data //得到所在行所有键值
+            , field = obj.field; //得到字段
+        if (field == "Sort") {
+            $.ajax({
+                type: "POST",
+                url: "/Admin/PosMachinesFeeChangeRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/PosMachinesFeeChangeRecord/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
+            , { field: 'Status', width: 200, title: '状态', sort: true }
+            , { field: 'Sort', width: 200, title: '产品类型', sort: true }
+            , { field: 'UserIdMakerCode', width: 200, title: '创客创客编号', sort: true }
+            , { field: 'UserIdRealName', width: 200, title: '创客真实姓名', sort: true }
+            , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
+            , { field: 'ChangeFee', width: 200, title: '调整费率', sort: true }
+            , { field: 'PosSn', width: 200, title: '机具SN', sort: true }
+            , { field: 'MerNo', width: 200, title: '商户号', sort: true }
+            , { field: 'PosUserIdMakerCode', width: 200, title: '机具所属人创客编号', sort: true }
+            , { field: 'PosUserIdRealName', width: 200, title: '机具所属人真实姓名', sort: true }
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/PosMachinesFeeChangeRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '机具费率调整申请-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/PosMachinesFeeChangeRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PosMachinesFeeChangeRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '机具费率调整申请-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/PosMachinesFeeChangeRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/PosMachinesFeeChangeRecord/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要开启的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PosMachinesFeeChangeRecord/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要关闭的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PosMachinesFeeChangeRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 552 - 0
wwwroot/layuiadmin/modules_main/PosMachinesTwoChange_Admin.js

@@ -0,0 +1,552 @@
+var ExcelData;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/PosMachinesTwoChange/ImportEnd?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else if (data.indexOf("warning") == 0) {
+                var datalist = data.split('|');
+                layer.alert(datalist[0], { time: 20000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layCreateDate = laydate.render({
+        elem: '#ActivationTime',
+        type: 'date',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#ActivationTime').val(value);
+            }
+        }
+    });
+
+    //- 筛选条件-日期
+    var laydates = layui.laydate;
+    var layCreateDate = laydates.render({
+        elem: '#BindingTime',
+        type: 'date',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#BindingTime').val(value);
+            }
+        }
+    });
+
+
+    //excel导入
+    excel = layui.excel;
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, {}, function (data) {
+            ExcelData = data[0].Sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function (obj) {
+        var value = obj.value //得到修改后的值
+            , data = obj.data //得到所在行所有键值
+            , field = obj.field; //得到字段
+        if (field == "Sort") {
+            $.ajax({
+                type: "POST",
+                url: "/Admin/PosMachinesTwoChange/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/PosMachinesTwoChange/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'PosSn', width: 200, title: 'SN编号', sort: true }
+            , { field: 'BrandId', width: 200, title: '产品类型', sort: true }
+            , { field: 'StoreIdCode', width: 200, title: '所在仓库编号', sort: true }
+            , { field: 'StoreIdName', width: 200, title: '所在仓库名称', sort: true }
+            , { field: 'UserIdMakerCode', width: 200, title: '创客编号', sort: true }
+            , { field: 'UserIdRealName', width: 200, title: '创客姓名', sort: true }
+            , { field: 'BindMerchantIdMerchantNo', width: 200, title: '绑定商户编号', sort: true }
+            , { field: 'BindMerchantIdMerchantName', width: 200, title: '绑定商户姓名', sort: true }
+            , { field: 'PosSnType', width: 200, title: '机具类型', sort: true }
+            , { field: 'DeviceType', width: 200, title: '设备类型', sort: true }
+            , { field: 'BindingState', width: 200, title: '绑定状态', sort: true }
+            , { field: 'ActivationState', width: 200, title: '激活状态', sort: true }
+            , { field: 'ActivationTime', width: 200, title: '激活时间', sort: true }
+            , { field: 'BindingTime', width: 200, title: '绑定时间', sort: true }
+            , { field: 'TransferTime', width: 200, title: '划拨时间', sort: true }
+            , { field: 'RecycStartDate', width: 200, title: '循环开始时间', sort: true }
+            , { field: 'RecycEndDate', width: 200, title: '循环截止时间', sort: true }
+            , { field: 'UserInfo', width: 200, title: '大盟主券标记', sort: true }
+            , { field: 'IsFirst', width: 200, title: '是否第一台机具', sort: true }
+            , { field: 'SeoKeyword', width: 200, title: '押金金额', sort: true }
+            , { field: 'UpFeeFlag', width: 200, title: '调升标记', sort: true }
+            , { field: 'UpFeeDate', width: 200, title: '调升时间', sort: true }
+            , { field: 'UpFeeMan', width: 200, title: '调升人', sort: true }
+            , { field: 'DownFeeFlag', width: 200, title: '调降标记', sort: true }
+            , { field: 'DownFeeDate', width: 200, title: '调降时间', sort: true }
+            , { field: 'DownFeeMan', width: 200, title: '调降人', sort: true }
+            , { title: '操作', width: 100, align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-' + String($('.layui-card-header').height() + 130)
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $("#TotalCount").text(res.other.TotalCount);
+            $("#KysCount99").text(res.other.KysCount99);
+            $("#KssCount99").text(res.other.KssCount99);
+            $("#KssCoun198").text(res.other.KssCoun198);
+            $("#KssCount298").text(res.other.KssCount298);
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/PosMachinesTwoChange/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '机具库-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/PosMachinesTwoChange/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PosMachinesTwoChange/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '机具库-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+
+
+
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/PosMachinesTwoChange/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/users/机具费率调整模版.xlsx">点击下载机具费率调整模板</a>');
+        }
+        // , ImportData: function () {
+        //     var perContent = layer.open({
+        //         type: 2
+        //         , title: '费率调整结果导入'
+        //         , content: 'Import'
+        //         , maxmin: true
+        //         , area: ['650px', '350px']
+        //         , btn: ['确定', '取消']
+        //         , yes: function (index, layero) {
+        //             var iframeWindow = window['layui-layer-iframe' + index]
+        //                 , submitID = 'LAY-list-front-submit'
+        //                 , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    
+        //             //监听提交
+        //             iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+        //                 var field = data.field; //获取提交的字段
+        //                 var userdata = "";
+        //                 for (var prop in field) {
+        //                     userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+        //                 }
+        //                 //提交 Ajax 成功后,静态更新表格中的数据
+        //                 //$.ajax({});
+        //                 var loadindex = layer.load(1, {
+        //                     shade: [0.5, '#000']
+        //                 });
+        //                 $.ajax({
+        //                     type: "POST",
+        //                     url: "/Admin/PosMachinesTwoChange/ImportPost?r=" + Math.random(1),
+        //                     data: userdata,
+        //                     dataType: "text",
+        //                     success: function (data) {
+        //                         if (data.indexOf("success") == 0) {
+        //                             var datalist = data.split('|');
+        //                             var key = datalist[1];
+        //                             CheckImport(table, key, loadindex, index);
+        //                         } else {
+        //                             layer.msg(data);
+        //                         }
+        //                     }
+        //                 });
+        //             });
+
+        //             submit.trigger('click');
+        //         }
+        //     });
+        // }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            var index = layer.load(1, {
+                shade: [0.5, '#000']
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/PosMachinesTwoChange/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                    layer.close(index);
+                }
+            });
+        }
+        , BatchSetting: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要设置调升费率的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要调升吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PosMachinesTwoChange/BatchSetting?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            }
+                            else if (data.indexOf("Warning") == 0) {
+                                var datalist = data.split('|');
+                                layer.alert(datalist[1], { time: 20000 }, function () {
+                                    window.location.reload();
+                                });}
+                            else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要开启的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PosMachinesTwoChange/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要关闭的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/PosMachinesTwoChange/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 1 - 0
wwwroot/layuiadmin/modules_main/PosMachinesTwo_Admin.js

@@ -142,6 +142,7 @@ layui.config({
             ,{ field: 'BindingTime', width: 200, title: '绑定时间', sort: true }
             ,{ field: 'TransferTime', width: 200, title: '划拨时间', sort: true }
             ,{ field: 'CreateDate', width: 200, title: '入库时间', sort: true }
+            ,{ field: 'RecycStartDate', width: 200, title: '循环开始时间', sort: true }
             ,{ field: 'RecycEndDate', width: 200, title: '循环截止时间', sort: true }
             ,{ field: 'UserInfo', width: 200, title: '大盟主券标记', sort: true }
             ,{ field: 'IsFirst', width: 200, title: '是否第一台机具', sort: true }

+ 1 - 0
wwwroot/layuiadmin/modules_main/StoreHouseAmountRecord_Admin.js

@@ -100,6 +100,7 @@ layui.config({
             , { field: 'BeforeAmount', width: 200, title: '使用前剩余额度', sort: true }
             , { field: 'AfterAmount', width: 200, title: '使用后剩余额度', sort: true }
             , { field: 'AmountType', width: 200, title: '额度类别', sort: true }
+            , { field: 'ChangeType', width: 200, title: '变动类别', sort: true }
             , { field: 'OperateType', width: 200, title: '操作类别', sort: true }
 
             , { field: 'Sort', fixed: 'right', title: '排序', width: 80, edit: 'text' }

+ 5 - 4
wwwroot/layuiadmin/modules_main/StoreHouse_Admin.js

@@ -27,8 +27,8 @@ function ConfirmImport() {
 function ConfirmRejectImport() {
     $.ajax({
         type: "POST",
-        url: "/Admin/Users/RejectStore?r=" + Math.random(1),
-        data: "Kind=" + ExcelKind + "&ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        url: "/Admin/StoreHouse/RejectStore?r=" + Math.random(1),
+        data: "ExcelKind=" + ExcelKind + "&ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
         dataType: "text",
         success: function (data) {
             if (data == "success") {
@@ -158,7 +158,7 @@ layui.config({
             [{
                 type: 'checkbox',
                 fixed: 'left'
-            },{
+            }, {
                 field: 'StoreNo',
                 width: 110,
                 title: '仓库编号',
@@ -773,11 +773,12 @@ layui.config({
                 title: '导入',
                 maxmin: false,
                 area: ['650px', '350px'],
+                // btn: ['确定', '取消'],
                 content: $('#excelForm'),
                 cancel: function () {
                 }
             });
-            $("#excelTemp").html('<a href="/users/机具驳回仓库模版.xlsx">点击下载机具驳回仓库模版</a>');
+            $("#excelTemp").html('<a href="/users/创客机具驳回仓库模版.xlsx">点击下载创客机具驳回仓库模版</a>');
         },
         ExportExcel: function () {
             var userdata = '';

+ 66 - 65
wwwroot/layuiadmin/modules_main/UserAccountRecord_Admin.js

@@ -31,49 +31,49 @@ layui.config({
     //- 筛选条件-日期
     var laydate = layui.laydate;
     var layCreateDate = laydate.render({
-elem: '#CreateDate',
-type: 'date',
-range: true,
-trigger: 'click',
-change: function (value, date, endDate) {
-var op = true;
-if (date.year == endDate.year && endDate.month - date.month <= 1) {
-if (endDate.month - date.month == 1 && endDate.date > date.date) {
-op = false;
-layCreateDate.hint('日期范围请不要超过1个月');
-setTimeout(function () {
-$(".laydate-btns-confirm").addClass("laydate-disabled");
-}, 1);
-}
-} else {
-op = false;
-layCreateDate.hint('日期范围请不要超过1个月');
-setTimeout(function () {
-$(".laydate-btns-confirm").addClass("laydate-disabled");
-}, 1);
-}
-if (op) {
-$('#CreateDate').val(value);
-}
-}
-});
+        elem: '#CreateDate',
+        type: 'date',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#CreateDate').val(value);
+            }
+        }
+    });
 
 
     //excel导入
-    excel = layui.excel;        
+    excel = layui.excel;
     $('#ExcelFile').change(function (e) {
         var files = e.target.files;
-        excel.importExcel(files, { }, function (data) {
+        excel.importExcel(files, {}, function (data) {
             ExcelData = data[0].sheet1;
         });
     });
 
     //监听单元格编辑
-    table.on('edit(LAY-list-manage)', function(obj){
+    table.on('edit(LAY-list-manage)', function (obj) {
         var value = obj.value //得到修改后的值
-        ,data = obj.data //得到所在行所有键值
-        ,field = obj.field; //得到字段
-        if(field == "Sort"){
+            , data = obj.data //得到所在行所有键值
+            , field = obj.field; //得到字段
+        if (field == "Sort") {
             $.ajax({
                 type: "POST",
                 url: "/Admin/UserAccountRecord/Sort?r=" + Math.random(1),
@@ -84,29 +84,30 @@ $('#CreateDate').val(value);
             });
         }
     });
-    
+
     //列表数据
     table.render({
         elem: '#LAY-list-manage'
         , url: '/Admin/UserAccountRecord/IndexData' //模拟接口
         , cols: [[
             { type: 'checkbox', fixed: 'left' }
-            ,{field:'MakerCode', width: 105, title:'创客编号', sort: true}
-            ,{field:'RealName', width: 105, title:'创客姓名', sort: true}
+            , { field: 'MakerCode', width: 105, title: '创客编号', sort: true }
+            , { field: 'RealName', width: 105, title: '创客姓名', sort: true }
             // ,{field:'TopMakerCode', width: 200, title:'顶级创客编号', sort: true}
             // ,{field:'TopRealName', width: 200, title:'顶级创客名称', sort: true}
-            ,{field:'ProductTypeName', width: 105, title:'产品类型', sort: true}
+            , { field: 'ProductTypeName', width: 105, title: '产品类型', sort: true }
             // ,{field:'TransRecordNo', width: 200, title:'交易流水编号', sort: true}
-            ,{field:'ChangeTypeName', width: 110, title:'交易类型', sort: true}
-            ,{field:'ChangeAmount', width: 110, title:'交易金额', sort: true}
-            ,{field:'Remark', width: 100, title:'备注', sort: true}
-            ,{field:'BeforeTotalAmount', width: 130, title:'交易前总金额', sort: true}
-            ,{field:'AfterTotalAmount', width: 130, title:'交易后总金额', sort: true}
-            ,{field:'BeforeFreezeAmount', width: 150, title:'交易前冻结金额', sort: true}
-            ,{field:'AfterFreezeAmount', width: 150, title:'交易后冻结金额', sort: true}
-            ,{field:'BeforeBalanceAmount', width: 120, title:'交易前余额', sort: true}
-            ,{field:'AfterBalanceAmount', width: 120, title:'交易后余额', sort: true}
-            ,{field:'CreateDate', width: 110, title:'交易时间', sort: true}
+            , { field: 'ChangeTypeName', width: 110, title: '交易类型', sort: true }
+            , { field: 'ChangeAmount', width: 110, title: '交易金额', sort: true }
+            , { field: 'Remark', width: 100, title: '备注', sort: true }
+            , { field: 'BeforeTotalAmount', width: 130, title: '交易前总金额', sort: true }
+            , { field: 'AfterTotalAmount', width: 130, title: '交易后总金额', sort: true }
+            , { field: 'BeforeFreezeAmount', width: 150, title: '交易前冻结金额', sort: true }
+            , { field: 'AfterFreezeAmount', width: 150, title: '交易后冻结金额', sort: true }
+            , { field: 'BeforeBalanceAmount', width: 120, title: '交易前余额', sort: true }
+            , { field: 'AfterBalanceAmount', width: 120, title: '交易后余额', sort: true }
+            , { field: 'CreateDate', width: 110, title: '交易时间', sort: true }
+            , { field: 'PosSn', width: 110, title: '机具Sn', sort: true }
         ]]
         , where: {
             UserId: UserId
@@ -147,7 +148,7 @@ $('#CreateDate').val(value);
                     data: "Id=" + data.Id,
                     dataType: "text",
                     success: function (data) {
-                        if (data == "success") {                            
+                        if (data == "success") {
                             obj.del();
                             layer.close(index);
                         } else {
@@ -170,20 +171,20 @@ $('#CreateDate').val(value);
                         , submitID = 'LAY-list-front-submit'
                         , submit = layero.find('iframe').contents().find('#' + submitID);
 
-                    setTimeout(function () { 
+                    setTimeout(function () {
                         layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
                             var errObj = $(this).find('.layui-form-danger');
                             if (errObj.length > 0) {
                                 iframeWindow.element.tabChange('mytabbar', String(i + 1));
                                 submit.click();
                             }
-                        });                        
+                        });
                     }, 300);
 
-                    
-                    
-                    
-                    
+
+
+
+
 
                     //监听提交
                     iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
@@ -194,7 +195,7 @@ $('#CreateDate').val(value);
                         }
                         //提交 Ajax 成功后,静态更新表格中的数据
                         //$.ajax({});
-                        
+
                         $.ajax({
                             type: "POST",
                             url: "/Admin/UserAccountRecord/Edit?r=" + Math.random(1),
@@ -283,20 +284,20 @@ $('#CreateDate').val(value);
                         , submitID = 'LAY-list-front-submit'
                         , submit = layero.find('iframe').contents().find('#' + submitID);
 
-                    setTimeout(function () { 
+                    setTimeout(function () {
                         layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
                             var errObj = $(this).find('.layui-form-danger');
                             if (errObj.length > 0) {
                                 iframeWindow.element.tabChange('mytabbar', String(i + 1));
                                 submit.click();
                             }
-                        });                        
+                        });
                     }, 300);
 
-                    
-                    
-                    
-                    
+
+
+
+
 
                     //监听提交
                     iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
@@ -307,7 +308,7 @@ $('#CreateDate').val(value);
                         }
                         //提交 Ajax 成功后,静态更新表格中的数据
                         //$.ajax({});
-                        
+
                         $.ajax({
                             type: "POST",
                             url: "/Admin/UserAccountRecord/Add?r=" + Math.random(1),
@@ -362,9 +363,9 @@ $('#CreateDate').val(value);
         , Open: function () {
             var checkStatus = table.checkStatus('LAY-list-manage')
                 , data = checkStatus.data; //得到选中的数据
-            if(data.length < 1){
+            if (data.length < 1) {
                 parent.layer.msg("请选择要开启的项");
-            }else{
+            } else {
                 var ids = "";
                 $.each(data, function (index, value) {
                     ids += data[index].Id + ",";
@@ -391,9 +392,9 @@ $('#CreateDate').val(value);
         , Close: function () {
             var checkStatus = table.checkStatus('LAY-list-manage')
                 , data = checkStatus.data; //得到选中的数据
-            if(data.length < 1){
+            if (data.length < 1) {
                 parent.layer.msg("请选择要关闭的项");
-            }else{
+            } else {
                 var ids = "";
                 $.each(data, function (index, value) {
                     ids += data[index].Id + ",";

+ 2 - 2
wwwroot/layuiadmin/modules_main/UsersChildren_Admin.js

@@ -114,8 +114,8 @@ layui.config({
             , { field: 'JCountwd', width: 200, title: '借记卡交易笔数(稳)', sort: true }
             , { field: 'YAmtwd', width: 200, title: '云闪付小额交易额(稳)', sort: true }
 
-            , { field: 'TBCount', width: 200, title: '团队绑定数', sort: true }
-            , { field: 'TACount', width: 200, title: '团队激活数', sort: true }
+            , { field: 'TBCount', width: 200, title: '团队机具绑定数', sort: true }
+            , { field: 'TACount', width: 200, title: '团队机具激活数', sort: true }
 
             // , { field: 'HelpInfo', width: 400, title: '扶持期商户交易信息', sort: true }
             // , { field: 'NotHelpInfo', width: 400, title: '稳定期商户交易信息', sort: true }

+ 392 - 0
wwwroot/layuiadmin/modules_sp/ActivateRecord_Admin.js

@@ -0,0 +1,392 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/ActivateRecord/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    
+
+    //excel导入
+    excel = layui.excel;        
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, { }, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function(obj){
+        var value = obj.value //得到修改后的值
+        ,data = obj.data //得到所在行所有键值
+        ,field = obj.field; //得到字段
+        if(field == "Sort"){
+            $.ajax({
+                type: "POST",
+                url: "/Admin/ActivateRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/ActivateRecord/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+    		, {field:'Id', fixed: 'left', title:'ID', width:80, sort: true, unresize: true}
+            ,{field:'MerNo', width: 200, title:'商户编号', sort: true}
+,{field:'MerName', width: 200, title:'商户名称', sort: true}
+,{field:'MerMobile', width: 200, title:'商户手机号', sort: true}
+,{field:'SnNo', width: 200, title:'终端机身号', sort: true}
+,{field:'MerRegDate', width: 200, title:'注册日期', sort: true}
+,{field:'AssessMonth', width: 200, title:'考核月', sort: true}
+,{field:'AssessMonthCount', width: 200, title:'考核第几月', sort: true}
+,{field:'ActivateStatus', width: 200, title:'激活状态', sort: true}
+,{field:'ActivateDate', width: 200, title:'激活日期', sort: true}
+,{field:'MerRealName', width: 200, title:'商户真实姓名', sort: true}
+,{field:'MerIdcardNo', width: 200, title:'商户身份证号', sort: true}
+,{field:'Remark', width: 200, title:'备注', sort: true}
+,{field:'AgentNo', width: 200, title:'代理商编号', sort: true}
+,{field:'ProductType', width: 200, title:'产品类型', sort: true}
+,{field:'ChannelSerial', width: 200, title:'渠道流水号', sort: true}
+
+            , {field:'Sort', fixed: 'right', title:'排序', width:80, edit: 'text'}
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/ActivateRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {                            
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '激活记录-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/ActivateRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/ActivateRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '激活记录-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/ActivateRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/ActivateRecord/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要开启的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/ActivateRecord/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要关闭的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/ActivateRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 416 - 0
wwwroot/layuiadmin/modules_sp/BindRecord_Admin.js

@@ -0,0 +1,416 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/BindRecord/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layCreateTime = laydate.render({
+elem: '#CreateTime',
+trigger: 'click',
+type: 'datetime',
+range: true,
+change: function (value, date, endDate) {
+var op = true;
+if (date.year == endDate.year && endDate.month - date.month <= 1) {
+if (endDate.month - date.month == 1 && endDate.date > date.date) {
+op = false;
+layCreateTime.hint('日期范围请不要超过1个月');
+setTimeout(function () {
+$(".laydate-btns-confirm").addClass("laydate-disabled");
+}, 1);
+}
+} else {
+op = false;
+layCreateTime.hint('日期范围请不要超过1个月');
+setTimeout(function () {
+$(".laydate-btns-confirm").addClass("laydate-disabled");
+}, 1);
+}
+if (op) {
+$('#CreateTime').val(value);
+}
+}
+});
+
+
+    //excel导入
+    excel = layui.excel;        
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, { }, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function(obj){
+        var value = obj.value //得到修改后的值
+        ,data = obj.data //得到所在行所有键值
+        ,field = obj.field; //得到字段
+        if(field == "Sort"){
+            $.ajax({
+                type: "POST",
+                url: "/Admin/BindRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/BindRecord/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+    		, {field:'Id', fixed: 'left', title:'ID', width:80, sort: true, unresize: true}
+            ,{field:'AgentName', width: 200, title:'机构名称', sort: true}
+,{field:'MerNo', width: 200, title:'商户编号', sort: true}
+,{field:'MerName', width: 200, title:'商户名称', sort: true}
+,{field:'MerSnNo', width: 200, title:'终端机身号', sort: true}
+,{field:'MerOperateDate', width: 200, title:'操作时间', sort: true}
+,{field:'MerOperateType', width: 200, title:'操作类型', sort: true}
+,{field:'MerStatus', width: 200, title:'商户状态', sort: true}
+,{field:'ProductType', width: 200, title:'产品类型', sort: true}
+,{field:'MerNewSnNo', width: 200, title:'新终端机身号', sort: true}
+,{field:'CreateTime', width: 200, title:'创建时间', sort: true}
+,{field:'UpdateTime', width: 200, title:'更新时间', sort: true}
+,{field:'ChannelSerial', width: 200, title:'渠道流水号', sort: true}
+
+            , {field:'Sort', fixed: 'right', title:'排序', width:80, edit: 'text'}
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/BindRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {                            
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '绑定记录-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/BindRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/BindRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '绑定记录-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/BindRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/BindRecord/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要开启的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/BindRecord/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要关闭的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/BindRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 414 - 0
wwwroot/layuiadmin/modules_sp/ChangeBindRecord_Admin.js

@@ -0,0 +1,414 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/ChangeBindRecord/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layConfirmTime = laydate.render({
+elem: '#ConfirmTime',
+trigger: 'click',
+type: 'datetime',
+range: true,
+change: function (value, date, endDate) {
+var op = true;
+if (date.year == endDate.year && endDate.month - date.month <= 1) {
+if (endDate.month - date.month == 1 && endDate.date > date.date) {
+op = false;
+layConfirmTime.hint('日期范围请不要超过1个月');
+setTimeout(function () {
+$(".laydate-btns-confirm").addClass("laydate-disabled");
+}, 1);
+}
+} else {
+op = false;
+layConfirmTime.hint('日期范围请不要超过1个月');
+setTimeout(function () {
+$(".laydate-btns-confirm").addClass("laydate-disabled");
+}, 1);
+}
+if (op) {
+$('#ConfirmTime').val(value);
+}
+}
+});
+
+
+    //excel导入
+    excel = layui.excel;        
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, { }, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function(obj){
+        var value = obj.value //得到修改后的值
+        ,data = obj.data //得到所在行所有键值
+        ,field = obj.field; //得到字段
+        if(field == "Sort"){
+            $.ajax({
+                type: "POST",
+                url: "/Admin/ChangeBindRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/ChangeBindRecord/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+    		, {field:'Id', fixed: 'left', title:'ID', width:80, sort: true, unresize: true}
+            ,{field:'AgentName', width: 200, title:'机构名称', sort: true}
+,{field:'MerNo', width: 200, title:'商户编号', sort: true}
+,{field:'MerName', width: 200, title:'商户名称', sort: true}
+,{field:'MerSnNo', width: 200, title:'终端机身号', sort: true}
+,{field:'ProductType', width: 200, title:'产品类型', sort: true}
+,{field:'MerNewSnNo', width: 200, title:'新终端机身号', sort: true}
+,{field:'ConfirmTime', width: 200, title:'提交时间', sort: true}
+,{field:'ReBindTime', width: 200, title:'重新绑定时间', sort: true}
+,{field:'ChannelSerial', width: 200, title:'渠道流水号', sort: true}
+,{field:'AgentNo', width: 200, title:'机构号', sort: true}
+
+            , {field:'Sort', fixed: 'right', title:'排序', width:80, edit: 'text'}
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/ChangeBindRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {                            
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '换绑记录-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/ChangeBindRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/ChangeBindRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '换绑记录-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/ChangeBindRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/ChangeBindRecord/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要开启的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/ChangeBindRecord/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要关闭的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/ChangeBindRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 390 - 0
wwwroot/layuiadmin/modules_sp/TradeFluxRecord_Admin.js

@@ -0,0 +1,390 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/TradeFluxRecord/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    
+
+    //excel导入
+    excel = layui.excel;        
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, { }, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function(obj){
+        var value = obj.value //得到修改后的值
+        ,data = obj.data //得到所在行所有键值
+        ,field = obj.field; //得到字段
+        if(field == "Sort"){
+            $.ajax({
+                type: "POST",
+                url: "/Admin/TradeFluxRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/TradeFluxRecord/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+    		, {field:'Id', fixed: 'left', title:'ID', width:80, sort: true, unresize: true}
+            ,{field:'TradeSerialNo', width: 200, title:'交易单号', sort: true}
+,{field:'MerNo', width: 200, title:'商户编号', sort: true}
+,{field:'TradeAmount', width: 200, title:'交易金额', sort: true}
+,{field:'TradeStatus', width: 200, title:'交易状态', sort: true}
+,{field:'TradeDate', width: 200, title:'交易日期', sort: true}
+,{field:'TradeTime', width: 200, title:'交易时间', sort: true}
+,{field:'BankCardType', width: 200, title:'银行卡类型', sort: true}
+,{field:'DigAmt', width: 200, title:'挖款金额', sort: true}
+,{field:'BankCardNo', width: 200, title:'交易卡号', sort: true}
+,{field:'FeeAmount', width: 200, title:'手续费', sort: true}
+,{field:'KqTradeSeq', width: 200, title:'快钱交易流水号', sort: true}
+,{field:'ProductType', width: 200, title:'产品类型', sort: true}
+,{field:'AgentNo', width: 200, title:'代理商编号', sort: true}
+
+            , {field:'Sort', fixed: 'right', title:'排序', width:80, edit: 'text'}
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/TradeFluxRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {                            
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '流量卡分佣交易-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/TradeFluxRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/TradeFluxRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '流量卡分佣交易-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/TradeFluxRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/TradeFluxRecord/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要开启的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/TradeFluxRecord/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要关闭的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/TradeFluxRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 390 - 0
wwwroot/layuiadmin/modules_sp/TradeRecord_Admin.js

@@ -0,0 +1,390 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/TradeRecord/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    
+
+    //excel导入
+    excel = layui.excel;        
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, { }, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function(obj){
+        var value = obj.value //得到修改后的值
+        ,data = obj.data //得到所在行所有键值
+        ,field = obj.field; //得到字段
+        if(field == "Sort"){
+            $.ajax({
+                type: "POST",
+                url: "/Admin/TradeRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/TradeRecord/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+    		, {field:'Id', fixed: 'left', title:'ID', width:80, sort: true, unresize: true}
+            ,{field:'TradeSerialNo', width: 200, title:'交易单号', sort: true}
+,{field:'MerNo', width: 200, title:'商户编号', sort: true}
+,{field:'TradeAmount', width: 200, title:'交易金额', sort: true}
+,{field:'TradeStatus', width: 200, title:'交易状态', sort: true}
+,{field:'TradeDate', width: 200, title:'交易日期', sort: true}
+,{field:'TradeTime', width: 200, title:'交易时间', sort: true}
+,{field:'BankCardType', width: 200, title:'银行卡类型', sort: true}
+,{field:'BankCardNo', width: 200, title:'交易卡号', sort: true}
+,{field:'SettleFee', width: 200, title:'出款手续费', sort: true}
+,{field:'Remark', width: 200, title:'备注', sort: true}
+,{field:'ProductType', width: 200, title:'产品类型', sort: true}
+,{field:'AgentNo', width: 200, title:'代理商编号', sort: true}
+,{field:'ChannelSerial', width: 200, title:'渠道流水号', sort: true}
+
+            , {field:'Sort', fixed: 'right', title:'排序', width:80, edit: 'text'}
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/TradeRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {                            
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '交易记录-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/TradeRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/TradeRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '交易记录-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/TradeRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/TradeRecord/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要开启的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/TradeRecord/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要关闭的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/TradeRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

+ 412 - 0
wwwroot/layuiadmin/modules_sp/UnBindRecord_Admin.js

@@ -0,0 +1,412 @@
+var ExcelData,ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/UnBindRecord/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", { time: 2000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$
+        , form = layui.form
+        , table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layUnBindTime = laydate.render({
+elem: '#UnBindTime',
+trigger: 'click',
+type: 'datetime',
+range: true,
+change: function (value, date, endDate) {
+var op = true;
+if (date.year == endDate.year && endDate.month - date.month <= 1) {
+if (endDate.month - date.month == 1 && endDate.date > date.date) {
+op = false;
+layUnBindTime.hint('日期范围请不要超过1个月');
+setTimeout(function () {
+$(".laydate-btns-confirm").addClass("laydate-disabled");
+}, 1);
+}
+} else {
+op = false;
+layUnBindTime.hint('日期范围请不要超过1个月');
+setTimeout(function () {
+$(".laydate-btns-confirm").addClass("laydate-disabled");
+}, 1);
+}
+if (op) {
+$('#UnBindTime').val(value);
+}
+}
+});
+
+
+    //excel导入
+    excel = layui.excel;        
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, { }, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function(obj){
+        var value = obj.value //得到修改后的值
+        ,data = obj.data //得到所在行所有键值
+        ,field = obj.field; //得到字段
+        if(field == "Sort"){
+            $.ajax({
+                type: "POST",
+                url: "/Admin/UnBindRecord/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+    
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/UnBindRecord/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+    		, {field:'Id', fixed: 'left', title:'ID', width:80, sort: true, unresize: true}
+            ,{field:'AgentName', width: 200, title:'机构名称', sort: true}
+,{field:'MerNo', width: 200, title:'商户编号', sort: true}
+,{field:'MerName', width: 200, title:'商户名称', sort: true}
+,{field:'MerSnNo', width: 200, title:'终端机身号', sort: true}
+,{field:'ProductType', width: 200, title:'产品类型', sort: true}
+,{field:'UnBindTime', width: 200, title:'解绑时间', sort: true}
+,{field:'ChannelSerial', width: 200, title:'渠道流水号', sort: true}
+,{field:'AgentNo', width: 200, title:'机构号', sort: true}
+
+            , {field:'Sort', fixed: 'right', title:'排序', width:80, edit: 'text'}
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-220'
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/UnBindRecord/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {                            
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2
+                , title: '解绑记录-编辑'
+                , content: 'Edit?Id=' + data.Id + ''
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/UnBindRecord/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+                , success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field,
+            page: {
+                curr: 1
+            }
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null,
+            page: {
+                curr: 1
+            }
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/UnBindRecord/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , add: function () {
+            var perContent = layer.open({
+                type: 2
+                , title: '解绑记录-添加'
+                , content: 'Add'
+                , maxmin: true
+                , area: ['500px', '450px']
+                , btn: ['确定', '取消']
+                , yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index]
+                        , submitID = 'LAY-list-front-submit'
+                        , submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () { 
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });                        
+                    }, 300);
+
+                    
+                    
+                    
+                    
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/UnBindRecord/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        }
+        , ImportData: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/excelfile/模板文件.xlsx">点击下载模板文件</a>');
+        }
+        , ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/UnBindRecord/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        }
+        , Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要开启的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/UnBindRecord/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+        , Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage')
+                , data = checkStatus.data; //得到选中的数据
+            if(data.length < 1){
+                parent.layer.msg("请选择要关闭的项");
+            }else{
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/UnBindRecord/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

BIN
wwwroot/users/创客机具驳回仓库模版.xlsx


BIN
wwwroot/users/客小爽仓库调拨模版.xlsx


BIN
wwwroot/users/机具费率调整模版.xlsx