Просмотр исходного кода

Merge branch 'DuGuYang' into develop

lcl 3 лет назад
Родитель
Сommit
5d4b958ab0
44 измененных файлов с 5552 добавлено и 310 удалено
  1. BIN
      .DS_Store
  2. 124 0
      AppStart/Helper/InstallmentDeductionService.cs
  3. 113 31
      AppStart/Helper/TimeOutPosChargeService.cs
  4. BIN
      Areas/.DS_Store
  5. BIN
      Areas/Admin/.DS_Store
  6. BIN
      Areas/Admin/Controllers/.DS_Store
  7. 48 48
      Areas/Admin/Controllers/HomeController.cs
  8. 10 3
      Areas/Admin/Controllers/MainServer/StoreHouseAmountRecordController.cs
  9. 194 24
      Areas/Admin/Controllers/MainServer/SysToolsController.cs
  10. 163 12
      Areas/Admin/Controllers/MainServer/ToChargeBackRecordController.cs
  11. 376 0
      Areas/Admin/Controllers/MainServer/ToChargeBackRecordSubController.cs
  12. 420 0
      Areas/Admin/Controllers/MainServer/ToChargeByStageController.cs
  13. 211 24
      Areas/Admin/Controllers/MainServer/UsersController.cs
  14. 135 0
      Areas/Admin/Controllers/OperateServer/AmountRecordOperateController.cs
  15. BIN
      Areas/Admin/Views/.DS_Store
  16. 2 2
      Areas/Admin/Views/Home/Login.cshtml
  17. BIN
      Areas/Admin/Views/MainServer/.DS_Store
  18. 1 1
      Areas/Admin/Views/MainServer/StoreHouseAmountRecord/Indexs.cshtml
  19. 4 4
      Areas/Admin/Views/MainServer/SysTools/CheckMachine.cshtml
  20. 229 0
      Areas/Admin/Views/MainServer/SysTools/SeeMerchantTradeDetail.cshtml
  21. 16 3
      Areas/Admin/Views/MainServer/SysTools/TransferPos.cshtml
  22. 78 68
      Areas/Admin/Views/MainServer/ToChargeBackRecord/Add.cshtml
  23. 69 70
      Areas/Admin/Views/MainServer/ToChargeBackRecord/Edit.cshtml
  24. 27 10
      Areas/Admin/Views/MainServer/ToChargeBackRecord/Index.cshtml
  25. 243 0
      Areas/Admin/Views/MainServer/ToChargeBackRecordSub/Add.cshtml
  26. 250 0
      Areas/Admin/Views/MainServer/ToChargeBackRecordSub/Edit.cshtml
  27. 159 0
      Areas/Admin/Views/MainServer/ToChargeBackRecordSub/Index.cshtml
  28. 390 0
      Areas/Admin/Views/MainServer/ToChargeByStage/Add.cshtml
  29. 264 0
      Areas/Admin/Views/MainServer/ToChargeByStage/Edit.cshtml
  30. 172 0
      Areas/Admin/Views/MainServer/ToChargeByStage/Index.cshtml
  31. 131 0
      Areas/Admin/Views/MainServer/Users/CancleUsers.cshtml
  32. 88 0
      Areas/Admin/Views/OperateServer/AmountRecordOperate/Index.cshtml
  33. 1 0
      Config/MysqlConn.cs
  34. 4 0
      Startup.cs
  35. BIN
      wwwroot/.DS_Store
  36. BIN
      wwwroot/layuiadmin/.DS_Store
  37. 1 1
      wwwroot/layuiadmin/modules_main/PosMerchantInforgList_Admin.js
  38. 1 1
      wwwroot/layuiadmin/modules_main/StoreHouseCardAmountRecord_Admin.js
  39. 409 0
      wwwroot/layuiadmin/modules_main/ToChargeBackRecordSub_Admin.js
  40. 83 8
      wwwroot/layuiadmin/modules_main/ToChargeBackRecord_Admin.js
  41. 436 0
      wwwroot/layuiadmin/modules_main/ToChargeByStage_Admin.js
  42. 307 0
      wwwroot/layuiadmin/modules_main/UsersCancle_Admin.js
  43. 393 0
      wwwroot/layuiadmin/modules_operate/AmountRecord_Admin.js
  44. BIN
      wwwroot/users/预扣款模版.xlsx

+ 124 - 0
AppStart/Helper/InstallmentDeductionService.cs

@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Threading;
+using MySystem.Models;
+using Library;
+
+namespace MySystem
+{
+    /// <summary>
+    /// 分期扣款(每月20号执行)
+    /// </summary>
+    public class InstallmentDeductionService
+    {
+        public readonly static InstallmentDeductionService Instance = new InstallmentDeductionService();
+        private InstallmentDeductionService()
+        { }
+
+        public void Start()
+        {
+            Thread th = new Thread(doSomething);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void doSomething()
+        {
+            while (true)
+            {
+                // if (DateTime.Now.Day == 20 && DateTime.Now.Hour < 12)
+                if (DateTime.Now.Hour < 20)
+                {
+                    try
+                    {
+                        string check = function.ReadInstance("/InstallmentDeduction/check" + DateTime.Now.ToString("yyyy-MM-20") + ".txt");
+                        if (string.IsNullOrEmpty(check))
+                        {
+                            function.WritePage("/InstallmentDeduction/", "check" + DateTime.Now.ToString("yyyy-MM-20") + ".txt", DateTime.Now.ToString("HH:mm:ss"));
+                            WebCMSEntities db = new WebCMSEntities();
+                            var startdate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-20 00:00:00"));
+                            var enddate = startdate.AddDays(1);
+                            // var info = db.ToChargeBackRecordSub.Where(m => m.Status == 0 && m.StartDate >= startdate && m.StartDate < enddate).ToList();//分期扣款记录明细
+                            var info = db.ToChargeByStage.Where(m => m.Status == 0).ToList();//分期扣款记录
+                            foreach (var item in info)
+                            {
+                                var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Status == 0 && m.ParentId == item.Id && m.StartDate >= startdate && m.StartDate < enddate) ?? new ToChargeBackRecordSub();
+                                if (toChargeBackRecordSub.Id > 0)
+                                {
+                                    var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == item.UserId);
+                                    if (userAccount == null)
+                                    {
+                                        userAccount = db.UserAccount.Add(new UserAccount()
+                                        {
+                                            Id = item.UserId,
+                                            UserId = item.UserId,
+                                        }).Entity;
+                                        db.SaveChanges();
+                                    }
+                                    toChargeBackRecordSub.Status = 2;
+                                    userAccount.ToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加预扣款
+                                    var toChargeBackRecord = db.ToChargeBackRecord.Add(new ToChargeBackRecord
+                                    {
+                                        CreateDate = DateTime.Now,
+                                        Sort = toChargeBackRecordSub.Id,
+                                        UserId = item.UserId,
+                                        ChargeAmount = toChargeBackRecordSub.ChargeAmount,
+                                        ChargeType = 2,//分期预扣款
+                                        Remark = toChargeBackRecordSub.Remark,
+
+                                    }).Entity;
+                                }
+
+                                // //只能存在一笔分期扣款记录(先前有的但是余额不够未扣除的则不添加新的)
+                                // var checks = db.ToChargeBackRecord.Any(m => m.Sort > 0 && (m.Status == 0 || m.Status == 3) && m.ChargeType == 2 && m.UserId == item.UserId);
+                                // if (!checks)
+                                // {
+                                //     string checkAdd = RedisDbconn.Instance.Get<string>("InstallmentDeductionAddRecord:" + item.UserId);
+                                //     if (string.IsNullOrEmpty(check))
+                                //     {
+                                //         var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Status == 0 && m.ParentId == item.Id && m.StartDate >= startdate && m.StartDate < enddate) ?? new ToChargeBackRecordSub();
+                                //         if (toChargeBackRecordSub.Id > 0)
+                                //         {
+                                //             var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == item.UserId);
+                                //             if (userAccount == null)
+                                //             {
+                                //                 userAccount = db.UserAccount.Add(new UserAccount()
+                                //                 {
+                                //                     Id = item.UserId,
+                                //                     UserId = item.UserId,
+                                //                 }).Entity;
+                                //                 db.SaveChanges();
+                                //             }
+                                //             userAccount.ToChargeAmount += toChargeBackRecordSub.ChargeAmount;//增加预扣款
+                                //             var toChargeBackRecord = db.ToChargeBackRecord.Add(new ToChargeBackRecord
+                                //             {
+                                //                 CreateDate = DateTime.Now,
+                                //                 Sort = toChargeBackRecordSub.Id,
+                                //                 UserId = item.UserId,
+                                //                 ChargeAmount = toChargeBackRecordSub.ChargeAmount,
+                                //                 ChargeType = 2,//分期预扣款
+                                //                 Remark = "分期预扣款",
+
+                                //             }).Entity;
+                                //         }
+                                //     }
+                                //     RedisDbconn.Instance.Set("InstallmentDeductionAddRecord:" + item.UserId, "wait");
+                                //     RedisDbconn.Instance.SetExpire("InstallmentDeductionAddRecord:" + item.UserId, 300);
+                                // }
+                            }
+                            db.SaveChanges();
+
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "执行分期扣费异常");
+                    }
+                }
+                Thread.Sleep(1000);
+            }
+        }
+    }
+}

+ 113 - 31
AppStart/Helper/TimeOutPosChargeService.cs

@@ -28,7 +28,7 @@ namespace MySystem
         {
             while (true)
             {
-                if (DateTime.Now.Hour < 20)
+                if (DateTime.Now.Hour < 3)
                 {
                     try
                     {
@@ -40,8 +40,8 @@ namespace MySystem
                             var date = DateTime.Now.AddDays(-60).ToString("yyyy-MM-dd 00:00:00");//过期限制时间
                             var time = DateTime.Parse(date);//过期限制时间
 
-                            DataTable dt = CustomerSqlConn.dtable("SELECT BuyUserId FROM PosMachinesTwo WHERE `Status`>-1 AND BuyUserId>0 AND BindingState=0 AND ActivationState=0 AND ScanQrTrade=0 AND RecycEndDate <'" + date + "' GROUP BY BuyUserId", MysqlConn.connstr);//扣费创客
-                            var query = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BuyUserId > 0 && m.BindingState == 0 && m.ActivationState == 0 && m.ScanQrTrade == 0 && m.RecycEndDate < time).ToList();//循环过期超过60天机具
+                            DataTable dt = CustomerSqlConn.dtable("SELECT BuyUserId FROM PosMachinesTwo WHERE `Status`>-1 AND BuyUserId>0 AND BindingState=0 AND ActivationState=0 AND ScanQrTrade=0 AND RecycEndDate <'" + date + "' GROUP BY BuyUserId", MysqlConn.SqlConnStr);//扣费创客
+                            var query = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BuyUserId > 0 && m.BindingState == 0 && m.ActivationState == 0 && m.ScanQrTrade == 0 && m.RecycEndDate < time).ToList();//循环过期超过15天机具
                             var brandInfo = db.KqProducts.ToList();
                             foreach (DataRow item in dt.Rows)
                             {
@@ -85,34 +85,7 @@ namespace MySystem
                             }
                             db.SaveChanges();
 
-                            var info = db.ToChargeBackRecord.Where(m => m.Status == 0).ToList();//过期机具扣费记录
-                            foreach (var items in info)
-                            {
-                                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == items.UserId) ?? new UserAccount();
-                                var record = info.FirstOrDefault(m => m.Id == items.Id);
-                                if (userAccount.BalanceAmount >= record.ChargeAmount)
-                                {
-                                    var userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord
-                                    {
-                                        CreateDate = DateTime.Now,
-                                        UserId = items.UserId,
-                                        BeforeBalanceAmount = userAccount.BalanceAmount,
-                                        AfterBalanceAmount = userAccount.BalanceAmount - record.ChargeAmount,
-                                        ChangeAmount = record.ChargeAmount,
-                                        ChangeType = 124,//过期机具货款扣费
-                                        Remark = "扣机具货款",
-
-                                    }).Entity;
-                                    record.Status = 1;
-                                    if (userAccount.ToChargeAmount >= record.ChargeAmount)
-                                    {
-                                        userAccount.ToChargeAmount -= record.ChargeAmount;//扣减预扣款
-                                    }
-                                    userAccount.BalanceAmount -= record.ChargeAmount;//扣减余额
-                                }
-                            }
-                            db.SaveChanges();
-
+                            DoChargeAmount(db);
                         }
                     }
                     catch (Exception ex)
@@ -123,5 +96,114 @@ namespace MySystem
                 Thread.Sleep(1000);
             }
         }
+
+
+
+        public void StartDoChargeAmount()
+        {
+            Thread th = new Thread(StartDoChargeAmountReady);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void StartDoChargeAmountReady()
+        {
+            while (true)
+            {
+                WebCMSEntities db = new WebCMSEntities();
+                DoChargeAmount(db);
+                db.Dispose();
+                Thread.Sleep(600000);
+            }
+        }
+
+        public void ListenChargeAmount()
+        {
+            Thread th = new Thread(ListenChargeAmountReady);
+            th.IsBackground = true;
+            th.Start();
+        }
+
+        public void ListenChargeAmountReady()
+        {
+            while (true)
+            {
+                string content = RedisDbconn.Instance.RPop<string>("DoChargeAmountQueue");
+                if (!string.IsNullOrEmpty(content))
+                {
+                    WebCMSEntities db = new WebCMSEntities();
+                    DoChargeAmount(db, int.Parse(function.CheckInt(content)));
+                    db.Dispose();
+                }
+            }
+        }
+
+        public void DoChargeAmount(WebCMSEntities db, int UserId = 0)
+        {
+            IQueryable<ToChargeBackRecord> list = db.ToChargeBackRecord.Where(m => m.Status == 0);//过期机具扣费记录
+            if (UserId > 0)
+            {
+                list = list.Where(m => m.UserId == UserId);
+            }
+            var info = list.ToList();
+            foreach (var items in info)
+            {
+                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == items.UserId) ?? new UserAccount();
+                var record = info.FirstOrDefault(m => m.Id == items.Id);
+
+                if (userAccount.BalanceAmount >= record.ChargeAmount)
+                {
+                    var ChangeType = 0;
+                    var Remark = "";
+                    if (record.ChargeType == 124)//过期机具货款扣费
+                    {
+                        ChangeType = 124;
+                        Remark = "扣机具货款";
+                    }
+                    if (record.ChargeType == 1)//普通预扣款
+                    {
+                        ChangeType = 202;
+                        // Remark = "普通扣款";
+                        Remark = items.Remark;
+                    }
+                    if (record.ChargeType == 2)//分期预扣款
+                    {
+                        ChangeType = 201;
+                        // Remark = "分期扣款";
+                        Remark = items.Remark;
+                    }
+                    var userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord
+                    {
+                        CreateDate = DateTime.Now,
+                        UserId = items.UserId,
+                        BeforeBalanceAmount = userAccount.BalanceAmount,
+                        AfterBalanceAmount = userAccount.BalanceAmount - record.ChargeAmount,
+                        ChangeAmount = record.ChargeAmount,
+                        ChangeType = ChangeType,
+                        Remark = Remark,
+
+                    }).Entity;
+                    record.Status = 1;
+                    if (record.ChargeType == 2)
+                    {
+                        var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Id == record.Sort) ?? new ToChargeBackRecordSub();
+                        var toChargeByStage = db.ToChargeByStage.FirstOrDefault(m => m.Id == toChargeBackRecordSub.ParentId && m.TimeNumber > m.QueryCount) ?? new ToChargeByStage();
+                        toChargeBackRecordSub.Status = 1;
+                        toChargeByStage.QueryCount += 1;
+                        toChargeByStage.ChargeAmount += toChargeBackRecordSub.ChargeAmount;
+                        if (toChargeByStage.TimeNumber == toChargeByStage.QueryCount)
+                        {
+                            toChargeByStage.Status = 1;
+                        }
+                    }
+                    if (userAccount.ToChargeAmount >= record.ChargeAmount)
+                    {
+                        userAccount.ToChargeAmount -= record.ChargeAmount;//分期扣款
+                    }
+                    userAccount.BalanceAmount -= record.ChargeAmount;//扣减余额
+                }
+            }
+            db.SaveChanges();
+        }
     }
 }

BIN
Areas/.DS_Store


BIN
Areas/Admin/.DS_Store


BIN
Areas/Admin/Controllers/.DS_Store


+ 48 - 48
Areas/Admin/Controllers/HomeController.cs

@@ -149,60 +149,60 @@ namespace MySystem.Areas.Admin.Controllers
         [HttpPost]
         public string Login(string UserName, string Pwd, string CheckCode)
         {
-            string result = "";
-            if (function.GetCookie(_accessor.HttpContext, "checkcode") != CheckCode)
-            {
-                result = "验证码错误!!";
-            }
-            else
-            {
-                Pwd = function.MD5_32(Pwd);
-                var user = db.SysAdmin.FirstOrDefault(m => m.AdminName == UserName && m.Password == Pwd);
-                if (user != null)
-                {
-                    user.LastLoginDate = DateTime.Now;
-                    db.SaveChanges();
-                    function.WriteCookie(_accessor.HttpContext, "SysUserName", user.AdminName);
-                    function.WriteCookie(_accessor.HttpContext, "SysRealName", user.RealName);
-                    function.WriteCookie(_accessor.HttpContext, "SysRealRole", user.Role);
-                    int RoleId = int.Parse(function.CheckInt(user.Role));
-                    BsModels.SysAdminRole Role = db.SysAdminRole.FirstOrDefault(m => m.Id == RoleId) ?? new BsModels.SysAdminRole();
-                    string RightInfo = function.CheckNull(Role.RightInfo);
-                    function.WriteSession(_accessor.HttpContext, "RightInfo", RightInfo);
-                    string UserId = user.Id.ToString();
-                    function.WriteCookie(_accessor.HttpContext, "SysId", UserId);
-                    function.WriteSession(_accessor.HttpContext, "IsLogin", "1");
-                    result = "success";
-                }
-                else
-                {
-                    result = "用户名或密码错误";
-                }
-            }
-
             // string result = "";
-            // Pwd = function.MD5_32(Pwd);
-            // var user = db.SysAdmin.FirstOrDefault(m => m.AdminName == UserName && m.Password == Pwd);
-            // if (user != null)
+            // if (function.GetCookie(_accessor.HttpContext, "checkcode") != CheckCode)
             // {
-            //     user.LastLoginDate = DateTime.Now;
-            //     db.SaveChanges();
-            //     function.WriteCookie(_accessor.HttpContext, "SysUserName", user.AdminName);
-            //     function.WriteCookie(_accessor.HttpContext, "SysRealName", user.RealName);
-            //     function.WriteCookie(_accessor.HttpContext, "SysRealRole", user.Role);
-            //     int RoleId = int.Parse(function.CheckInt(user.Role));
-            //     BsModels.SysAdminRole Role = db.SysAdminRole.FirstOrDefault(m => m.Id == RoleId) ?? new BsModels.SysAdminRole();
-            //     string RightInfo = function.CheckNull(Role.RightInfo);
-            //     function.WriteSession(_accessor.HttpContext, "RightInfo", RightInfo);
-            //     string UserId = user.Id.ToString();
-            //     function.WriteCookie(_accessor.HttpContext, "SysId", UserId);
-            //     function.WriteSession(_accessor.HttpContext, "IsLogin", "1");
-            //     result = "success";
+            //     result = "验证码错误!!";
             // }
             // else
             // {
-            //     result = "用户名或密码错误";
+            //     Pwd = function.MD5_32(Pwd);
+            //     var user = db.SysAdmin.FirstOrDefault(m => m.AdminName == UserName && m.Password == Pwd);
+            //     if (user != null)
+            //     {
+            //         user.LastLoginDate = DateTime.Now;
+            //         db.SaveChanges();
+            //         function.WriteCookie(_accessor.HttpContext, "SysUserName", user.AdminName);
+            //         function.WriteCookie(_accessor.HttpContext, "SysRealName", user.RealName);
+            //         function.WriteCookie(_accessor.HttpContext, "SysRealRole", user.Role);
+            //         int RoleId = int.Parse(function.CheckInt(user.Role));
+            //         BsModels.SysAdminRole Role = db.SysAdminRole.FirstOrDefault(m => m.Id == RoleId) ?? new BsModels.SysAdminRole();
+            //         string RightInfo = function.CheckNull(Role.RightInfo);
+            //         function.WriteSession(_accessor.HttpContext, "RightInfo", RightInfo);
+            //         string UserId = user.Id.ToString();
+            //         function.WriteCookie(_accessor.HttpContext, "SysId", UserId);
+            //         function.WriteSession(_accessor.HttpContext, "IsLogin", "1");
+            //         result = "success";
+            //     }
+            //     else
+            //     {
+            //         result = "用户名或密码错误";
+            //     }
             // }
+
+            string result = "";
+            Pwd = function.MD5_32(Pwd);
+            var user = db.SysAdmin.FirstOrDefault(m => m.AdminName == UserName && m.Password == Pwd);
+            if (user != null)
+            {
+                user.LastLoginDate = DateTime.Now;
+                db.SaveChanges();
+                function.WriteCookie(_accessor.HttpContext, "SysUserName", user.AdminName);
+                function.WriteCookie(_accessor.HttpContext, "SysRealName", user.RealName);
+                function.WriteCookie(_accessor.HttpContext, "SysRealRole", user.Role);
+                int RoleId = int.Parse(function.CheckInt(user.Role));
+                BsModels.SysAdminRole Role = db.SysAdminRole.FirstOrDefault(m => m.Id == RoleId) ?? new BsModels.SysAdminRole();
+                string RightInfo = function.CheckNull(Role.RightInfo);
+                function.WriteSession(_accessor.HttpContext, "RightInfo", RightInfo);
+                string UserId = user.Id.ToString();
+                function.WriteCookie(_accessor.HttpContext, "SysId", UserId);
+                function.WriteSession(_accessor.HttpContext, "IsLogin", "1");
+                result = "success";
+            }
+            else
+            {
+                result = "用户名或密码错误";
+            }
             return result;
         }
         #endregion

+ 10 - 3
Areas/Admin/Controllers/MainServer/StoreHouseAmountRecordController.cs

@@ -445,7 +445,7 @@ namespace MySystem.Areas.Admin.Controllers
             //创客真实姓名
             if (!string.IsNullOrEmpty(UserIdRealName))
             {
-                condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
+                condition += " and UserId in (select UserId from Users where RealName='" + UserIdRealName + "')";
             }
             //创客编号
             if (!string.IsNullOrEmpty(UserIdMakerCode))
@@ -554,7 +554,7 @@ namespace MySystem.Areas.Admin.Controllers
             //创客真实姓名
             if (!string.IsNullOrEmpty(UserIdRealName))
             {
-                condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
+                condition += " and UserId in (select UserId from Users where RealName='" + UserIdRealName + "')";
             }
             //创客编号
             if (!string.IsNullOrEmpty(UserIdMakerCode))
@@ -575,7 +575,7 @@ namespace MySystem.Areas.Admin.Controllers
             }
 
             var Ids = "";
-            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouseAmountRecord", Fields, "Id desc", "0", 1, 20000, condition, "Id,UserId,UseAmount", false);
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouseAmountRecord", Fields, "Id desc", "0", 1, 20000, condition, "Id,CreateDate,UserId,UseAmount", false);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)
             {
@@ -596,6 +596,11 @@ namespace MySystem.Areas.Admin.Controllers
 
                 //记录Id
                 int Id = int.Parse(function.CheckInt(dic["Id"].ToString()));
+                var storeHouseAmountRecord = db.StoreHouseAmountRecord.FirstOrDefault(m => m.Id == Id) ?? new StoreHouseAmountRecord();
+                if (storeHouseAmountRecord.Status == 0) dic["Status"] = "待处理";
+                if (storeHouseAmountRecord.Status == 2) dic["Status"] = "处理中";
+                if (storeHouseAmountRecord.Status == 1) dic["Status"] = "成功";
+                if (storeHouseAmountRecord.Status == -1) dic["Status"] = "失败";
                 dic["Id"] = Id;
                 Ids += Id + ",";
             }
@@ -607,6 +612,8 @@ namespace MySystem.Areas.Admin.Controllers
             result.Add("Obj", diclist);
             Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
             ReturnFields.Add("Id", "记录ID");
+            ReturnFields.Add("CreateDate", "提现申请时间");
+            ReturnFields.Add("Status", "提现结果");
             ReturnFields.Add("UserIdRealName", "创客真实姓名");
             ReturnFields.Add("UserIdMakerCode", "创客编号");
             ReturnFields.Add("UseAmount", "申请提现临额");

+ 194 - 24
Areas/Admin/Controllers/MainServer/SysToolsController.cs

@@ -105,7 +105,7 @@ namespace MySystem.Areas.Admin.Controllers
         }
 
         [HttpPost]
-        public string CheckMachineDo(string MakerCode, string PosSn, string MerNo = "", int AddActPrize = 0, int IsPre = 0, int IsSend = 0)
+        public string CheckMachineDo(string MakerCode, string PosSn, int AddActPrize = 0, int IsSend = 0)
         {
             if (string.IsNullOrEmpty(MakerCode))
             {
@@ -115,6 +115,8 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "请输入机具SN";
             }
+
+            var MerNo = "";
             PosMachinesTwo pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn);
             KqProducts kqProducts = db.KqProducts.FirstOrDefault(m => m.Id == pos.BrandId);
             if (pos == null)
@@ -126,7 +128,7 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "创客编号不存在";
             }
-            if (IsPre == 1)
+            if (pos.PreUserId > 0)
             {
                 if (pos.BuyUserId == 0)
                 {
@@ -287,6 +289,7 @@ namespace MySystem.Areas.Admin.Controllers
                 pos.ActivationTime = DateTime.Now;
             }
             PosMerchantInfo merchant = new PosMerchantInfo();
+
             if (!string.IsNullOrEmpty(MerNo))
             {
                 merchant = db.PosMerchantInfo.FirstOrDefault(m => m.KqMerNo == MerNo);
@@ -364,7 +367,7 @@ namespace MySystem.Areas.Admin.Controllers
                 pos.BindMerchantId = merchant.Id;
             }
             db.SaveChanges();
-            function.WriteLog(DateTime.Now.ToString() + "\n" + SysUserName + "\nMakerCode:" + MakerCode + ", PosSn:" + PosSn + ", MerNo:" + MerNo + ", AddActPrize:" + AddActPrize + ", IsPre:" + IsPre, "机具补录日志");
+            function.WriteLog(DateTime.Now.ToString() + "\n" + SysUserName + "\nMakerCode:" + MakerCode + ", PosSn:" + PosSn + ", MerNo:" + MerNo + ", AddActPrize:" + AddActPrize, "机具补录日志");
             return "success";
         }
         public IActionResult CheckMachine2(string right)
@@ -3705,6 +3708,70 @@ namespace MySystem.Areas.Admin.Controllers
         }
 
         [HttpPost]
+        // public string TransferPosDo(string PosSn, string FromMakerCode, string ToMakerCode)
+        // {
+        //     if (string.IsNullOrEmpty(PosSn))
+        //     {
+        //         return "请输入机具SN";
+        //     }
+        //     if (string.IsNullOrEmpty(FromMakerCode))
+        //     {
+        //         return "请输入机具来源创客编号";
+        //     }
+        //     if (string.IsNullOrEmpty(ToMakerCode))
+        //     {
+        //         return "请输入划拨对象创客编号";
+        //     }
+        //     var query = PosSn + "," + FromMakerCode + "," + ToMakerCode;
+        //     var machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
+        //     var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId) ?? new PosMachinesTwo();
+        //     if (posInfo.Id == 0)
+        //     {
+        //         return "机具" + PosSn + "不存在";
+        //     }
+        //     var user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == FromMakerCode) ?? new UserForMakerCode();
+        //     var tuser = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ToMakerCode) ?? new UserForMakerCode();
+        //     var fUserId = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users();
+        //     if (fUserId.Id == 0)
+        //     {
+        //         return "来源创客" + FromMakerCode + "不存在";
+        //     }
+        //     var tUserId = db.Users.FirstOrDefault(m => m.Id == tuser.UserId) ?? new Users();
+        //     if (tUserId.Id == 0)
+        //     {
+        //         return "划拨创客" + ToMakerCode + "不存在";
+        //     }
+        //     if (posInfo.BindingState == 0)
+        //     {
+        //         if (posInfo.UserId == 0 || posInfo.BuyUserId == posInfo.UserId)
+        //         {
+        //             posInfo.BuyUserId = tUserId.Id;
+        //             posInfo.UserId = tUserId.Id;
+        //         }
+        //         else
+        //         {
+        //             posInfo.BuyUserId = tUserId.Id;
+        //         }
+        //         var fUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == fUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData();
+        //         var tUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == tUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData();
+        //         fUserPos.TotalMachineCount -= 1;
+        //         fUserPos.UnBindCount -= 1;
+        //         tUserPos.TotalMachineCount += 1;
+        //         tUserPos.UnBindCount += 1;
+        //         db.SaveChanges();
+        //         function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "划拨创客机具");
+        //     }
+        //     else
+        //     {
+        //         return "机具" + PosSn + "已使用";
+        //     }
+
+        //     return "success";
+        // }
+        // #endregion
+
+
+
         public string TransferPosDo(string PosSn, string FromMakerCode, string ToMakerCode)
         {
             if (string.IsNullOrEmpty(PosSn))
@@ -3719,13 +3786,6 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "请输入划拨对象创客编号";
             }
-            var query = PosSn + "," + FromMakerCode + "," + ToMakerCode;
-            var machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
-            var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId) ?? new PosMachinesTwo();
-            if (posInfo.Id == 0)
-            {
-                return "机具" + PosSn + "不存在";
-            }
             var user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == FromMakerCode) ?? new UserForMakerCode();
             var tuser = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ToMakerCode) ?? new UserForMakerCode();
             var fUserId = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users();
@@ -3738,29 +3798,70 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "划拨创客" + ToMakerCode + "不存在";
             }
-            if (posInfo.BindingState == 0)
+            var SnIds = "";
+            string[] PosSnList = PosSn.Replace("\r", "").Replace("\n", ",").Split(',');
+            string error = "";
+            foreach (string Sn in PosSnList)
             {
-                if (posInfo.UserId == 0 || posInfo.BuyUserId == posInfo.UserId)
+                var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Status > -1 && m.BindingState == 0 && m.ActivationState == 0 && m.PosSn == Sn && (m.BuyUserId == fUserId.Id || m.UserId == fUserId.Id)) ?? new PosMachinesTwo();
+                if (posInfo.Id == 0)
                 {
-                    posInfo.BuyUserId = tUserId.Id;
-                    posInfo.UserId = tUserId.Id;
+                    error += "以下操作失败" + Sn + ',' + "不存在或者不符合条件" + '\n';
                 }
                 else
                 {
-                    posInfo.BuyUserId = tUserId.Id;
+                    SnIds += posInfo.Id + ",";
                 }
-                var fUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == fUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData();
-                var tUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == tUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData();
-                fUserPos.TotalMachineCount -= 1;
-                fUserPos.UnBindCount -= 1;
-                tUserPos.TotalMachineCount += 1;
-                tUserPos.UnBindCount += 1;
-                db.SaveChanges();
-                function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "划拨创客机具");
+            }
+            if (!string.IsNullOrEmpty(error))
+            {
+                return "Warning|" + error;
             }
             else
             {
-                return "机具" + PosSn + "已使用";
+                var posList = db.PosMachinesTwo.Where(m => SnIds.Contains("," + m.Id + ",")).ToList();
+                foreach (var Sn in posList)
+                {
+                    var posInfo = posList.FirstOrDefault(m => m.Id == Sn.Id) ?? new PosMachinesTwo();
+                    if (posInfo.UserId == 0 || posInfo.BuyUserId == posInfo.UserId)
+                    {
+                        posInfo.BuyUserId = tUserId.Id;
+                        posInfo.UserId = tUserId.Id;
+                    }
+                    else
+                    {
+                        posInfo.BuyUserId = tUserId.Id;
+                    }
+                    var fUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == fUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData();
+                    var tUserPos = db.UserMachineData.FirstOrDefault(m => m.IdBrand == tUserId.Id + "_" + posInfo.BrandId) ?? new UserMachineData();
+                    fUserPos.TotalMachineCount -= 1;
+                    fUserPos.UnBindCount -= 1;
+                    tUserPos.TotalMachineCount += 1;
+                    tUserPos.UnBindCount += 1;
+                    db.StoreChangeHistory.Add(new StoreChangeHistory()
+                    {
+                        CreateDate = DateTime.Now,
+                        UserId = fUserId.Id, //创客
+                        BrandId = posInfo.BrandId,//产品类型
+                        ChangeRecordNo = "HBJJ" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8), //变更记录单号
+                        TransType = 1, //交易类型
+                        SnNo = posInfo.PosSn, //SN编号
+                        SnType = posInfo.PosSnType, //SN机具类型
+                        StockOpDirect = 1, //库存操作方向
+                        DeviceVendor = posInfo.DeviceName, //设备厂商
+                        DeviceModel = posInfo.DeviceKind, //设备型号
+                        DeviceType = posInfo.DeviceType, //设备类型
+                        FromUserId = fUserId.Id, //出货创客
+                        FromDate = DateTime.Now, //出库时间
+                        FromRemark = "划拨创客机具", //出库备注
+                        SourceStoreId = posInfo.SourceStoreId, //源仓库
+                        ToUserId = tUserId.Id,//收货创客
+                    });
+                }
+                var query = SnIds + ";" + FromMakerCode + ";" + ToMakerCode;
+                function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "划拨创客机具");
+                db.SaveChanges();
+                db.Dispose();
             }
 
             return "success";
@@ -4383,5 +4484,74 @@ namespace MySystem.Areas.Admin.Controllers
         #endregion
 
 
+        #region 查询商户达标明细
+
+        public IActionResult SeeMerchantTradeDetail(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [HttpPost]
+        public string SeeMerchantTradeDetailDo(string PosSn)
+        {
+            if (string.IsNullOrEmpty(PosSn))
+            {
+                return "请输入机具SN";
+            }
+            var result = "";
+            var pos = db.PosMachinesTwo.FirstOrDefault(m => m.PosSn == PosSn) ?? new PosMachinesTwo();
+            if (pos.Id > 0)
+            {
+                var mer = db.PosMerchantInfo.FirstOrDefault(m => m.Id == pos.BindMerchantId) ?? new PosMerchantInfo();
+                if (mer.Id > 0)
+                {
+                    var IsOk = "";//是否达标
+                    var timeInfo = "";
+                    if (mer.StandardMonths == 10)
+                    {
+                        IsOk = "已达标";
+                    }
+                    else
+                    {
+                        IsOk = "未达标";
+                    }
+                    result += IsOk + "\n";
+                    result += "开机时间:" + DateTime.Parse(pos.BindingTime.ToString()).ToString("yyyy-MM-dd hh:mm:sss") + "\n";
+                    result += "激活时间:" + DateTime.Parse(pos.ActivationTime.ToString()).ToString("yyyy-MM-dd hh:mm:sss") + "\n";
+                    result += "商户姓名:" + mer.MerRealName + "\n";
+                    result += "明细:\n";
+                    for (int i = 0; i < 12; i++)
+                    {
+                        var time = DateTime.Parse(pos.ActivationTime.ToString()).AddMonths(i + 1).ToString("yyyyMM");//达标计算开始时间
+                        timeInfo += "," + time;
+                    }
+                    timeInfo = timeInfo + ",";
+                    var merTradeInfo = db.PosMerchantTradeSummay.Where(m => m.MerchantId == mer.Id && timeInfo.Contains("," + m.TradeMonth + ",")).ToList();
+                    string[] month = timeInfo.TrimStart(',').TrimEnd(',').Split(',');
+                    foreach (var item in month)
+                    {
+                        var tradeAmount = merTradeInfo.Where(m => m.TradeMonth == item).Sum(m => m.TradeAmount);
+                        result += item + "交易额:" + tradeAmount + "\n";
+                    }
+                }
+                else
+                {
+                    return "未找到机具" + PosSn + "所对应的商户";
+                }
+            }
+            else
+            {
+                return "未找到机具" + PosSn;
+            }
+
+            return result;
+        }
+
+        #endregion
+
+
     }
 }

+ 163 - 12
Areas/Admin/Controllers/MainServer/ToChargeBackRecordController.cs

@@ -96,16 +96,22 @@ namespace MySystem.Areas.Admin.Controllers
                 Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
                 dic["UserIdMakerCode"] = userid_Users.MakerCode;
                 dic["UserIdRealName"] = userid_Users.RealName;
+                dic["UserIdMobile"] = userid_Users.Mobile;
                 dic.Remove("UserId");
+
                 //待扣类型
                 int ChargeType = int.Parse(dic["ChargeType"].ToString());
-                if (ChargeType == 124) dic["ChargeType"] = "过期机具扣款";
+                if (ChargeType == 124) dic["ChargeTypeName"] = "过期机具扣款";
+                if (ChargeType == 1) dic["ChargeTypeName"] = "创客预扣款";
+                if (ChargeType == 2) dic["ChargeTypeName"] = "分期预扣款";
+                if (ChargeType == 0) dic["ChargeTypeName"] = "";
 
                 //扣款状态
                 int Status = int.Parse(dic["Status"].ToString());
-                if (Status == 0) dic["Status"] = "待扣款";
-                if (Status == 1) dic["Status"] = "已扣款";
-                if (Status == 2) dic["Status"] = "已退还";
+                if (Status == 0) dic["StatusName"] = "待扣款";
+                if (Status == 1) dic["StatusName"] = "已扣款";
+                if (Status == 2) dic["StatusName"] = "已退还";
+                if (Status == 3) dic["StatusName"] = "暂停扣款";
 
             }
             return Json(obj);
@@ -172,7 +178,9 @@ namespace MySystem.Areas.Admin.Controllers
 
 
             ToChargeBackRecord editData = db.ToChargeBackRecord.FirstOrDefault(m => m.Id == Id) ?? new ToChargeBackRecord();
+            var user = db.Users.FirstOrDefault(m => m.Id == editData.UserId) ?? new Users();
             ViewBag.data = editData;
+            ViewBag.MakerCode = user.MakerCode;
             return View();
         }
 
@@ -188,16 +196,25 @@ namespace MySystem.Areas.Admin.Controllers
         public string Edit(ToChargeBackRecord data)
         {
             Dictionary<string, object> Fields = new Dictionary<string, object>();
-
-            Fields.Add("UserId", data.UserId); //创客
+            var info = db.ToChargeBackRecord.FirstOrDefault(m => m.Id == data.Id) ?? new ToChargeBackRecord();
+            if (info.ChargeAmount != data.ChargeAmount)
+            {
+                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == info.UserId) ?? new UserAccount();
+                if (info.ChargeAmount > data.ChargeAmount)
+                {
+                    userAccount.ToChargeAmount -= info.ChargeAmount - data.ChargeAmount;
+                }
+                if (info.ChargeAmount < data.ChargeAmount)
+                {
+                    userAccount.ToChargeAmount += data.ChargeAmount - info.ChargeAmount;
+                }
+            }
             Fields.Add("ChargeAmount", data.ChargeAmount); //待扣金额
-            Fields.Add("ChargeType", data.ChargeType); //待扣类型
-            Fields.Add("Remark", data.Remark); //备注
-            Fields.Add("Field1", data.Field1); //备用字段
-
-            Fields.Add("SeoTitle", data.SeoTitle);
-            Fields.Add("SeoKeyword", data.SeoKeyword);
             Fields.Add("SeoDescription", data.SeoDescription);
+            if (info.ChargeType != 124)
+            {
+                Fields.Add("Remark", data.SeoDescription);
+            }
             new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ToChargeBackRecord", Fields, data.Id);
             AddSysLog(data.Id.ToString(), "ToChargeBackRecord", "update");
             db.SaveChanges();
@@ -220,6 +237,9 @@ namespace MySystem.Areas.Admin.Controllers
             foreach (string subid in idlist)
             {
                 int id = int.Parse(subid);
+                var toChargeBackRecord = db.ToChargeBackRecord.FirstOrDefault(m => m.Id == id) ?? new ToChargeBackRecord();
+                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == toChargeBackRecord.UserId) ?? new UserAccount();
+                userAccount.ToChargeAmount -= toChargeBackRecord.ChargeAmount;//删除预扣款记录时扣减相应预扣额度
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
                 Fields.Add("Status", -1);
                 new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ToChargeBackRecord", Fields, id);
@@ -277,6 +297,54 @@ namespace MySystem.Areas.Admin.Controllers
 
         #endregion
 
+
+        #region 暂停扣款
+
+        /// <summary>
+        /// 暂停扣款
+        /// </summary>
+        /// <returns></returns>
+        public string Break(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ToChargeBackRecord", "Break");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 3);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ToChargeBackRecord", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启扣款
+
+        /// <summary>
+        /// 开启扣款
+        /// </summary>
+        /// <returns></returns>
+        public string Start(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ToChargeBackRecord", "Start");
+            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("ToChargeBackRecord", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+
         #region 排序
         /// <summary>
         /// 排序
@@ -291,6 +359,71 @@ namespace MySystem.Areas.Admin.Controllers
         }
         #endregion
 
+
+        #region 导入预扣信息
+        /// <summary>
+        /// 导入预扣信息
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string ChargeImport(string ExcelData)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            var info = "";
+            var error = "";
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+                string itemJson = dr.ToJson();
+                string MakerCode = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string Name = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                string Amount = itemJson.Contains("\"C\"") ? dr["C"].ToString() : "";
+                string Remark = itemJson.Contains("\"D\"") ? dr["D"].ToString() : "";
+                var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+                var users = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId && m.RealName == Name) ?? new Users();
+                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == users.Id);
+                if (users.Id == 0)
+                {
+                    error += "失败:" + MakerCode + "_" + Name + "创客不存在或创客编号和姓名不匹配" + '\n';
+                }
+                else
+                {
+                    if (userAccount == null)
+                    {
+                        userAccount = db.UserAccount.Add(new UserAccount()
+                        {
+                            Id = users.Id,
+                            UserId = users.Id,
+                        }).Entity;
+                        db.SaveChanges();
+                    }
+                    userAccount.ToChargeAmount += decimal.Parse(Amount);
+                    var ToChargeBackRecord = db.ToChargeBackRecord.Add(new ToChargeBackRecord
+                    {
+                        CreateDate = DateTime.Now,
+                        SeoTitle = SysUserName + "_" + SysRealName,
+                        SeoDescription = Remark,
+                        Remark = Remark,
+                        ChargeType = 1,
+                        ChargeAmount = decimal.Parse(Amount),
+                        UserId = users.Id,
+                    }).Entity;
+                    info += "创客编号:" + MakerCode + ";创客姓名:" + Name + ";金额:" + Amount + ";备注:" + Remark + "<br/>";
+                }
+            }
+            if (!string.IsNullOrEmpty(error))
+            {
+                return "Warning|" + error;
+            }
+            string text = string.Format("预扣信息: '" + info + "',Time'" + DateTime.Now + "'");
+            function.WriteLog(text, "导入预扣信息");//机具扣款退还
+            db.SaveChanges();
+            AddSysLog("0", "ToChargeBackRecord", "ChargeImport");
+            return "success";
+        }
+        #endregion
+
+
         #region 机具扣款退还
         /// <summary>
         /// 导入数据
@@ -510,5 +643,23 @@ namespace MySystem.Areas.Admin.Controllers
 
         #endregion
 
+
+        #region 分期扣款
+
+        public IActionResult ChangeInfoDo(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        public string ChangeInfoDo(string PosCouponCodes, string FromMakerCode)
+        {
+            var result = "";
+            return result;
+        }
+        #endregion
+
     }
 }

+ 376 - 0
Areas/Admin/Controllers/MainServer/ToChargeBackRecordSubController.cs

@@ -0,0 +1,376 @@
+/*
+ * 待扣款明细
+ */
+
+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 ToChargeBackRecordSubController : BaseController
+    {
+        public ToChargeBackRecordSubController(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(ToChargeBackRecordSub data, string right, string ParentId)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.ParentId = ParentId;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询待扣款明细列表
+
+        /// <summary>
+        /// 待扣款明细列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(ToChargeBackRecordSub data, string OrderNo, string StatusSelect, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("ParentId", "1");
+
+            string condition = " and Status>-1";
+
+            //分期单号
+            if (!string.IsNullOrEmpty(OrderNo))
+            {
+                var toChargeByStage = db.ToChargeByStage.FirstOrDefault(m => m.SeoKeyword == OrderNo) ?? new ToChargeByStage();
+                var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.ParentId == toChargeByStage.Id) ?? new ToChargeBackRecordSub();
+                condition += " and ParentId=" + toChargeByStage.Id;
+            }
+
+            //状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+
+            //创建时间
+            if (!string.IsNullOrEmpty(CreateDateData))
+            {
+                string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
+            }
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ToChargeBackRecordSub", 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 Status = int.Parse(function.CheckInt(dic["Status"].ToString()));
+                dic["StatusName"] = "";
+                if (Status == 0)
+                {
+                    dic["StatusName"] = "待扣款";
+                }
+                if (Status == 1)
+                {
+                    dic["StatusName"] = "已扣款";
+                }
+                if (Status == 2)
+                {
+                    dic["StatusName"] = "扣款中";
+                }
+
+                //分期单号
+                int ParentId = int.Parse(function.CheckInt(dic["ParentId"].ToString()));
+                var toChargeByStage = db.ToChargeByStage.FirstOrDefault(m => m.Id == ParentId) ?? new ToChargeByStage();
+                dic["OrderNo"] = toChargeByStage.SeoKeyword;
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加待扣款明细
+
+        /// <summary>
+        /// 增加或修改待扣款明细信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right, string ParentId)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.ParentId = ParentId;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加待扣款明细
+
+        /// <summary>
+        /// 增加或修改待扣款明细信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(ToChargeBackRecordSub data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("ParentId", data.ParentId);
+
+            Fields.Add("ChargeAmount", data.ChargeAmount); //待扣金额
+            Fields.Add("Remark", data.Remark); //备注
+            Fields.Add("StartDate", data.StartDate); //扣款开始时间
+            Fields.Add("TimeNumber", data.TimeNumber); //期数
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("ToChargeBackRecordSub", Fields, 0);
+            AddSysLog(data.Id.ToString(), "ToChargeBackRecordSub", "add");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改待扣款明细
+
+        /// <summary>
+        /// 增加或修改待扣款明细信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, string ParentId, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.ParentId = ParentId;
+
+
+            ToChargeBackRecordSub editData = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Id == Id) ?? new ToChargeBackRecordSub();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改待扣款明细
+
+        /// <summary>
+        /// 增加或修改待扣款明细信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(ToChargeBackRecordSub data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            var toChargeBackRecordSub = db.ToChargeBackRecordSub.FirstOrDefault(m => m.Id == data.Id) ?? new ToChargeBackRecordSub();
+            var toChargeByStage = db.ToChargeByStage.FirstOrDefault(m => m.Id == toChargeBackRecordSub.ParentId) ?? new ToChargeByStage();
+            if (toChargeByStage.QueryCount > 0)
+            {
+                return "该扣款记录正处于扣款中或已经结束,不能修改!";
+            }
+            if (toChargeBackRecordSub.ChargeAmount != data.ChargeAmount)
+            {
+                var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == toChargeByStage.UserId) ?? new UserAccount();
+                if (toChargeBackRecordSub.ChargeAmount > data.ChargeAmount)
+                {
+                    toChargeByStage.TotalAmount -= toChargeBackRecordSub.ChargeAmount - data.ChargeAmount;
+                    userAccount.ToChargeAmount -= toChargeBackRecordSub.ChargeAmount - data.ChargeAmount;
+                }
+                if (toChargeBackRecordSub.ChargeAmount < data.ChargeAmount)
+                {
+                    toChargeByStage.TotalAmount += data.ChargeAmount - toChargeBackRecordSub.ChargeAmount;
+                    userAccount.ToChargeAmount += data.ChargeAmount - toChargeBackRecordSub.ChargeAmount;
+                }
+            }
+            Fields.Add("ChargeAmount", data.ChargeAmount); //待扣金额
+            Fields.Add("Remark", data.Remark); //备注
+            Fields.Add("StartDate", data.StartDate); //扣款开始时间
+            Fields.Add("TimeNumber", data.TimeNumber); //期数
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ToChargeBackRecordSub", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "ToChargeBackRecordSub", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除待扣款明细信息
+
+        /// <summary>
+        /// 删除待扣款明细信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ToChargeBackRecordSub", "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("ToChargeBackRecordSub", 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, "ToChargeBackRecordSub", "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("ToChargeBackRecordSub", 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, "ToChargeBackRecordSub", "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("ToChargeBackRecordSub", 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("ToChargeBackRecordSub", Sort, Id);
+
+            AddSysLog(Id.ToString(), "ToChargeBackRecordSub", "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.ToChargeBackRecordSub.Add(new ToChargeBackRecordSub()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "ToChargeBackRecordSub", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(ToChargeBackRecordSub data)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CreateDate", "3"); //时间
+
+
+            string condition = " and Status>-1";
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ToChargeBackRecordSub", Fields, "Id desc", "0", 1, 20000, condition, "ChargeAmount,Remark", 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("ChargeAmount", "待扣金额");
+            ReturnFields.Add("Remark", "备注");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "ToChargeBackRecordSub", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 420 - 0
Areas/Admin/Controllers/MainServer/ToChargeByStageController.cs

@@ -0,0 +1,420 @@
+/*
+ * 分期扣款信息
+ */
+
+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 ToChargeByStageController : BaseController
+    {
+        public ToChargeByStageController(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(ToChargeByStage data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询分期扣款信息列表
+
+        /// <summary>
+        /// 分期扣款信息列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(ToChargeByStage data, string MakerCode, string StatusSelect, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("SeoTitle", "1"); //创客姓名
+
+            string condition = " and Status>-1";
+
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+                condition += " and UserId=" + userForMakerCode.UserId;
+            }
+
+            //状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                if (StatusSelect == "0")//待扣款
+                {
+                    condition += " and QueryCount<TimeNumber and QueryCount=0 and Status=0";
+                }
+                if (StatusSelect == "1")//已扣款
+                {
+                    condition += " and QueryCount=TimeNumber and Status=1";
+                }
+                if (StatusSelect == "2")//扣款中
+                {
+                    condition += " and QueryCount<TimeNumber and QueryCount>0 and Status=0";
+                }
+            }
+
+            //创建时间
+            if (!string.IsNullOrEmpty(CreateDateData))
+            {
+                string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ToChargeByStage", 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["MakerCode"] = userid_Users.MakerCode;
+                dic["MakerName"] = userid_Users.RealName;
+                dic["MakerMobile"] = userid_Users.Mobile;
+
+                //扣款状态
+                int TimeNumber = int.Parse(function.CheckInt(dic["TimeNumber"].ToString()));
+                int QueryCount = int.Parse(function.CheckInt(dic["QueryCount"].ToString()));
+                int Status = int.Parse(function.CheckInt(dic["Status"].ToString()));
+                if (QueryCount < TimeNumber && QueryCount == 0 && Status == 0)
+                {
+                    dic["StatusName"] = "待扣款";
+                }
+                if (QueryCount == TimeNumber && Status == 1)
+                {
+                    dic["StatusName"] = "已扣款";
+                }
+                if (QueryCount < TimeNumber && QueryCount > 0 && Status == 0)
+                {
+                    dic["StatusName"] = "扣款中";
+                }
+
+            }
+            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(ToChargeByStage data, string MakerCode, string MakerName, string StartDates, string ChargeAmounts)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            string[] StartDatelist = StartDates.TrimEnd(',').Split(',');
+            string[] ChargeAmountslist = ChargeAmounts.TrimEnd(',').Split(',');
+            UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+            if (user == null)
+            {
+                return "创客编号不存在";
+            }
+            var userInfo = db.Users.FirstOrDefault(m => m.Id == user.UserId && m.RealName == MakerName) ?? new Users();
+            if (userInfo.Id == 0)
+            {
+                return "创客编号不存在或创客编号和姓名不匹配";
+            }
+            var StartTime = DateTime.Parse(DateTime.Parse(data.StartDate.ToString()).ToString("yyyy-MM-20 00:00:00"));
+            Fields.Add("UserId", user.UserId); //创客Id
+            Fields.Add("Remark", data.Remark); //备注
+            Fields.Add("StartDate", StartTime); //扣款开始时间
+            Fields.Add("TimeNumber", data.TimeNumber); //期数
+            Fields.Add("TotalAmount", data.TotalAmount); //扣款总金额
+            Fields.Add("SeoTitle", SysUserName + "_" + SysRealName);//操作人
+            Fields.Add("SeoKeyword", "FQ" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8));//分期单号
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("ToChargeByStage", Fields, 0);
+            for (int i = 0; i < StartDatelist.Length; i++)
+            {
+                var StartDate = StartDatelist[i];
+                var ChargeAmount = ChargeAmountslist[i];
+                var toChargeBackRecordSub = db.ToChargeBackRecordSub.Add(new ToChargeBackRecordSub()
+                {
+                    CreateDate = DateTime.Now,
+                    SeoTitle = SysUserName + "_" + SysRealName,
+                    StartDate = DateTime.Parse(StartDate),
+                    TimeNumber = data.TimeNumber,
+                    ChargeAmount = decimal.Parse(ChargeAmount),
+                    ParentId = Id,
+                    Remark = data.Remark,
+                }).Entity;
+            }
+            AddSysLog(data.Id.ToString(), "ToChargeByStage", "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;
+
+
+            ToChargeByStage editData = db.ToChargeByStage.FirstOrDefault(m => m.Id == Id) ?? new ToChargeByStage();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改分期扣款信息
+
+        /// <summary>
+        /// 增加或修改分期扣款信息信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(ToChargeByStage data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("UserId", data.UserId); //创客
+            Fields.Add("ChargeAmount", data.ChargeAmount); //待扣金额
+            Fields.Add("Remark", data.Remark); //备注
+            Fields.Add("StartDate", data.StartDate); //扣款开始时间
+            Fields.Add("TimeNumber", data.TimeNumber); //期数
+            Fields.Add("TotalAmount", data.TotalAmount); //扣款总金额
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ToChargeByStage", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "ToChargeByStage", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除分期扣款信息信息
+
+        /// <summary>
+        /// 删除分期扣款信息信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "ToChargeByStage", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                var toChargeBackRecordSub = db.ToChargeBackRecordSub.Where(m => m.ParentId == id).ToList();
+                foreach (var item in toChargeBackRecordSub)
+                {
+                    var info = toChargeBackRecordSub.FirstOrDefault(m => m.Id == item.Id);
+                    info.Status = -1;
+                    info.UpdateDate = DateTime.Now;
+                    info.SeoTitle = SysUserName + "_" + SysRealName;
+                }
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                Fields.Add("SeoTitle", SysUserName + "_" + SysRealName);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("ToChargeByStage", 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, "ToChargeByStage", "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("ToChargeByStage", 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, "ToChargeByStage", "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("ToChargeByStage", 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("ToChargeByStage", Sort, Id);
+
+            AddSysLog(Id.ToString(), "ToChargeByStage", "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];
+                int UserId = int.Parse(dr["创客"].ToString());
+                decimal ChargeAmount = decimal.Parse(dr["待扣金额"].ToString());
+                string Remark = dr["备注"].ToString();
+                DateTime StartDate = DateTime.Parse(dr["扣款开始时间"].ToString());
+                int TimeNumber = int.Parse(dr["期数"].ToString());
+                decimal TotalAmount = decimal.Parse(dr["扣款总金额"].ToString());
+
+                db.ToChargeByStage.Add(new ToChargeByStage()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+                    UserId = UserId,   //创客
+                    ChargeAmount = ChargeAmount,   //待扣金额
+                    Remark = Remark,   //备注
+                    StartDate = StartDate,   //扣款开始时间
+                    TimeNumber = TimeNumber,   //期数
+                    TotalAmount = TotalAmount,   //扣款总金额
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "ToChargeByStage", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(ToChargeByStage data, int? sUserId, int? eUserId)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("sUserId", "31"); //创客上限
+            Fields.Add("eUserId", "32"); //创客下限
+            Fields.Add("CreateDate", "3"); //时间
+
+
+            string condition = " and Status>-1";
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("ToChargeByStage", 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)
+            {
+
+            }
+
+            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>();
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "ToChargeByStage", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 211 - 24
Areas/Admin/Controllers/MainServer/UsersController.cs

@@ -181,6 +181,152 @@ namespace MySystem.Areas.Admin.Controllers
 
         #endregion
 
+
+        #region 创客列表
+
+        /// <summary>
+        /// 根据条件查询创客列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult CancleUsers(Users data, string right, int SelfId = 0, int ParentId = 0, string MakerCode = "")
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.SelfId = SelfId.ToString();
+            ViewBag.ParentId = ParentId.ToString();
+            ViewBag.MakerCode = MakerCode;
+
+            List<Users> TopUsers = db.Users.Where(m => m.ParentUserId == 0).ToList();
+            ViewBag.TopUsers = TopUsers;
+            List<UserLevelSet> Levels = db.UserLevelSet.OrderBy(m => m.Id).ToList();
+            ViewBag.Levels = Levels;
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询创客列表
+
+        /// <summary>
+        /// 创客列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult CancleUsersData(Users data, string ParentMakerCode, string ParentRealName, string AuthFlagSelect, string CreateDateData, int TopUserId, string RiskFlagSelect, string MerchantTypeSelect, int? sSettleAmount, int? eSettleAmount, int? sCashFreezeAmt, int? eCashFreezeAmt, int UserId, int SelfId = 0, int ParentId = 0, int ShowFlag = 0, int page = 1, int limit = 30)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("MakerCode", "1"); //创客编号
+            Fields.Add("RealName", "1"); //创客名称
+            Fields.Add("Mobile", "1"); //手机号
+            Fields.Add("CertId", "1"); //身份证号码
+            Fields.Add("SettleAmount", "3"); //结算金额
+            Fields.Add("CashFreezeAmt", "3"); //冻结金额
+            Fields.Add("UserLevel", "0"); //创客等级
+
+            string condition = " and Status=-1";
+            string sort = "Id desc";
+            //直属创客编号
+            if (!string.IsNullOrEmpty(ParentMakerCode))
+            {
+                condition += " and ParentUserId in (select UserId from UserForMakerCode where MakerCode='" + ParentMakerCode + "')";
+            }
+            //直属创客名称
+            if (!string.IsNullOrEmpty(ParentRealName))
+            {
+                condition += " and ParentUserId in (select UserId from UserForRealName where RealName='" + ParentRealName + "')";
+            }
+            //实名状态
+            if (!string.IsNullOrEmpty(AuthFlagSelect))
+            {
+                condition += " and AuthFlag=" + AuthFlagSelect;
+            }
+            //顶级创客
+            if (TopUserId > 0)
+            {
+                condition += " and ParentNav like '," + TopUserId + ",%'";
+            }
+            //风控标识
+            if (!string.IsNullOrEmpty(RiskFlagSelect))
+            {
+                condition += " and RiskFlag=" + RiskFlagSelect;
+            }
+            //商户创客类型
+            if (!string.IsNullOrEmpty(MerchantTypeSelect))
+            {
+                condition += " and MerchantType=" + MerchantTypeSelect;
+            }
+            if (sSettleAmount != null)
+            {
+                condition += " and SettleAmount>=" + sSettleAmount.Value;
+            }
+            if (eSettleAmount != null)
+            {
+                condition += " and SettleAmount<=" + eSettleAmount.Value;
+            }
+            if (sCashFreezeAmt != null)
+            {
+                condition += " and CashFreezeAmt>=" + sCashFreezeAmt.Value;
+            }
+            if (eCashFreezeAmt != null)
+            {
+                condition += " and CashFreezeAmt<=" + eCashFreezeAmt.Value;
+            }
+            if (SelfId > 0)
+            {
+                Users self = db.Users.FirstOrDefault(m => m.Id == SelfId);
+                if (self != null)
+                {
+                    string ParentNav = function.CheckNull(self.ParentNav);
+                    condition += " and Id in (" + ParentNav.Trim(',').Replace(",,", ",") + ")";
+                    sort = "ParentNav asc";
+                }
+            }
+            if (ParentId > 0)
+            {
+                condition += " and ParentUserId=" + ParentId;
+            }
+            if (UserId > 0)
+            {
+                condition += " and Id=" + UserId;
+            }
+            if (!string.IsNullOrEmpty(CreateDateData))
+            {
+                string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
+            }
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("Users", Fields, sort, "True", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                dic["AuthFlagName"] = dic["AuthFlag"].ToString() == "1" ? "已实名" : "未实名";
+                dic["RiskFlagName"] = dic["RiskFlag"].ToString() == "1" ? "已风控" : "未风控";
+                dic["UserLevel"] = RelationClass.GetUserLevelSetInfo(int.Parse(dic["UserLevel"].ToString()));
+                dic["MerchantType"] = RelationClassForConst.GetMerchantTypeInfo(int.Parse(dic["MerchantType"].ToString()));
+                int ParentUserId = int.Parse(dic["ParentUserId"].ToString());
+                Users puser = db.Users.FirstOrDefault(m => m.Id == ParentUserId) ?? new Users();
+                dic["ParentMakerCode"] = puser.MakerCode;
+                dic["ParentRealName"] = puser.RealName;
+                string ParentNav = dic["ParentNav"].ToString();
+                if (!string.IsNullOrEmpty(ParentNav))
+                {
+                    string[] list = ParentNav.Trim(',').Replace(",,", ",").Split(',');
+                    if (list.Length > 1)
+                    {
+                        int TopId = int.Parse(function.CheckInt(list[1]));
+                        Users tuser = db.Users.FirstOrDefault(m => m.Id == TopId) ?? new Users();
+                        dic["TopMakerCode"] = tuser.MakerCode;
+                        dic["TopRealName"] = tuser.RealName;
+                    }
+                }
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+
         #region 增加创客
 
         /// <summary>
@@ -546,10 +692,10 @@ namespace MySystem.Areas.Admin.Controllers
 
 
         #region 注销
-        // 1、未实名创客;
-        // 2、已实名创客,无开通商户;
-        // 3、近7天未在商城下单过商品;
-        // 4、名下无未绑定机具、机具券,无未申请的循环机;
+        // 1.创客名下无未绑定机具且没有申请中的机具循环及兑换订单
+        // 2.创客名下无预发机
+        // 3.创客名下无分仓及运营中心
+        // 满足以上全部条件的用户可申请注销,申请后用户二次填写确认填写信息(姓名、手机号、身份证号)即可完成注销
         public string Cancel(string UserId)
         {
             Users user = db.Users.FirstOrDefault(m => m.Id == Convert.ToInt32(UserId));
@@ -557,41 +703,82 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 if (user.AuthFlag == 1)
                 {
-                    bool check = db.PosMachinesTwo.Any(m => m.BuyUserId == user.Id && m.BindingState == 1);
+                    // bool check = db.PosMachinesTwo.Any(m => m.BuyUserId == user.Id && m.BindingState == 1);
+                    // if (check)
+                    // {
+                    //     return "注销失败,未满足条件:已实名创客,无开通商户。如有疑问,请联系客服";
+                    // }
+                    // DateTime checkDate = DateTime.Now.AddDays(-7);
+                    // check = db.Orders.Any(m => m.CreateDate >= checkDate && m.Status > 0 && m.UserId == user.Id);
+                    // if (check)
+                    // {
+                    //     return "注销失败,未满足条件:近7天未在商城下单过商品。如有疑问,请联系客服";
+                    // }
+                    // check = db.PosMachinesTwo.Any(m => m.BuyUserId == user.Id && m.IsPurchase == 0);
+                    // if (check)
+                    // {
+                    //     return "注销失败,未满足条件:名下无未绑定机具、机具券,无未申请的循环机。如有疑问,请联系客服";
+                    // }
+                    // check = db.PosCoupons.Any(m => m.UserId == user.Id && m.IsUse == 0);
+                    // if (check)
+                    // {
+                    //     return "注销失败,未满足条件:名下无未绑定机具、机具券,无未申请的循环机。如有疑问,请联系客服";
+                    // }
+
+                    bool check = db.PosMachinesTwo.Any(m => m.BuyUserId == user.Id && m.BindingState == 0);
                     if (check)
                     {
-                        return "注销失败,未满足条件:已实名创客,无开通商户。如有疑问,请联系客服";
+                        return "注销失败,未满足条件:名下存在未绑定机具。如有疑问,请联系客服";
                     }
-                    DateTime checkDate = DateTime.Now.AddDays(-7);
-                    check = db.Orders.Any(m => m.CreateDate >= checkDate && m.Status > 0 && m.UserId == user.Id);
+                    check = db.MachineApply.Any(m => m.Status == 0 && m.UserId == user.Id);
                     if (check)
                     {
-                        return "注销失败,未满足条件:近7天未在商城下单过商品。如有疑问,请联系客服";
+                        return "注销失败,未满足条件:名下存在未完成的机具循环兑换订单。如有疑问,请联系客服";
                     }
-                    check = db.PosMachinesTwo.Any(m => m.BuyUserId == user.Id && m.IsPurchase == 0);
+                    check = db.PreSendStockDetail.Any(m => m.Status == 1 && m.AuthFlag == 0 && m.ToUserId == user.Id);
                     if (check)
                     {
-                        return "注销失败,未满足条件:名下无未绑定机具、机具券,无未申请的循环机。如有疑问,请联系客服";
+                        return "注销失败,未满足条件:名下存在预发机。如有疑问,请联系客服";
+                    }
+                    if (user.UserType == 1)
+                    {
+                        return "注销失败,未满足条件:名下存在运营中心。如有疑问,请联系客服";
                     }
-                    check = db.PosCoupons.Any(m => m.UserId == user.Id && m.IsUse == 0);
+                    check = db.StoreHouse.Any(m => m.Status == 1 && m.UserId == user.Id);
                     if (check)
                     {
-                        return "注销失败,未满足条件:名下无未绑定机具、机具券,无未申请的循环机。如有疑问,请联系客服";
+                        return "注销失败,未满足条件:名下存在分仓。如有疑问,请联系客服";
                     }
+                    UserForMobile forMobile = db.UserForMobile.FirstOrDefault(m => m.Mobile == user.Mobile);
+                    if (forMobile != null)
+                    {
+                        db.Remove(forMobile);
+                    }
+                    UserForMakerCode forCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == user.MakerCode);
+                    if (forCode != null)
+                    {
+                        db.UserForMakerCode.Remove(forCode);
+                    }
+                    user.Status = -1;
+                    user.Mobile += "d";
+                    user.CertId += "d";
                 }
-                UserForMobile forMobile = db.UserForMobile.FirstOrDefault(m => m.Mobile == user.Mobile);
-                if (forMobile != null)
-                {
-                    db.UserForMobile.Remove(forMobile);
-                }
-                UserForMakerCode forCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == user.MakerCode);
-                if (forCode != null)
+                else
                 {
-                    db.UserForMakerCode.Remove(forCode);
+                    UserForMobile forMobile = db.UserForMobile.FirstOrDefault(m => m.Mobile == user.Mobile);
+                    if (forMobile != null)
+                    {
+                        db.UserForMobile.Remove(forMobile);
+                    }
+                    UserForMakerCode forCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == user.MakerCode);
+                    if (forCode != null)
+                    {
+                        db.UserForMakerCode.Remove(forCode);
+                    }
+                    user.Status = -1;
+                    user.Mobile += "d";
+                    user.CertId += "d";
                 }
-                user.Status = -1;
-                user.Mobile += "d";
-                user.CertId += "d";
                 function.WriteLog(user.Id + "于" + DateTime.Now.ToString() + "注销账号", "创客注销日志");
                 // TODO: 每月扫描一次注销的创客,把注销创客伞下创客全部挂到注销创客的上级
                 // TODO: 清除token,token登录返回

+ 135 - 0
Areas/Admin/Controllers/OperateServer/AmountRecordOperateController.cs

@@ -0,0 +1,135 @@
+/*
+ * 创客账户变动记录
+ */
+
+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.OpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class AmountRecordOperateController : BaseController
+    {
+        public AmountRecordOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["OpSqlConnStr"].ToString();
+        }
+
+        #region 运营中心额度变动明细记录列表
+
+        /// <summary>
+        /// 根据条件查询运营中心额度变动明细记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(AmountRecord data, string right, int UserId = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询运营中心额度变动明细记录列表
+
+        /// <summary>
+        /// 运营中心额度变动明细记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(AmountRecord data, string MakerCode, string OpCode, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            string condition = " and Status>-1";
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                condition += " and UserId in (select UserId from SysAdmin where MakerCode='" + MakerCode + "')";
+            }
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                condition += " and UserId in (select UserId from SysAdmin where OpCode='" + OpCode + "')";
+            }
+            if (!string.IsNullOrEmpty(CreateDateData))
+            {
+                string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                // string start = datelist[0];
+                // string end = datelist[1];
+                // condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
+                var start = Convert.ToDateTime(Convert.ToDateTime(datelist[0]).ToString("yyyy-MM-dd"));
+                var end = Convert.ToDateTime(Convert.ToDateTime(datelist[1]).ToString("yyyy-MM-dd") + " 23:59:59");
+                var check = opdb.AmountRecord.Any(m => m.CreateDate >= start);
+                var checks = opdb.AmountRecord.Any(m => m.CreateDate <= end);
+                if (check)
+                {
+                    var sId = opdb.AmountRecord.Where(m => m.CreateDate >= start).Min(m => m.Id);
+                    condition += "  and Id >=" + sId;
+                }
+                if (checks)
+                {
+                    var eId = opdb.AmountRecord.Where(m => m.CreateDate <= end).Max(m => m.Id);
+                    condition += " and Id <=" + eId;
+                }
+            }
+            else
+            {
+                var start = Convert.ToDateTime(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01");
+                var check = opdb.AmountRecord.Any(m => m.CreateDate >= start);
+                if (check)
+                {
+                    var minId = opdb.AmountRecord.Where(m => m.CreateDate >= start).Min(m => m.Id);
+                    var Info = function.ReadInstance("/WritePage/AmountRecordOperate/AmountRecordOperate.txt");
+                    if (string.IsNullOrEmpty(Info.ToString()))
+                    {
+                        function.WritePage("/WritePage/AmountRecordOperate/", "AmountRecordOperate.txt", minId.ToString());
+                        condition += " and Id >=" + minId;
+                    }
+                    else
+                    {
+                        condition += " and Id >=" + Convert.ToInt32(Info);
+                    }
+                }
+                else
+                {
+                    condition += " and Id =0";
+                }
+            }
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("AmountRecord", 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(dic["UserId"].ToString());
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new SysAdmin();
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["MakerName"] = sysAdmin.MakerName;
+                int OperateType = int.Parse(dic["OperateType"].ToString());
+                dic["OperateTypeName"] = "";
+                if (OperateType == 1) dic["OperateTypeName"] = "收入";
+                if (OperateType == 2) dic["OperateTypeName"] = "支出";
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+    }
+}

BIN
Areas/Admin/Views/.DS_Store


+ 2 - 2
Areas/Admin/Views/Home/Login.cshtml

@@ -26,11 +26,11 @@
                     <label for="password">密码 / Password</label>
                     <input class="form-input" type="password" name="Pwd" id="Pwd" onKeyUp="if(event.keyCode==13){$('#CheckCode').focus();}" placeholder="请填写密码">
                 </div>
-                <div class="form-group pb10">
+                @* <div class="form-group pb10">
                     <label for="password">验证码 / Verification</label>
                     <input class="form-input" type="text" name="CheckCode" id="CheckCode" onkeyup="if(event.keyCode==13){syslogin();}" placeholder="请填写验证码" style="width: 70%; display: inline-block; margin-right: 2%">
                     <img src="/Api/PublicMethod/CheckCode" onclick="$(this).attr('src','/Api/PublicMethod/CheckCode?r='+Math.random())" style="width: 26%; height:38px;" />
-                </div>
+                </div> *@
                 @*<div class="form-group pb10 cf">
                         <label class="remembermetext fl" for="rememberme">
                             <input type="checkbox" checked name="rememberme">&nbsp;记住我的登录

BIN
Areas/Admin/Views/MainServer/.DS_Store


+ 1 - 1
Areas/Admin/Views/MainServer/StoreHouseAmountRecord/Indexs.cshtml

@@ -8,7 +8,7 @@
 
 <head>
     <meta charset="utf-8">
-    <title>分仓机具额度记录</title>
+    <title>银行卡临额提现</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="viewport"

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

@@ -43,13 +43,13 @@
                                             autocomplete="off" placeholder="请输入机具SN">
                                     </div>
                                 </div>
-                                <div class="layui-form-item">
+                                @* <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" autocomplete="off" placeholder="请输入商户编号">
                                     </div>
-                                </div>
+                                </div> *@
                                 <div class="layui-form-item">
                                     <label class="layui-form-label">补激活奖励</label>
                                     <div class="layui-input-block">
@@ -57,13 +57,13 @@
                                             lay-skin="switch" lay-filter="switchTest" title="开关">
                                     </div>
                                 </div>
-                                <div class="layui-form-item">
+                                @* <div class="layui-form-item">
                                     <label class="layui-form-label">是否预发机</label>
                                     <div class="layui-input-block">
                                         <input type="checkbox" id="IsPre" name="IsPre" value="1"
                                             lay-skin="switch" lay-filter="switchTest" title="开关">
                                     </div>
-                                </div>
+                                </div> *@
                                 <div class="layui-form-item">
                                     <label class="layui-form-label">是否推送消息</label>
                                     <div class="layui-input-block">

+ 229 - 0
Areas/Admin/Views/MainServer/SysTools/SeeMerchantTradeDetail.cshtml

@@ -0,0 +1,229 @@
+@{
+    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">
+        <form class="layui-form" id="confirmFrm">
+            <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">机具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>
+
+                        </div>
+                    </div>
+                    <div class="layui-form-item ml10">
+                        <div class="layui-input-block">
+                            <button type="button" class="layui-btn" onclick="save()">查询</button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </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>
+        function save() {
+            var index = layer.load(1, {
+                shade: [0.5, '#000']
+            });
+            var userdata = $("#confirmFrm").serialize();
+            $.ajax({
+                type: "POST",
+                url: "/Admin/SysTools/SeeMerchantTradeDetailDo?r=" + Math.random(1),
+                data: userdata,
+                dataType: "text",
+                success: function (data) {
+                    layer.close(index);
+                    layer.alert(data.replace(/\n/g, '<br />'), {area:['500px','550px']});
+                }
+            });
+        }
+        
+                    
+        //编辑器
+        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>

+ 16 - 3
Areas/Admin/Views/MainServer/SysTools/TransferPos.cshtml

@@ -30,11 +30,18 @@
                         </ul>
                         <div class="layui-tab-content mt20">
                             <div class="layui-tab-item layui-show">
-                                <div class="layui-form-item">
+                                @* <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">
+                                    <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">机具SN</label>
+                                    <div class="layui-input-block">
+                                        <textarea class="layui-textarea" lay-verify="required|" name="PosSn" id="PosSn"
+                                            placeholder="请输入机具SN,多个机具SN用回车隔开"></textarea>
                                     </div>
                                 </div>
                                 <div class="layui-form-item">
@@ -105,6 +112,12 @@
                                 }, function () {
                                     window.location.reload();
                                 });
+                            } else if (data.indexOf("Warning") == 0) {
+                                var datalist = data.split('|');
+                                layer.close(indexs); //关闭弹层
+                                layer.alert(datalist[1], { time: 20000 }, function () {
+                                    window.location.reload();
+                                });
                             } else {
                                 layer.close(indexs); //关闭弹层
                                 layer.msg(data);

+ 78 - 68
Areas/Admin/Views/MainServer/ToChargeBackRecord/Add.cshtml

@@ -1,82 +1,91 @@
 @{
     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>
 </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="ChargeAmount" name="ChargeAmount" maxlength="20" lay-verify="required|" autocomplete="off" placeholder="请输入待扣金额">
-</div>
-</div>
-<div class="layui-form-item">
-<label class="layui-form-label">待扣类型</label>
-<div class="layui-input-inline">
-<select id="ChargeType" name="ChargeType" lay-search="">
-<option value="">请选择</option>
-<option value="1">过期机具扣款</option>
-<option value="2">人工预扣</option>
-</select>
-</div>
-</div>
-<div class="layui-form-item layui-form-text">
-<label class="layui-form-label">备注</label>
-<div class="layui-input-block">
-<textarea class="layui-textarea" id="Remark" name="Remark" maxlength="500" lay-verify="" placeholder="请输入备注"></textarea>
-</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="Field1" name="Field1" maxlength="200" lay-verify="" autocomplete="off" placeholder="请输入备用字段">
-</div>
-</div>
-
-</div>
+            <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="ChargeAmount" name="ChargeAmount"
+                                        maxlength="20" lay-verify="required|" autocomplete="off" placeholder="请输入待扣金额">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">待扣类型</label>
+                                <div class="layui-input-inline">
+                                    <select id="ChargeType" name="ChargeType" lay-search="">
+                                        <option value="">请选择</option>
+                                        <option value="1">过期机具扣款</option>
+                                        <option value="2">人工预扣</option>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="layui-form-item layui-form-text">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <textarea class="layui-textarea" id="Remark" name="Remark" maxlength="500"
+                                        lay-verify="" placeholder="请输入备注"></textarea>
+                                </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="Field1" name="Field1" maxlength="200"
+                                        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 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>
 
@@ -85,11 +94,11 @@
     <script src="/other/mybjq/kindeditor-min.js"></script>
     <script src="/other/mybjq/lang/zh_CN.js"></script>
     <script>
-        
-                    
+
+
         //编辑器
         KindEditor.ready(function (K) {
-            
+
         });
 
         var ids = "";
@@ -195,7 +204,7 @@
             });
         }
 
-        
+
         var tree;
         var element;
         var upload;
@@ -215,30 +224,31 @@
             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>

+ 69 - 70
Areas/Admin/Views/MainServer/ToChargeBackRecord/Edit.cshtml

@@ -1,87 +1,85 @@
 @using MySystem.Models;
-@{ToChargeBackRecord editData = ViewBag.data as ToChargeBackRecord;}
+@{
+    ToChargeBackRecord editData = ViewBag.data as ToChargeBackRecord;
+}
 @{
     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>
 </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="ChargeAmount" name="ChargeAmount" value="@editData.ChargeAmount" maxlength="20" lay-verify="required|" autocomplete="off" placeholder="请输入待扣金额">
-</div>
-</div>
-<div class="layui-form-item">
-<label class="layui-form-label">待扣类型</label>
-<div class="layui-input-inline">
-<select id="ChargeType" name="ChargeType" lay-search="">
-<option value="">请选择</option>
-<option value="1">过期机具扣款</option>
-<option value="2">人工预扣</option>
-</select>
-<script>$("#ChargeType").val("@editData.ChargeType");</script>
-</div>
-</div>
-<div class="layui-form-item layui-form-text">
-<label class="layui-form-label">备注</label>
-<div class="layui-input-block">
-<textarea class="layui-textarea" id="Remark" name="Remark" maxlength="500" lay-verify="" placeholder="请输入备注">@editData.Remark</textarea>
-</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="Field1" name="Field1" value="@editData.Field1" maxlength="200" lay-verify="" autocomplete="off" placeholder="请输入备用字段">
-</div>
-</div>
-
-</div>
+            <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="ChargeAmount" name="ChargeAmount" readonly
+                                        value="@ViewBag.MakerCode" maxlength="20" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入待扣金额">
+                                </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="ChargeAmount" name="ChargeAmount"
+                                        value="@editData.ChargeAmount" maxlength="20" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入待扣金额">
+                                </div>
+                            </div>
+                            @* <div class="layui-form-item">
+                                <label class="layui-form-label">待扣类型</label>
+                                <div class="layui-input-inline">
+                                    <select id="ChargeType" name="ChargeType" lay-search="" readonly>
+                                        <option value="">请选择</option>
+                                        <option value="124">过期机具扣款</option>
+                                        <option value="1">普通预扣</option>
+                                        <option value="2">分期扣款</option>
+                                    </select>
+                                    <script>$("#ChargeType").val("@editData.ChargeType");</script>
+                                </div>
+                            </div> *@
+                            <div class="layui-form-item layui-form-text">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <textarea class="layui-textarea" id="SeoDescription" name="SeoDescription" maxlength="500"
+                                        lay-verify="" placeholder="请输入备注">@editData.SeoDescription</textarea>
+                                </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>
 
@@ -90,11 +88,11 @@
     <script src="/other/mybjq/kindeditor-min.js"></script>
     <script src="/other/mybjq/lang/zh_CN.js"></script>
     <script>
-        
-        
+
+
         //编辑器
         KindEditor.ready(function (K) {
-            
+
         });
 
         var ids = "";
@@ -219,30 +217,31 @@
             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>

+ 27 - 10
Areas/Admin/Views/MainServer/ToChargeBackRecord/Index.cshtml

@@ -70,17 +70,20 @@
                                 <option value="">全部...</option>
                                 <option value="0">待扣款</option>
                                 <option value="1">已扣款</option>
+                                <option value="3">暂停扣款</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="ChargeTypeSelect" name="ChargeTypeSelect" lay-search="">
                                 <option value="">全部...</option>
                                 <option value="124">过期机具扣款</option>
-                                @* <option value="2">人工预扣</option> *@
+                                <option value="1">创客预扣款</option>
+                                <option value="2">分期预扣款</option>
                             </select>
                         </div>
                     </div>
@@ -115,30 +118,43 @@
                     }
                     @if (RightInfo.Contains("," + right + "_import,"))
                     {
-                        <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="ChargeImport"><i
+                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>导入预扣信息</button>
+
+                        @* <button class="layui-btn" data-type="ImportData"><i
+                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>机具扣款退还</button> *@
                     }
                     @* @if (RightInfo.Contains("," + right + "_import,"))
-                    {
+                        {
                         <button class="layui-btn" data-type="ImportDatas"><i
-                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>机具回收确认退还</button>
-                    } *@
+                        class="layui-icon layui-icon-upload 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,"))
                     {
+                        @("{{#if (d.ChargeType != 2){ }}")
                         <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,"))
                     {
+                        @("{{#if (d.Status == 0 || d.Status == 3){ }}")
                         <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,"))
+                    @if (RightInfo.Contains("," + right + "_BreakOrStart,"))
                     {
-
+                        @("{{#if (d.Status == 0){ }}")
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="Break"><i class="layui-icon layui-icon-edit"></i>暂停扣款</a>
+                        @("{{#} }}")
+                        @("{{#if (d.Status == 3){ }}")
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="Start"><i class="layui-icon layui-icon-edit"></i>恢复扣款</a>
+                        @("{{#} }}")
                     }
+
                 </script>
             </div>
         </div>
@@ -163,13 +179,14 @@
         </div>
         <div class="layui-form-item ml10">
             <div class="layui-input-block">
-                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+                <button type="button" class="layui-btn" onclick="ConfirmChargeImport()">立即导入</button>
             </div>
         </div>
     </div>
 
     <script src="/layuiadmin/layui/layui.js"></script>
-    <script src="/layuiadmin/modules_main/ToChargeBackRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script
+        src="/layuiadmin/modules_main/ToChargeBackRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
     <script>
 
     </script>

+ 243 - 0
Areas/Admin/Views/MainServer/ToChargeBackRecordSub/Add.cshtml

@@ -0,0 +1,243 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string ParentId = ViewBag.ParentId 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="ParentId" value="@ParentId" />
+
+        <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="ChargeAmount" name="ChargeAmount"
+                                        maxlength="20" lay-verify="required|" autocomplete="off" placeholder="请输入待扣金额">
+                                </div>
+                            </div>
+                            <div class="layui-form-item layui-form-text">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <textarea class="layui-textarea" id="Remark" name="Remark" maxlength="500"
+                                        lay-verify="" placeholder="请输入备注"></textarea>
+                                </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="StartDate" name="StartDate" lay-verify=""
+                                        autocomplete="off" placeholder="请输入扣款开始时间">
+                                </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="TimeNumber" name="TimeNumber"
+                                        maxlength="20" 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');
+            });
+
+            //日期
+            laydate.render({
+                elem: '#StartDate',
+                type: 'datetime',
+                trigger: 'click'
+            });
+
+
+            //上传文件
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

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

@@ -0,0 +1,250 @@
+@using MySystem.Models;
+@{
+    ToChargeBackRecordSub editData = ViewBag.data as ToChargeBackRecordSub;
+}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string ParentId = ViewBag.ParentId 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" />
+        <input type="hidden" name="ParentId" value="@ParentId" />
+
+        <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="ChargeAmount" name="ChargeAmount"
+                                        value="@editData.ChargeAmount" maxlength="20" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入待扣金额">
+                                </div>
+                            </div>
+                            <div class="layui-form-item layui-form-text">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <textarea class="layui-textarea" id="Remark" name="Remark" maxlength="500"
+                                        lay-verify="" placeholder="请输入备注">@editData.Remark</textarea>
+                                </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="StartDate" name="StartDate" readonly
+                                        value="@(editData.StartDate == null ? "" : editData.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss"))"
+                                        lay-verify="" autocomplete="off" placeholder="请输入扣款开始时间">
+                                </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="TimeNumber" name="TimeNumber"
+                                        value="@editData.TimeNumber" maxlength="20" lay-verify="" autocomplete="off" readonly
+                                        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');
+            });
+
+            //日期
+            laydate.render({
+                elem: '#StartDate',
+                type: 'datetime',
+                trigger: 'click'
+            });
+
+
+            //上传文件
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 159 - 0
Areas/Admin/Views/MainServer/ToChargeBackRecordSub/Index.cshtml

@@ -0,0 +1,159 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string ParentId = ViewBag.ParentId 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="OrderNo" 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="CreateDateData" id="CreateDate"
+                                placeholder="" autocomplete="off">
+                        </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="2">扣款中</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 + "_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,"))
+                    {
+                        @("{{#if ( d.Status == 0){ }}")
+                        <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,"))
+                    {
+                        @("{{#if ( d.Status == 0){ }}")
+                        <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/ToChargeBackRecordSub_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        var ParentId = '@ParentId';
+
+    </script>
+</body>
+
+</html>

+ 390 - 0
Areas/Admin/Views/MainServer/ToChargeByStage/Add.cshtml

@@ -0,0 +1,390 @@
+@{
+    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="MakerCode" name="MakerCode"
+                                        maxlength="20" lay-verify="" autocomplete="off" placeholder="请输入创客编号">
+                                </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="MakerName" name="MakerName"
+                                        maxlength="20" lay-verify="" autocomplete="off" placeholder="请输入创客姓名">
+                                </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="ChargeAmount" name="ChargeAmount"
+                                maxlength="20" lay-verify="required|" autocomplete="off" placeholder="请输入待扣金额">
+                                </div>
+                                </div> *@
+                            <div class="layui-form-item layui-form-text">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <textarea class="layui-textarea" id="Remark" name="Remark" maxlength="500"
+                                        lay-verify="" placeholder="请输入备注"></textarea>
+                                </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="StartDate" name="StartDate" lay-verify=""
+                                        autocomplete="off" placeholder="请输入扣款开始时间">
+                                </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="TotalAmount" name="TotalAmount"
+                                        oninput="OnInput()" maxlength="20" lay-verify="" autocomplete="off"
+                                        placeholder="请输入扣款总金额">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">期数</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="number" id="TimeNumber" name="TimeNumber"
+                                        onkeyup="CheckTimeNumber(this)" maxlength="50" lay-verify="" autocomplete="off"
+                                        placeholder="请输入期数">
+                                </div>
+                            </div>
+                            <div id="SubList">
+                            </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>
+
+        function ChangeInfo() {
+            var userdata = $("#confirmFrm").serialize();
+            $.ajax({
+                type: "POST",
+                url: "/Admin/ToChargeBackRecord/ChangeInfoDo?r=" + Math.random(1),
+                data: "userdata",
+                dataType: "text",
+                success: function (data) {
+                    layer.close(index);
+                    layer.alert(data.replace(/\n/g, '<br />'), { area: ['700px', '750px'] });
+                }
+            });
+        }
+
+        function OnInput() {
+            @* $('#TimeNumber').val(''); *@
+            $("#SubList").html("");
+            var totalAmount = $('#TotalAmount').val();//扣款总金额
+            count = $('#TimeNumber').val();
+            if (count > 12) {
+                layer.msg('最多可分12期');
+                obj.value = '';
+                $("#SubList").html("");
+                return;
+            }
+            chargeAmount = (totalAmount / count).toFixed(2);
+            leave = (totalAmount - (chargeAmount * count)).toFixed(2);
+            leaveAmount = ((chargeAmount * 100 + leave * 100) / 100).toFixed(2);
+            num = 0;
+            nums = 0;
+            var html = '';
+            for (var i = 0; i < count; i++) {
+                num = num + 1;
+                numInfo = "第" + num + "期";
+                html += '<div class="layui-form-item">' +
+                    '<label class="layui-form-label"> ' + numInfo + '</label >' +
+                    '<div class="layui-input-inline">' +
+                    '<input class="layui-input" type="text" id="ChargeAmounts' + num + '" name="ChargeAmounts" maxlength="50" lay-verify="" autocomplete="off" placeholder="" readonly>' +
+                    '</div>' +
+                    '<label class="layui-form-label">扣款开始时间</label>' +
+                    '<div class="layui-input-inline"><input class="layui-input" type="text" id="StartDates' + num + '" name="StartDates"lay-verify="" autocomplete="off" placeholder="请输入扣款开始时间"></div>' +
+                    '</div >';
+            }
+            $('#SubList').html(html);
+            for (var i = 0; i < count; i++) {
+                nums = nums + 1;
+                if (nums < count) {
+                    $('#ChargeAmounts' + nums).val(chargeAmount);
+                }
+                else {
+                    $('#ChargeAmounts' + nums).val(leaveAmount);
+                }
+                var time = $('#StartDate').val() + '-20 00:00:00';
+
+                var dateTime = new Date(time);
+                dateTime = dateTime.setMonth(dateTime.getMonth() + nums - 1);
+                dateTime = new Date(dateTime);
+
+                laydate.render({
+                    elem: '#StartDates' + nums,
+                    type: 'datetime',
+                    trigger: 'click',
+                    value: dateTime
+                });
+            }
+            form.render();
+        }
+
+        function CheckTimeNumber(obj) {
+            var totalAmount = $('#TotalAmount').val();//扣款总金额
+            count = obj.value;
+            if (count > 12) {
+                layer.msg('最多可分12期');
+                obj.value = '';
+                $("#SubList").html("");
+                return;
+            }
+            chargeAmount = (totalAmount / count).toFixed(2);
+            leave = (totalAmount - (chargeAmount * count)).toFixed(2);
+            leaveAmount = ((chargeAmount * 100 + leave * 100) / 100).toFixed(2);
+            console.log(chargeAmount);
+            console.log(leave);
+            console.log(leaveAmount);
+            num = 0;
+            nums = 0;
+            var html = '';
+            for (var i = 0; i < count; i++) {
+                num = num + 1;
+                numInfo = "第" + num + "期";
+                html += '<div class="layui-form-item">' +
+                    '<label class="layui-form-label"> ' + numInfo + '</label >' +
+                    '<div class="layui-input-inline">' +
+                    '<input class="layui-input" type="text" id="ChargeAmounts' + num + '" name="ChargeAmounts" maxlength="50" lay-verify="" autocomplete="off" placeholder="" readonly>' +
+                    '</div>' +
+                    '<label class="layui-form-label">扣款开始时间</label>' +
+                    '<div class="layui-input-inline"><input class="layui-input" type="text" id="StartDates' + num + '" name="StartDates"lay-verify="" autocomplete="off" placeholder="请输入扣款开始时间"></div>' +
+                    '</div >';
+            }
+            $('#SubList').html(html);
+            for (var i = 0; i < count; i++) {
+                nums = nums + 1;
+                if (nums < count) {
+                    $('#ChargeAmounts' + nums).val(chargeAmount);
+                }
+                else {
+                    $('#ChargeAmounts' + nums).val(leaveAmount);
+                }
+                var time = $('#StartDate').val() + '-20 00:00:00';
+
+                var dateTime = new Date(time);
+                dateTime = dateTime.setMonth(dateTime.getMonth() + nums - 1);
+                dateTime = new Date(dateTime);
+
+                laydate.render({
+                    elem: '#StartDates' + nums,
+                    type: 'datetime',
+                    trigger: 'click',
+                    value: dateTime
+                });
+            }
+            form.render();
+        }
+
+
+        //编辑器
+        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;
+        var laydate;
+        var form;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            form = layui.form;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+            laydate = layui.laydate;
+
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+
+            //日期
+            laydate.render({
+                elem: '#StartDate',
+                type: 'month',
+                trigger: 'click'
+            });
+
+
+            //上传文件
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 264 - 0
Areas/Admin/Views/MainServer/ToChargeByStage/Edit.cshtml

@@ -0,0 +1,264 @@
+@using MySystem.Models;
+@{
+    ToChargeByStage editData = ViewBag.data as ToChargeByStage;
+}
+@{
+    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="UserId" name="UserId"
+                                        value="@editData.UserId" maxlength="20" lay-verify="" autocomplete="off" readonly
+                                        placeholder="请输入创客">
+                                </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="ChargeAmount" name="ChargeAmount" readonly
+                                        value="@editData.ChargeAmount" maxlength="20" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入已扣金额">
+                                </div>
+                            </div>
+                            <div class="layui-form-item layui-form-text">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <textarea class="layui-textarea" id="Remark" name="Remark" maxlength="500"
+                                        lay-verify="" placeholder="请输入备注">@editData.Remark</textarea>
+                                </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="StartDate" name="StartDate"
+                                        value="@(editData.StartDate == null ? "" : editData.StartDate.Value.ToString("yyyy-MM-dd HH:mm:ss"))"
+                                        lay-verify="" autocomplete="off" placeholder="请输入扣款开始时间">
+                                </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="TimeNumber" name="TimeNumber"
+                                        value="@editData.TimeNumber" maxlength="20" lay-verify="" autocomplete="off" readonly
+                                        placeholder="请输入期数">
+                                </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="TotalAmount" name="TotalAmount"
+                                        value="@editData.TotalAmount" maxlength="20" lay-verify="" autocomplete="off" readonly
+                                        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');
+            });
+
+            //日期
+            laydate.render({
+                elem: '#StartDate',
+                type: 'datetime',
+                trigger: 'click'
+            });
+
+
+            //上传文件
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 172 - 0
Areas/Admin/Views/MainServer/ToChargeByStage/Index.cshtml

@@ -0,0 +1,172 @@
+@{
+    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 w100">
+                            <input class="layui-input" type="text" name="sUserId" id="sUserId" placeholder=""
+                                autocomplete="off">
+                        </div>
+                        <div class="layui-form-mid">-</div>
+                        <div class="layui-input-inline w100">
+                            <input class="layui-input" type="text" name="eUserId" id="eUserId" 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="MakerCode" 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="SeoTitle" placeholder="" autocomplete="off">
+                        </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="2">扣款中</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="CreateDateData" id="CreateDate"
+                                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,"))
+                    {
+                        @("{{#if (d.QueryCount == 0){ }}")
+                        <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,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-href="/Admin/ToChargeBackRecordSub/Index?right=@right&ParentId=@("{{d.Id}}")">待扣款明细</a>
+                    }
+                </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/ToChargeByStage_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 131 - 0
Areas/Admin/Views/MainServer/Users/CancleUsers.cshtml

@@ -0,0 +1,131 @@
+@using MySystem.Models;
+@{
+    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-form-item">
+                        <div class="layui-inline">
+                            <label class="layui-form-label">创客编号</label>
+                            <div class="layui-input-inline">
+                                <input class="layui-input" type="text" name="MakerCode" value="" 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="RealName" 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="Mobile" 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="CertId" 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" autocomplete="off">
+                            </div>
+                        </div>
+                        <div class="layui-inline">
+                            <label class="layui-form-label">实名状态</label>
+                            <div class="layui-input-inline">
+                                <select id="AuthFlagSelect" name="AuthFlagSelect" lay-search="">
+                                    <option value="">全部...</option>
+                                    <option value="0">未实名</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>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+            </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/UsersCancle_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+    </script>
+</body>
+</html>

+ 88 - 0
Areas/Admin/Views/OperateServer/AmountRecordOperate/Index.cshtml

@@ -0,0 +1,88 @@
+@using MySystem.Models;
+@{
+    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="OpCode" 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="MakerCode" 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 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>
+                        } *@
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                </script>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_operate/AmountRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+    </script>
+</body>
+</html>

+ 1 - 0
Config/MysqlConn.cs

@@ -8,6 +8,7 @@ namespace MySystem
     public class MysqlConn
     {
         public static string connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+        public static string SqlConnStr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
 
     }
 }

+ 4 - 0
Startup.cs

@@ -141,6 +141,10 @@ namespace MySystem
             ExcelHelper.Instance.Start();
             OpExcelHelper.Instance.Start();
             SycnUserMachineCountHelper.Instance.Start(); //重置创客机具数量
+
+
+            // InstallmentDeductionService.Instance.Start();//每月20号执行分期扣费
+            // TimeOutPosChargeService.Instance.StartDoChargeAmount();//每天执行预扣款
         }
 
 

BIN
wwwroot/.DS_Store


BIN
wwwroot/layuiadmin/.DS_Store


+ 1 - 1
wwwroot/layuiadmin/modules_main/PosMerchantInforgList_Admin.js

@@ -125,7 +125,7 @@ layui.config({
             , { field: 'MerchantMobile', width: 200, title: '手机号', sort: true }
             , { field: 'KqSnNo', width: 220, title: '机具SN号', sort: true }
             , { field: 'SeoKeyword', width: 220, title: '实际押金', sort: true }
-            , { field: 'PrizeParams', width: 220, title: '设置押金', sort: true }
+            // , { field: 'PrizeParams', width: 220, title: '设置押金', sort: true }
             , { field: 'Remark', width: 220, title: '已退金额', sort: true }
         ]]
         , where: {

+ 1 - 1
wwwroot/layuiadmin/modules_main/StoreHouseCardAmountRecord_Admin.js

@@ -99,7 +99,7 @@ layui.config({
             , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
             , { field: 'Status', width: 200, title: '状态', sort: true }
             , { field: 'UserIdRealName', width: 200, title: '创客真实姓名', sort: true }
-            , { field: 'UserIdMakerCode', width: 200, title: '创客创客编号', sort: true }
+            , { field: 'UserIdMakerCode', width: 200, title: '创客编号', sort: true }
             , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
             , { field: 'UseAmount', width: 200, title: '申请提现临额', sort: true }
             , { field: 'CertId', width: 200, title: '身份证号', sort: true }

+ 409 - 0
wwwroot/layuiadmin/modules_main/ToChargeBackRecordSub_Admin.js

@@ -0,0 +1,409 @@
+var ExcelData, ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/ToChargeBackRecordSub/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: '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;
+    $('#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/ToChargeBackRecordSub/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/ToChargeBackRecordSub/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
+            , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
+            , { field: 'ChargeAmount', width: 200, title: '待扣金额', sort: true }
+            , { field: 'StartDate', width: 200, title: '扣款开始时间', sort: true }
+            , { field: 'TimeNumber', width: 200, title: '期数', sort: true }
+            , { field: 'OrderNo', width: 200, title: '分期单号', sort: true }
+            , { field: 'StatusName', width: 200, title: '状态', sort: true }
+
+            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+        ]]
+        , where: {
+            ParentId: ParentId
+        }
+        , 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/ToChargeBackRecordSub/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 + '&ParentId=' + ParentId + ''
+                , 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/ToChargeBackRecordSub/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/ToChargeBackRecordSub/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?ParentId=' + ParentId + ''
+                , 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/ToChargeBackRecordSub/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/ToChargeBackRecordSub/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/ToChargeBackRecordSub/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/ToChargeBackRecordSub/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) : '';
+    });
+});

+ 83 - 8
wwwroot/layuiadmin/modules_main/ToChargeBackRecord_Admin.js

@@ -1,4 +1,29 @@
 var ExcelData, ExcelKind;
+//导入预扣信息
+function ConfirmChargeImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/ToChargeBackRecord/ChargeImport?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('|');
+                console.log(datalist);
+                layer.alert(datalist[1], { time: 20000 }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
 //机具扣款退还
 function ConfirmImport() {
     $.ajax({
@@ -95,7 +120,7 @@ layui.config({
     $('#ExcelFile').change(function (e) {
         var files = e.target.files;
         excel.importExcel(files, {}, function (data) {
-            ExcelData = data[0].sheet1;
+            ExcelData = data[0].Sheet1;
         });
     });
 
@@ -123,16 +148,19 @@ layui.config({
         , cols: [[
             { type: 'checkbox', fixed: 'left' }
             , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
-            , { field: 'UserIdMakerCode', width: 200, title: '创客创客编号', sort: true }
+            , { field: 'UserIdMakerCode', width: 200, title: '创客编号', sort: true }
             , { field: 'UserIdRealName', width: 200, title: '创客真实姓名', sort: true }
+            , { field: 'UserIdMobile', width: 200, title: '手机号', sort: true }
             , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
-            , { field: 'ChargeAmount', width: 200, title: '待扣金额', sort: true }
-            , { field: 'ChargeType', width: 200, title: '待扣类型', sort: true }
-            , { field: 'Status', width: 200, title: '扣款状态', sort: true }
+            , { field: 'ChargeAmount', width: 200, title: '扣款金额', sort: true }
+            , { field: 'ChargeTypeName', width: 200, title: '扣款类型', sort: true }
+            , { field: 'UpdateDate', width: 200, title: '扣款时间', sort: true }
+            , { field: 'StatusName', width: 200, title: '扣款状态', sort: true }
             , { field: 'Remark', width: 200, title: '机具Sn', sort: true }
+            , { field: 'SeoDescription', width: 200, title: '备注', sort: true }
+            , { field: 'SeoTitle', width: 200, title: '操作人', sort: true }
 
-            , { field: 'Sort', fixed: 'right', title: '排序', width: 80, edit: 'text' }
-            , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
+            , { title: '操作', width: 400, align: 'center', fixed: 'right', toolbar: '#table-list-tools' }
         ]]
         , where: {
 
@@ -166,7 +194,41 @@ layui.config({
                     }
                 });
             });
-        } else if (obj.event === 'edit') {
+        }else if (obj.event === 'Break') {
+            var index = layer.confirm('确定要暂停扣款吗?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/ToChargeBackRecord/Break?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            layer.close(index);
+                            table.reload('LAY-list-manage'); //数据刷新
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        }else if (obj.event === 'Start') {
+            var index = layer.confirm('确定要恢复扣款吗?', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/ToChargeBackRecord/Start?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            layer.close(index);
+                            table.reload('LAY-list-manage'); //数据刷新
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        }else if (obj.event === 'edit') {
             var tr = $(obj.tr);
             var perContent = layer.open({
                 type: 2
@@ -343,6 +405,19 @@ layui.config({
             });
             layer.full(perContent);
         }
+        , ChargeImport: function () {
+            ExcelKind = 1;
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '280px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+            $("#excelTemp").html('<a href="/users/预扣款模版.xlsx">点击下载预扣款模版文件</a>');
+        }
         , ImportData: function () {
             ExcelKind = 1;
             layer.open({

+ 436 - 0
wwwroot/layuiadmin/modules_main/ToChargeByStage_Admin.js

@@ -0,0 +1,436 @@
+var ExcelData, ExcelKind;
+var clickflag = 0;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/ToChargeByStage/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: '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;
+    $('#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/ToChargeByStage/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/ToChargeByStage/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true }
+            , { field: 'CreateDate', width: 200, title: '创建时间', sort: true }
+            , { field: 'StatusName', width: 200, title: '扣款状态', sort: true }
+            , { field: 'MakerCode', width: 200, title: '创客编号', sort: true }
+            , { field: 'MakerName', width: 200, title: '创客姓名', sort: true }
+            , { field: 'MakerMobile', width: 200, title: '创客手机号', sort: true }
+            , { field: 'TimeNumber', width: 200, title: '期数', sort: true }
+            , { field: 'TotalAmount', width: 200, title: '扣款总金额', sort: true }
+            , { field: 'ChargeAmount', width: 200, title: '已扣金额', sort: true }
+            , { field: 'StartDate', width: 200, title: '扣款开始时间', sort: true }
+            , { field: 'Remark', width: 200, title: '备注', sort: true }
+            , { field: 'SeoKeyword', width: 200, title: '分期单号', sort: true }
+            , { field: 'SeoTitle', width: 200, title: '操作人', sort: true }
+
+            , { title: '操作', width: 300, 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/ToChargeByStage/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/ToChargeByStage/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/ToChargeByStage/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);
+                    var times = layero.find('iframe').contents().find('input[type=number][name=TimeNumber]').val();
+                    var ChargeAmounts = '';
+                    var StartDates = '';
+                    var num = 0;
+                    for (var i = 0; i < times; i++) {
+                        num += 1;
+                        ChargeAmounts += layero.find('iframe').contents().find('#ChargeAmounts' + num).val() + ',';
+                        StartDates += layero.find('iframe').contents().find('#StartDates' + num).val() + ',';
+                        // layero.find('iframe').contents().find('#ChargeAmounts' + num).each(function (i) {
+                        //     ChargeAmounts += $(this).val() + ','
+                        // });
+                        // layero.find('iframe').contents().find('#StartDates' + num).each(function (i) {
+                        //     StartDates += $(this).val() + ','
+                        // });
+                    }
+                    console.log(times);
+                    console.log(ChargeAmounts);
+                    console.log(StartDates);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        if (clickflag == 0) {
+                            clickflag = 1;
+                            var field = data.field; //获取提交的字段
+                            field.ChargeAmounts = ChargeAmounts;
+                            field.StartDates = StartDates;
+                            var userdata = "";
+                            for (var prop in field) {
+                                userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                            }
+                            userdata += "StartDates=" + encodeURIComponent(StartDates) + "&ChargeAmounts=" + encodeURIComponent(ChargeAmounts) + "&";
+                            //提交 Ajax 成功后,静态更新表格中的数据
+                            //$.ajax({});
+
+                            $.ajax({
+                                type: "POST",
+                                url: "/Admin/ToChargeByStage/Add?r=" + Math.random(1),
+                                data: userdata,
+                                dataType: "text",
+                                success: function (data) {
+                                    clickflag = 0;
+                                    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/ToChargeByStage/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/ToChargeByStage/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/ToChargeByStage/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) : '';
+    });
+});

+ 307 - 0
wwwroot/layuiadmin/modules_main/UsersCancle_Admin.js

@@ -0,0 +1,307 @@
+var ExcelData, ExcelKind;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/Users/Import?r=" + Math.random(1),
+        data: "Kind=" + ExcelKind + "&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);
+            }
+        }
+    });
+}
+
+
+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: '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导入
+    var 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/Users/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/Users/CancleUsersData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'Id', width: 100, title: 'ID', sort: true }
+            , { field: 'MakerCode', width: 200, title: '创客编号', sort: true, templet: '#MakerCodeTpl' }
+            , { field: 'RealName', width: 200, title: '创客姓名', sort: true }
+            , { field: 'UserLevel', width: 200, title: '创客等级', sort: true }
+            , { field: 'AgentAreas', width: 200, title: '展业地区', sort: true }
+            , { field: 'SettleAmount', width: 200, title: '提现金额(元)', sort: true }
+            , { field: 'FreezeAmount', width: 200, title: '冻结金额(元)', sort: true }
+            , { field: 'CertId', width: 200, title: '身份证号', sort: true }
+            , { field: 'Mobile', width: 200, title: '联系手机', sort: true }
+            , { field: 'MerchantType', width: 200, title: '商户创客类型', sort: true }
+            , { field: 'MerchantDate', width: 200, title: '成为商户创客时间', sort: true }
+            , { field: 'ParentMakerCode', width: 200, title: '直属创客编号', sort: true }
+            , { field: 'ParentRealName', width: 200, title: '直属创客名称', sort: true }
+            , { field: 'TopMakerCode', width: 200, title: '顶级创客编号', sort: true }
+            , { field: 'TopRealName', width: 200, title: '顶级创客名称', sort: true }
+            , { field: 'AuthFlagName', width: 200, title: '实名状态', sort: true }
+            , { field: 'RiskFlagName', width: 200, title: '风控状态', sort: true }
+            , { field: 'CreateDate', width: 200, title: '注册时间', sort: true }
+
+        ]]
+        , where: {
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-' + String($('.layui-card-header').height() + 130)
+        , text: '对不起,加载出现异常!'
+        , done: function (res, curr, count) {
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+    });
+
+
+    //监听搜索
+    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/Users/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', '550px']
+                , 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/Users/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data == "success") {
+                                    layer.close(index); //关闭弹层
+                                    layer.msg('新增成功', { time: 1500 }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        }
+        , 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/Users/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/Users/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) : '';
+    });
+});

+ 393 - 0
wwwroot/layuiadmin/modules_operate/AmountRecord_Admin.js

@@ -0,0 +1,393 @@
+var ExcelData;
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/AmountRecordOperate/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: 'date',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 2) {
+                if (endDate.month - date.month == 2 && endDate.date > date.date) {
+                    op = false;
+                    layCreateDate.hint('日期范围请不要超过2个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过2个月');
+                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/AmountRecordOperate/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {
+                }
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage'
+        , url: '/Admin/AmountRecordOperate/IndexData' //模拟接口
+        , cols: [[
+            { type: 'checkbox', fixed: 'left' }
+            , { field: 'OpCode', width: 105, title: '运营中心编号', sort: true }
+            , { field: 'MakerCode', width: 105, title: '创客编号', sort: true }
+            , { field: 'MakerName', width: 105, title: '创客姓名', sort: true }
+            , { field: 'SeoDescription', width: 100, title: '备注', sort: true }
+            , { field: 'UseAmount', width: 110, title: '交易金额', sort: true }
+            , { field: 'BeforeAmount', width: 130, title: '交易前总金额', sort: true }
+            , { field: 'AfterAmount', width: 130, title: '交易后总金额', sort: true }
+            , { field: 'CreateDate', width: 110, title: '交易时间', sort: true }
+        ]]
+        , where: {
+        }
+        , page: true
+        , limit: 30
+        , height: 'full-' + String($('.layui-card-header').height() + 130)
+        , 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/AmountRecordOperate/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/AmountRecordOperate/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/AmountRecordOperate/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/AmountRecordOperate/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', '180px'],
+                content: $('#excelForm'),
+                cancel: function () {
+                }
+            });
+        }
+        , 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/AmountRecordOperate/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/AmountRecordOperate/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/AmountRecordOperate/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