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

Merge branch 'feature-dgy-后台辅助工具' into feature-dgy-后台测试

DuGuYang 3 лет назад
Родитель
Сommit
ee182b5ce8
100 измененных файлов с 22238 добавлено и 645 удалено
  1. 1 1
      AppStart/ExcelHelper.cs
  2. 14 14
      AppStart/Helper/SycnProfitServiceV2.cs
  3. 249 0
      AppStart/OpExcelHelper.cs
  4. 3 0
      AppStart/PublicFunction.cs
  5. 106 20
      AppStart/Redis/RedisDbconn.cs
  6. 6 0
      AppStart/RelationClassForConst.cs
  7. 5 0
      AppStart/TemplateViewLocationExpander.cs
  8. 6 0
      Areas/Admin/Controllers/BsServer/BaseController.cs
  9. 1 1
      Areas/Admin/Controllers/BsServer/MsgPersonalController.cs
  10. 114 0
      Areas/Admin/Controllers/MainServer/LeaderReserveRecordController.cs
  11. 385 0
      Areas/Admin/Controllers/MainServer/LeadersController.cs
  12. 42 10
      Areas/Admin/Controllers/MainServer/OrdersController.cs
  13. 39 1
      Areas/Admin/Controllers/MainServer/PosCouponsController.cs
  14. 12 12
      Areas/Admin/Controllers/MainServer/PosMachinesTwoChangeController.cs
  15. 38 2
      Areas/Admin/Controllers/MainServer/PosMachinesTwoController.cs
  16. 633 7
      Areas/Admin/Controllers/MainServer/StoreHouseController.cs
  17. 1 1
      Areas/Admin/Controllers/MainServer/StoreMachineApplyController.cs
  18. 392 21
      Areas/Admin/Controllers/MainServer/SysToolsController.cs
  19. 29 3
      Areas/Admin/Controllers/MainServer/TradeDaySummaryController.cs
  20. 20 2
      Areas/Admin/Controllers/MainServer/UserAccountRecordController.cs
  21. 10 1
      Areas/Admin/Controllers/MainServer/UserCashRecordController.cs
  22. 23 6
      Areas/Admin/Controllers/MainServer/UserTradeDaySummaryController.cs
  23. 165 3
      Areas/Admin/Controllers/MainServer/UsersController.cs
  24. 652 0
      Areas/Admin/Controllers/OperateServer/PosCouponsLeaderController.cs
  25. 1498 0
      Areas/Admin/Controllers/OperateServer/StoreHouseOperateController.cs
  26. 1012 0
      Areas/Admin/Controllers/OperateServer/StoreMachineApplyOperateController.cs
  27. 843 0
      Areas/Admin/Controllers/OperateServer/StoreMachineApplysOperateController.cs
  28. 696 0
      Areas/Admin/Controllers/OperateServer/SysAdminOperateController.cs
  29. 311 0
      Areas/Admin/Controllers/OperateServer/SysAdminRoleOperateController.cs
  30. 383 0
      Areas/Admin/Controllers/OperateServer/SystemSetOperateController.cs
  31. 481 0
      Areas/Admin/Controllers/OperateServer/UserAccountRecordOperateController.cs
  32. 598 0
      Areas/Admin/Controllers/OperateServer/UserCashRecordOperateController.cs
  33. 657 0
      Areas/Admin/Controllers/OperateServer/UserCashRecordOperatesController.cs
  34. 112 87
      Areas/Admin/Views/MainServer/Consumers/Edit.cshtml
  35. 148 0
      Areas/Admin/Views/MainServer/LeaderReserveRecord/Index.cshtml
  36. 257 0
      Areas/Admin/Views/MainServer/Leaders/Add.cshtml
  37. 263 0
      Areas/Admin/Views/MainServer/Leaders/Edit.cshtml
  38. 152 0
      Areas/Admin/Views/MainServer/Leaders/Index.cshtml
  39. 16 0
      Areas/Admin/Views/MainServer/PosCoupons/Index.cshtml
  40. 17 2
      Areas/Admin/Views/MainServer/PosMachinesTwo/Index.cshtml
  41. 1 2
      Areas/Admin/Views/MainServer/PosMachinesTwoChange/Index.cshtml
  42. 215 146
      Areas/Admin/Views/MainServer/StoreHouse/Add.cshtml
  43. 240 0
      Areas/Admin/Views/MainServer/StoreHouse/BatchCancle.cshtml
  44. 248 0
      Areas/Admin/Views/MainServer/StoreHouse/BatchSetting.cshtml
  45. 193 141
      Areas/Admin/Views/MainServer/StoreHouse/Edit.cshtml
  46. 206 153
      Areas/Admin/Views/MainServer/StoreHouse/Edits.cshtml
  47. 45 3
      Areas/Admin/Views/MainServer/StoreHouse/Index.cshtml
  48. 298 0
      Areas/Admin/Views/MainServer/SysTools/AuthMaker.cshtml
  49. 257 0
      Areas/Admin/Views/MainServer/SysTools/PosRewardReissued.cshtml
  50. 274 0
      Areas/Admin/Views/MainServer/SysTools/RelationPosAndMerchant.cshtml
  51. 257 0
      Areas/Admin/Views/MainServer/SysTools/RestoreStatus.cshtml
  52. 260 0
      Areas/Admin/Views/MainServer/SysTools/SetPosFee.cshtml
  53. 251 0
      Areas/Admin/Views/MainServer/SysTools/SyncMerchantStatus.cshtml
  54. 274 0
      Areas/Admin/Views/MainServer/SysTools/TransferPos.cshtml
  55. 2 1
      Areas/Admin/Views/MainServer/TradeDaySummary/Index.cshtml
  56. 1 3
      Areas/Admin/Views/MainServer/UserCashRecord/Index.cshtml
  57. 6 2
      Areas/Admin/Views/MainServer/UserTradeDaySummary/Index.cshtml
  58. 117 0
      Areas/Admin/Views/MainServer/Users/AuthIndex.cshtml
  59. 4 0
      Areas/Admin/Views/MainServer/Users/Children.cshtml
  60. 203 0
      Areas/Admin/Views/OperateServer/PosCouponsLeader/Add.cshtml
  61. 216 0
      Areas/Admin/Views/OperateServer/PosCouponsLeader/BatchCancle.cshtml
  62. 216 0
      Areas/Admin/Views/OperateServer/PosCouponsLeader/BatchSetting.cshtml
  63. 205 0
      Areas/Admin/Views/OperateServer/PosCouponsLeader/Edit.cshtml
  64. 185 0
      Areas/Admin/Views/OperateServer/PosCouponsLeader/Index.cshtml
  65. 159 0
      Areas/Admin/Views/OperateServer/PosCouponsLeader/SJQ.cshtml
  66. 356 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/Add.cshtml
  67. 216 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/BatchCancle.cshtml
  68. 216 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/BatchSetting.cshtml
  69. 342 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/Edit.cshtml
  70. 355 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/Edits.cshtml
  71. 144 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/Import.cshtml
  72. 177 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/Index.cshtml
  73. 99 0
      Areas/Admin/Views/OperateServer/StoreHouseOperate/Stat.cshtml
  74. 274 0
      Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Add.cshtml
  75. 217 0
      Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/AuditSend.cshtml
  76. 257 0
      Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Edit.cshtml
  77. 188 0
      Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Index.cshtml
  78. 173 0
      Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Indexs.cshtml
  79. 274 0
      Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/Add.cshtml
  80. 217 0
      Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/AuditSend.cshtml
  81. 257 0
      Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/Edit.cshtml
  82. 173 0
      Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/Indexs1.cshtml
  83. 322 0
      Areas/Admin/Views/OperateServer/SysAdminOperate/Add.cshtml
  84. 289 0
      Areas/Admin/Views/OperateServer/SysAdminOperate/Edit.cshtml
  85. 115 0
      Areas/Admin/Views/OperateServer/SysAdminOperate/EditAmt.cshtml
  86. 115 0
      Areas/Admin/Views/OperateServer/SysAdminOperate/EditBalance.cshtml
  87. 149 0
      Areas/Admin/Views/OperateServer/SysAdminOperate/Index.cshtml
  88. 229 0
      Areas/Admin/Views/OperateServer/SysAdminOperateRole/Add.cshtml
  89. 236 0
      Areas/Admin/Views/OperateServer/SysAdminOperateRole/Edit.cshtml
  90. 98 0
      Areas/Admin/Views/OperateServer/SysAdminOperateRole/Index.cshtml
  91. 291 0
      Areas/Admin/Views/OperateServer/SystemSetOperate/Add.cshtml
  92. 178 0
      Areas/Admin/Views/OperateServer/SystemSetOperate/AppStart.cshtml
  93. 350 0
      Areas/Admin/Views/OperateServer/SystemSetOperate/Edit.cshtml
  94. 104 0
      Areas/Admin/Views/OperateServer/SystemSetOperate/Index.cshtml
  95. 203 0
      Areas/Admin/Views/OperateServer/UserAccountRecordOperate/Add.cshtml
  96. 205 0
      Areas/Admin/Views/OperateServer/UserAccountRecordOperate/Edit.cshtml
  97. 142 0
      Areas/Admin/Views/OperateServer/UserAccountRecordOperate/Index.cshtml
  98. 209 0
      Areas/Admin/Views/OperateServer/UserCashRecordOperate/Add.cshtml
  99. 211 0
      Areas/Admin/Views/OperateServer/UserCashRecordOperate/Edit.cshtml
  100. 134 0
      Areas/Admin/Views/OperateServer/UserCashRecordOperate/Import.cshtml

+ 1 - 1
AppStart/ExcelHelper.cs

@@ -653,7 +653,7 @@ namespace MySystem
                                                             machine.BuyUserId = touser.Id;
                                                             machine.UserId = touser.Id;
                                                             machine.TransferTime = DateTime.Now;
-                                                            machine.RecycEndDate = DateTime.Now.AddDays(180); // 循环结束时间
+                                                            machine.RecycEndDate = DateTime.Now.AddDays(360); // 循环结束时间
                                                             db.SaveChanges();
                                                             string IdBrand = touser.Id + "_" + BrandId;
                                                             UserMachineData MachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == IdBrand);

+ 14 - 14
AppStart/Helper/SycnProfitServiceV2.cs

@@ -100,12 +100,12 @@ namespace MySystem
         private void DoTradeProfit2(int BrandId, string date, string SysUserName)
         {
             WebCMSEntities db = new WebCMSEntities();
-            OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+            string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
             int startid = 0;
             bool op = true;
             while(op)
             {
-                DataTable dt = OtherMySqlConn.dtable("select Id,UserId,DirectFlag,ProfitAmount from ProfitRecord where Id>" + startid + " and BrandId=" + BrandId + " and SeoTitle='" + date + "' and Version=0 and UserId>0 order by Id limit 200");
+                DataTable dt = CustomerSqlConn.dtable("select Id,UserId,DirectFlag,ProfitAmount from ProfitRecord where Id>" + startid + " and BrandId=" + BrandId + " and SeoTitle='" + date + "' and Version=0 and UserId>0 order by Id limit 200", conn);
                 if(dt.Rows.Count > 0)
                 {
                     function.WriteLog("分润:" + BrandId + ":" + dt.Rows.Count, "同步分润数据");
@@ -170,7 +170,7 @@ namespace MySystem
                     op = false;
                 }
             }
-            OtherMySqlConn.dtable("update ProfitRecord set Version=1 where BrandId=" + BrandId + " and SeoTitle='" + date + "' and Version=0 and UserId>0");
+            CustomerSqlConn.op("update ProfitRecord set Version=1 where BrandId=" + BrandId + " and SeoTitle='" + date + "' and Version=0 and UserId>0", conn);
             db.Dispose();
         }
 
@@ -179,7 +179,7 @@ namespace MySystem
         private void DoSubsidyProfit(int BrandId, string date)
         {
             WebCMSEntities db = new WebCMSEntities();
-            OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+            string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
 
             string StartId = function.ReadInstance("/PublicParams/ProfitSubsidyDetailId" + date + ".txt");
             if(string.IsNullOrEmpty(StartId))
@@ -187,9 +187,9 @@ namespace MySystem
                 StartId = "0";
             }
             
-            OtherMySqlConn.op("insert into SubsidyRecord (CreateDate,SeoKeyword,SeoTitle,ParentNav,BrandId,UserId,ProfitAmount) select now(),'root','" + date + "',(select ParentNav from Users where Id=p.SubsidyUserId)," + BrandId + ",SubsidyUserId,sum(SubsidyProfitRate) from ProfitSubsidyDetail p where Id>=" + StartId + " and Status=0 and BrandId=" + BrandId + " and TradeMonth='" + date + "' GROUP BY SubsidyUserId");
+            CustomerSqlConn.op("insert into SubsidyRecord (CreateDate,SeoKeyword,SeoTitle,ParentNav,BrandId,UserId,ProfitAmount) select now(),'root','" + date + "',(select ParentNav from Users where Id=p.SubsidyUserId)," + BrandId + ",SubsidyUserId,sum(SubsidyProfitRate) from ProfitSubsidyDetail p where Id>=" + StartId + " and Status=0 and BrandId=" + BrandId + " and TradeMonth='" + date + "' GROUP BY SubsidyUserId", conn);
 
-            DataTable dt = OtherMySqlConn.dtable("select SubsidyUserId,sum(SubsidyProfitRate) from ProfitSubsidyDetail where Id>=" + StartId + " and Status=0 and BrandId=" + BrandId + " and TradeMonth='" + date + "' GROUP BY SubsidyUserId");
+            DataTable dt = CustomerSqlConn.dtable("select SubsidyUserId,sum(SubsidyProfitRate) from ProfitSubsidyDetail where Id>=" + StartId + " and Status=0 and BrandId=" + BrandId + " and TradeMonth='" + date + "' GROUP BY SubsidyUserId", conn);
             function.WriteLog("补贴:" + BrandId + ":" + dt.Rows.Count, "同步补贴数据");
             int index = 0;
             foreach (DataRow dr in dt.Rows)
@@ -207,7 +207,7 @@ namespace MySystem
                     function.WriteLog(DateTime.Now.ToString() + "\n" + UserId + "," + ProfitMoney + "\n" + ex.ToString(), "同步到补贴异常");
                 }
             }
-            OtherMySqlConn.dtable("update ProfitSubsidyDetail set Status=1 where Id>=" + StartId + " and Status=0 and BrandId=" + BrandId + " and TradeMonth='" + date + "'");
+            CustomerSqlConn.op("update ProfitSubsidyDetail set Status=1 where Id>=" + StartId + " and Status=0 and BrandId=" + BrandId + " and TradeMonth='" + date + "'", conn);
                 
             db.Dispose();
             dt.Dispose();
@@ -219,12 +219,12 @@ namespace MySystem
         private void DoSubsidyProfit2(int BrandId, string date)
         {
             WebCMSEntities db = new WebCMSEntities();
-            OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+            string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
             int startid = 0;
             bool op = true;
             while(op)
             {
-                DataTable dt = OtherMySqlConn.dtable("select Id,UserId,ProfitAmount from SubsidyRecord where Id>" + startid + " and BrandId=" + BrandId + " and SeoTitle='" + date + "' and Status=0 and UserId>0 order by Id limit 200");
+                DataTable dt = CustomerSqlConn.dtable("select Id,UserId,ProfitAmount from SubsidyRecord where Id>" + startid + " and BrandId=" + BrandId + " and SeoTitle='" + date + "' and Status=0 and UserId>0 order by Id limit 200", conn);
                 if(dt.Rows.Count > 0)
                 {
                     function.WriteLog("补贴:" + BrandId + ":" + dt.Rows.Count, "同步补贴数据");
@@ -289,7 +289,7 @@ namespace MySystem
                     op = false;
                 }
             }
-            OtherMySqlConn.dtable("update SubsidyRecord set Status=1 where BrandId=" + BrandId + " and SeoTitle='" + date + "' and Status=0 and UserId>0");
+            CustomerSqlConn.op("update SubsidyRecord set Status=1 where BrandId=" + BrandId + " and SeoTitle='" + date + "' and Status=0 and UserId>0", conn);
 
             db.Dispose();
         }
@@ -299,8 +299,8 @@ namespace MySystem
 
         public void DoHelpProfit(string month)
         {
-            OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
-            OtherMySqlConn.dtable("update HelpProfitReward set Status=1 where Status=0 and TradeMonth='" + month + "'");
+            string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+            CustomerSqlConn.dtable("update HelpProfitReward set Status=1 where Status=0 and TradeMonth='" + month + "'", conn);
         }
 
         #endregion
@@ -310,9 +310,9 @@ namespace MySystem
         public void DoHelpProfit2(string month)
         {
             WebCMSEntities db = new WebCMSEntities();
-            OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
+            string conn = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
             
-            DataTable dt = OtherMySqlConn.dtable("select UserId,RewardType,sum(CreditRewardAmount),sum(CreditTradeAmt) from HelpProfitReward where Status=1 and TradeMonth='" + month + "' GROUP BY UserId,RewardType");
+            DataTable dt = CustomerSqlConn.dtable("select UserId,RewardType,sum(CreditRewardAmount),sum(CreditTradeAmt) from HelpProfitReward where Status=1 and TradeMonth='" + month + "' GROUP BY UserId,RewardType", conn);
             function.WriteLog("数量:" + dt.Rows.Count, "同步助力宝分润数据");
             int index = 0;
             foreach (DataRow dr in dt.Rows)

+ 249 - 0
AppStart/OpExcelHelper.cs

@@ -0,0 +1,249 @@
+using System;
+using System.Threading;
+using System.Linq;
+using System.Data;
+using Library;
+using MySystem.OpModels;
+using System.Collections.Generic;
+
+namespace MySystem
+{
+    public class OpExcelHelper
+    {
+        public readonly static OpExcelHelper Instance = new OpExcelHelper();
+        private OpExcelHelper()
+        {
+        }
+
+        public void Start()//启动
+        {
+            Thread thread = new Thread(ImportPostDo);
+            thread.IsBackground = true;
+            thread.Start();
+        }
+
+        public void ImportPostDo()
+        {
+            while (true)
+            {
+                string data = RedisDbconn.Instance.RPop<string>("ExcelImportV3");
+                if (!string.IsNullOrEmpty(data))
+                {
+                    string[] dataList = data.Split("#cut#");
+                    string _ExcelPath = dataList[0];
+                    string _Kind = dataList[1];
+                    string checkKey = dataList[2];
+                    string Operator = dataList[3]; // 操作人
+                    int SuccessCount = 0;
+                    int DoCount = 0;
+                    string FullExcelPath = function.getPath(_ExcelPath);
+                    FullExcelPath = FullExcelPath.Replace("//", "/");
+                    DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
+                    int TotalCount = list.Rows.Count;
+                    while (DoCount < list.Rows.Count)
+                    {
+                        WebCMSEntities db = new WebCMSEntities();
+                        if (_Kind == "OpUserCashRecord")
+                        {
+                            using (var tran = db.Database.BeginTransaction())
+                            {
+                                try
+                                {
+                                    int Size = 100;
+                                    if (list.Rows.Count - DoCount < 100)
+                                    {
+                                        Size = list.Rows.Count - DoCount;
+                                    }
+                                    for (int i = DoCount; i < DoCount + Size; i++)
+                                    {
+                                        DataRow dr = list.Rows[i];
+                                        string CashOrderNo = dr[2].ToString(); // 提现单号
+                                        decimal Amount = decimal.Parse(function.CheckNum(dr[3].ToString())); // 发佣金额
+                                        int Status = int.Parse(function.CheckInt(dr[4].ToString())); // 提现状态
+                                        string Remark = dr[5].ToString(); // 备注
+                                        CashOrderNo = CashOrderNo.Replace(" ", "");
+                                        UserCashRecord edit = db.UserCashRecord.FirstOrDefault(m => m.CashOrderNo == CashOrderNo && m.ActualTradeAmount == Amount && m.Status == 0);
+                                        if (edit != null)
+                                        {
+                                            if (edit.TradeType == 4)
+                                            {
+                                                edit.Status = Status;
+                                                edit.Remark = Remark;
+                                                edit.UpdateMan = Operator;
+                                                if (Status == 2)
+                                                {
+                                                    UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
+                                                    if (account != null)
+                                                    {
+                                                        decimal TradeAmount = edit.TradeAmount;
+                                                        decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
+                                                        decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
+                                                        decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
+                                                        account.BalanceAmount += TradeAmount;
+                                                        account.FreezeAmount -= TradeAmount;
+                                                        decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
+                                                        decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
+                                                        decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
+                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        {
+                                                            CreateDate = DateTime.Now,
+                                                            UpdateDate = DateTime.Now,
+                                                            UserId = edit.UserId, //创客
+                                                            ChangeType = 6, //变动类型
+                                                            ProductType = 99, //产品类型
+                                                            ChangeAmount = TradeAmount, //变更金额
+                                                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                                                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                                                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                                                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                                                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                                                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                                                        });
+                                                        db.SaveChanges();
+                                                        RedisDbconn.Instance.Set("OpUserAccount:" + edit.UserId, account);
+                                                    }
+                                                }
+                                                db.SaveChanges();
+                                                RedisDbconn.Instance.Clear("OpUserCashRecord:" + edit.Id);
+                                                SuccessCount += 1;
+                                                RedisDbconn.Instance.Set("OpCheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
+                                            }
+                                            else
+                                            {
+                                                edit.Status = Status;
+                                                edit.Remark = Remark;
+                                                edit.UpdateMan = Operator;
+                                                if (Status == 1)
+                                                {
+                                                    UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
+                                                    if (account != null)
+                                                    {
+                                                        account.QueryCount = 1;
+                                                        decimal TradeAmount = edit.TradeAmount;
+                                                        decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
+                                                        decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
+                                                        decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
+                                                        account.WithdrawAmount += edit.TradeAmount;
+                                                        account.FreezeAmount -= edit.TradeAmount;
+                                                        decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
+                                                        decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
+                                                        decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
+                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        {
+                                                            CreateDate = DateTime.Now,
+                                                            UpdateDate = DateTime.Now,
+                                                            UserId = edit.UserId, //创客
+                                                            ChangeType = 3, //变动类型
+                                                            ProductType = 99, //产品类型
+                                                            ChangeAmount = edit.ActualTradeAmount, //变更金额
+                                                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                                                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                                                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                                                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                                                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                                                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                                                        });
+                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        {
+                                                            CreateDate = DateTime.Now,
+                                                            UpdateDate = DateTime.Now,
+                                                            UserId = edit.UserId, //创客
+                                                            ChangeType = 4, //变动类型
+                                                            ProductType = 99, //产品类型
+                                                            ChangeAmount = edit.TradeFee, //变更金额
+                                                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                                                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                                                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                                                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                                                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                                                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                                                        });
+                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        {
+                                                            CreateDate = DateTime.Now,
+                                                            UpdateDate = DateTime.Now,
+                                                            UserId = edit.UserId, //创客
+                                                            ChangeType = 5, //变动类型
+                                                            ProductType = 99, //产品类型
+                                                            ChangeAmount = edit.ManageFee, //变更金额
+                                                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                                                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                                                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                                                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                                                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                                                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                                                        });
+                                                        db.SaveChanges();
+                                                        RedisDbconn.Instance.Set("OpUserAccount:" + edit.UserId, account);
+                                                    }
+                                                }
+                                                else if (Status == 2)
+                                                {
+                                                    UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
+                                                    if (account != null)
+                                                    {
+                                                        decimal TradeAmount = edit.TradeAmount;
+                                                        decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
+                                                        decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
+                                                        decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
+                                                        account.BalanceAmount += TradeAmount;
+                                                        account.FreezeAmount -= TradeAmount;
+                                                        decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
+                                                        decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
+                                                        decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
+                                                        db.UserAccountRecord.Add(new UserAccountRecord()
+                                                        {
+                                                            CreateDate = DateTime.Now,
+                                                            UpdateDate = DateTime.Now,
+                                                            UserId = edit.UserId, //创客
+                                                            ChangeType = 6, //变动类型
+                                                            ProductType = 99, //产品类型
+                                                            ChangeAmount = TradeAmount, //变更金额
+                                                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                                                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                                                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                                                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                                                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                                                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                                                        });
+                                                        db.SaveChanges();
+                                                        RedisDbconn.Instance.Set("OpUserAccount:" + edit.UserId, account);
+                                                    }
+                                                }
+                                                db.SaveChanges();
+                                                RedisDbconn.Instance.Clear("OpUserCashRecord:" + edit.Id);
+                                                SuccessCount += 1;
+                                                RedisDbconn.Instance.Set("OpCheckImport:" + checkKey, SuccessCount + " / " + TotalCount);
+                                            }
+
+                                        }
+                                    }
+                                    DoCount += Size;
+
+                                    db.SaveChanges();
+                                    tran.Commit();
+                                    RedisDbconn.Instance.Set("OpCheckImport:" + checkKey, "success|" + SuccessCount);
+                                    RedisDbconn.Instance.SetExpire("OpCheckImport:" + checkKey, 60000);
+                                }
+                                catch (Exception ex)
+                                {
+                                    DoCount = list.Rows.Count;
+                                    tran.Rollback();
+                                    ErrorMsg msg = new ErrorMsg()
+                                    {
+                                        Time = DateTime.Now,
+                                        ErrorContent = ex.ToString(),
+                                    };
+                                    function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入Excel文件异常");
+                                }
+                            }
+                        }
+                        
+                        db.Dispose();
+                    }
+                }
+                // return "success|" + SuccessCount;
+            }
+        }
+    }
+}

+ 3 - 0
AppStart/PublicFunction.cs

@@ -15,6 +15,7 @@ namespace MySystem
     {
         public WebCMSEntities db = new WebCMSEntities();
         public BsModels.WebCMSEntities bsdb = new BsModels.WebCMSEntities();
+        public OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
 
         #region 获取权限JSON数据
 
@@ -452,6 +453,8 @@ namespace MySystem
         public static Dictionary<string, Dictionary<string, string>> BsTables = new Dictionary<string, Dictionary<string, string>>();
         public static Dictionary<string, Dictionary<string, string>> JobTables = new Dictionary<string, Dictionary<string, string>>();
         public static Dictionary<string, Dictionary<string, string>> SpTables = new Dictionary<string, Dictionary<string, string>>();
+        public static Dictionary<string, Dictionary<string, string>> OpTables = new Dictionary<string, Dictionary<string, string>>();//运营中心数据模型
+
         #endregion
     }
 }

+ 106 - 20
AppStart/Redis/RedisDbconn.cs

@@ -1,4 +1,8 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using CSRedis;
 using Library;
 using System.Linq;
 
@@ -10,12 +14,16 @@ namespace MySystem
         public static CSRedis.CSRedisClient csredis;
         private RedisDbconn()
         {
+            if (csredis == null)
+            {
+                csredis = new CSRedis.CSRedisClient(ConfigurationManager.AppSettings["RedisConnStr"].ToString());
+            }
         }
 
         #region 设置单个字段
-        public bool Set(string key, object value)
+        public bool Set(string key, object value, int sec = -1)
         {
-            return csredis.Set(key, value);
+            return csredis.Set(key, value, sec);
             // return false;
         }
         #endregion
@@ -92,6 +100,11 @@ namespace MySystem
             return csredis.LPush(key, value);
             // return 0;
         }
+        public long AddRightList(string key, object value)
+        {
+            return csredis.RPush(key, value);
+            // return 0;
+        }
         public T RPop<T>(string key)
         {
             return csredis.RPop<T>(key);
@@ -118,6 +131,13 @@ namespace MySystem
         }
         #endregion
 
+        #region 判断元素是否存在
+        public bool SIsMember(string key, object value)
+        {
+            return csredis.SIsMember(key, value);
+        }
+        #endregion
+
         #region 修改列表对象
         public bool SetList(string key, int index, object value)
         {
@@ -137,16 +157,6 @@ namespace MySystem
         }
         #endregion
 
-        #region 删除列表元素
-        public void DelList<T>(string key, T item)
-        {
-            List<T> oldlist = GetList<T>(key, 1, 10000000);
-            oldlist.Remove(item);
-            Clear(key);
-            AddList(key, oldlist.ToArray());
-        }
-        #endregion
-
         #region 添加排序列表对象
         public long AddSort(string key, object value, decimal score)
         {
@@ -163,7 +173,7 @@ namespace MySystem
             string[] list = csredis.ZRangeByScore(key, start, end);
             List<T> lists = new List<T>();
             foreach (string record in list)
-            { 
+            {
                 lists.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<T>(record));
             }
             return lists;
@@ -175,7 +185,7 @@ namespace MySystem
             string[] list = csredis.ZRevRangeByScore(key, start, end);
             List<T> lists = new List<T>();
             foreach (string record in list)
-            { 
+            {
                 lists.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<T>(record));
             }
             return lists;
@@ -189,7 +199,7 @@ namespace MySystem
 
         public bool RemoveTop(string key, long count)
         {
-            return RedisDbconn.Instance.Remove(key, count, RedisDbconn.Instance.Count(key) - 1);;
+            return RedisDbconn.Instance.Remove(key, count, RedisDbconn.Instance.Count(key) - 1); ;
         }
 
         public long Count(string key)
@@ -204,7 +214,7 @@ namespace MySystem
         }
 
         public string[] GetKeys(string pattern)
-        { 
+        {
             string[] keys = csredis.Keys(pattern);
             return keys;
         }
@@ -217,11 +227,87 @@ namespace MySystem
         public bool HExists(string key, string field)
         {
             return csredis.HExists(key, field);
-        } 
+        }        
 
         public void SetExpire(string key, int expire)
-        { 
+        {
             csredis.Expire(key, expire); //秒为单位
         }
+
+
+
+
+        /// <summary>
+        /// 锁key
+        /// </summary>
+        private readonly string lockKey = "RedisLock";
+        /// <summary>
+        /// 锁的过期秒数
+        /// </summary>
+        private readonly int lockTime = 20;
+        /// <summary>
+        /// 续命线程取消令牌
+        /// </summary>
+        private CancellationTokenSource tokenSource = new CancellationTokenSource();
+
+        /// <summary>
+        /// 获取锁
+        /// </summary>
+        /// <param name="requestId">请求id保证释放锁时的客户端和加锁的客户端一致</param>
+        /// <returns></returns>
+        public bool GetLock(string requestId)
+        {
+            //设置key 设置过期时间20s
+            while (true)
+            {
+                //设置key Redis2.6.12以上版本,可以用set获取锁。set可以实现setnx和expire,这个是原子操作
+                if (csredis.Set(lockKey, requestId, lockTime, RedisExistence.Nx))
+                {
+                    //设置成功后开启子线程为key续命
+                    CreateThredXm();
+                    return true;
+                }
+            }
+        }
+        /// <summary>
+        /// 为锁续命(防止业务操作时间大于锁自动释放时间,锁被自动释放掉)
+        /// </summary>
+        void CreateThredXm()
+        {
+            Task.Run(() =>
+            {
+                while (true)
+                {
+                    Thread.Sleep(10);
+                    //外部取消 退出子线程
+                    if (tokenSource.IsCancellationRequested)
+                    {
+                        return;
+                    }
+                    //查询key还有多少秒释放
+                    var Seconds = csredis.PTtl(lockKey) / 1000;
+                    //key还剩1/3秒时重设过期时间
+                    if (Seconds < (lockTime / 3))
+                    {
+                        //小于5秒则自动 重设过期时间
+                        csredis.Expire(lockKey, lockTime);
+                    }
+                }
+            }, tokenSource.Token);
+        }
+        /// <summary>
+        /// 释放锁操作
+        /// </summary>
+        /// <param name="requestId">请求id保证释放锁时的客户端和加锁的客户端一致</param>
+        public void ReleaseLock(string requestId)
+        {
+            //这里使用Lua脚本保证原子性操作
+            string script = "if  redis.call('get', KEYS[1]) == ARGV[1] then " +
+                    "return redis.call('del', KEYS[1]) " +
+                    "else return 0 end";
+            csredis.Eval(script, lockKey, requestId);
+            //取消续命线程
+            tokenSource.Cancel();
+        }
     }
-}
+}

+ 6 - 0
AppStart/RelationClassForConst.cs

@@ -123,6 +123,12 @@ namespace MySystem
                 case 119:
                     result = "分仓临时额度退还";
                     break;
+                case 124:
+                    result = "机具过期";
+                    break;
+                case 125:
+                    result = "创客月费";
+                    break;
             }
             return result;
         }

+ 5 - 0
AppStart/TemplateViewLocationExpander.cs

@@ -9,12 +9,17 @@ namespace MySystem
     {
         public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
         {
+            /// <summary>
+            /// view文件路径
+            /// </summary>
+            /// <value></value>
             string[] locations = {
                 "/Areas/Admin/Views/BsServer/{1}/{0}.cshtml",
                 "/Areas/Admin/Views/MainServer/{1}/{0}.cshtml",
                 "/Areas/Admin/Views/JobServer/{1}/{0}.cshtml",
                 "/Areas/Admin/Views/CashServer/{1}/{0}.cshtml",
                 "/Areas/Admin/Views/SpServer/{1}/{0}.cshtml",
+                "/Areas/Admin/Views/OperateServer/{1}/{0}.cshtml",
             };
             return locations.Union(viewLocations);
         }

+ 6 - 0
Areas/Admin/Controllers/BsServer/BaseController.cs

@@ -26,7 +26,10 @@ namespace MySystem.Areas.Admin.Controllers
         public BsModels.WebCMSEntities bsdb = new BsModels.WebCMSEntities();
         public SpModels.WebCMSEntities spdb = new SpModels.WebCMSEntities();
         public CashModels.WebCMSEntities cashdb = new CashModels.WebCMSEntities();
+        public OpModels.WebCMSEntities opdb = new OpModels.WebCMSEntities();
+
         public string Host = Library.ConfigurationManager.AppSettings["Host"].ToString();
+        public string OpHost = Library.ConfigurationManager.AppSettings["OpHost"].ToString();
 
         public string ShareHost = "";
         public string SourceHost = OssHelper.Instance.SourceHost;
@@ -37,6 +40,9 @@ namespace MySystem.Areas.Admin.Controllers
         public string JwtSecret = Library.ConfigurationManager.AppSettings["JwtSecret"].ToString();
         public string JwtIss = Library.ConfigurationManager.AppSettings["JwtIss"].ToString();
         public string JwtAud = Library.ConfigurationManager.AppSettings["JwtAud"].ToString();
+
+        //数据库连接字符串
+        public string OpConn = Library.ConfigurationManager.AppSettings["OpSqlConnStr"].ToString();
         
         public int SysId;
         public int SysRealRole;

+ 1 - 1
Areas/Admin/Controllers/BsServer/MsgPersonalController.cs

@@ -139,7 +139,7 @@ namespace MySystem.Areas.Admin.Controllers
             string[] MakerCodeList = MakerCode.Split(',');
             foreach (string code in MakerCodeList)
             {
-                Models.UserForMakerCode codeData = RedisDbconn.Instance.Get<Models.UserForMakerCode>("UserForMakerCode:" + code) ?? new Models.UserForMakerCode();
+                Models.UserForMakerCode codeData = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == code) ?? new Models.UserForMakerCode();
                 if (AddKind == 0)
                 {
                     Dictionary<string, object> Fields = new Dictionary<string, object>();

+ 114 - 0
Areas/Admin/Controllers/MainServer/LeaderReserveRecordController.cs

@@ -0,0 +1,114 @@
+/*
+ * 盟主兑换机具券
+ */
+
+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 LeaderReserveRecordController : BaseController
+    {
+        public LeaderReserveRecordController(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(LeaderReserveRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询盟主兑换机具券列表
+
+        /// <summary>
+        /// 根据条件查询盟主兑换机具券列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(LeaderReserveRecord data, string UserIdMakerCode, string LeaderLevelSelect, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("SeoKeyword", "1"); //订单编号
+
+
+            string condition = " and Status>-1 and QueryCount=1";
+            //创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //创建时间
+            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("LeaderReserveRecord", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic.Remove("UserId");
+
+                //订单信息
+                JsonData ApplyList = JsonMapper.ToObject(dic["SeoTitle"].ToString());//申请数据
+                dic["dPosCoupons"] = "";
+                dic["dPosCoupons"] = "";
+                for (int i = 0; i < ApplyList.Count; i++)
+                {
+                    int num = Convert.ToInt32(ApplyList[i]["Num"].ToString());
+                    int type = Convert.ToInt32(ApplyList[i]["Type"].ToString());
+                    if (type == 1)
+                    {
+                        dic["dPosCoupons"] = num + "张";
+                    }
+                    else
+                    {
+                        dic["bPosCoupons"] = num + "张";
+                    }
+                }
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+    }
+}

+ 385 - 0
Areas/Admin/Controllers/MainServer/LeadersController.cs

@@ -0,0 +1,385 @@
+/*
+ * 盟主管理
+ */
+
+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 LeadersController : BaseController
+    {
+        public LeadersController(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(Leaders data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询盟主管理列表
+
+        /// <summary>
+        /// 盟主管理列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(Leaders data, string UserIdMakerCode, string LeaderLevelSelect, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            string condition = " and Status>-1";
+            //创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //盟主等级
+            if (!string.IsNullOrEmpty(LeaderLevelSelect))
+            {
+                condition += " and LeaderLevel=" + LeaderLevelSelect;
+            }
+            //创建时间
+            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("Leaders", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic.Remove("UserId");
+                //盟主等级
+                int LeaderLevel = int.Parse(dic["LeaderLevel"].ToString());
+                if (LeaderLevel == 1) dic["LeaderLevel"] = "小盟主";
+                if (LeaderLevel == 2) dic["LeaderLevel"] = "大盟主";
+                if (LeaderLevel == 0) dic["LeaderLevel"] = "";
+
+            }
+            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(Leaders data, string MakerCode)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
+                if (user.Id > 0)
+                {
+                    user.LeaderLevel = data.LeaderLevel;
+                    Fields.Add("UserId", userForMakerCode.UserId); //创客
+                    Fields.Add("LeaderLevel", data.LeaderLevel); //盟主等级
+                    Fields.Add("SeoKeyword", data.SeoKeyword);//附件
+                    int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("Leaders", Fields, 0);
+                    AddSysLog(data.Id.ToString(), "Leaders", "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;
+
+
+            Leaders editData = db.Leaders.FirstOrDefault(m => m.Id == Id) ?? new Leaders();
+            Users editDatas = db.Users.FirstOrDefault(m => m.Id == editData.UserId) ?? new Users();
+            ViewBag.data = editData;
+            ViewBag.datas = editDatas;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改盟主管理
+
+        /// <summary>
+        /// 增加或修改盟主管理信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(Leaders data, string MakerCode)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
+                if (user.Id > 0)
+                {
+                    user.LeaderLevel = data.LeaderLevel;
+                    Fields.Add("UserId", userForMakerCode.UserId); //创客
+                    Fields.Add("LeaderLevel", data.LeaderLevel); //盟主等级
+                    Fields.Add("SeoKeyword", data.SeoKeyword);
+                    new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("Leaders", Fields, data.Id);
+                    var leader = db.Leaders.FirstOrDefault(m => m.Id == data.Id) ?? new Leaders();
+                    if (leader.Id > 0)
+                    {
+                        leader.CreateDate = leader.CreateDate;
+                    }
+                    AddSysLog(data.Id.ToString(), "Leaders", "update");
+                    db.SaveChanges();
+                }
+            }
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除盟主管理信息
+
+        /// <summary>
+        /// 删除盟主管理信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "Leaders", "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("Leaders", 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, "Leaders", "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("Leaders", 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, "Leaders", "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("Leaders", 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("Leaders", Sort, Id);
+
+            AddSysLog(Id.ToString(), "Leaders", "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.Leaders.Add(new Leaders()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "Leaders", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(Leaders data, string UserIdMakerCode, string CreateDateData, string LeaderLevelSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+
+            string condition = " and Status>-1";
+            //创客创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //盟主等级
+            if (!string.IsNullOrEmpty(LeaderLevelSelect))
+            {
+                condition += " and LeaderLevel=" + LeaderLevelSelect;
+            }
+            //创建时间
+            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("Leaders", Fields, "Id desc", "0", 1, 20000, condition, "UserId,LeaderLevel,CreateDate", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic.Remove("UserId");
+                //盟主等级
+                int LeaderLevel = int.Parse(dic["LeaderLevel"].ToString());
+                if (LeaderLevel == 1) dic["LeaderLevel"] = "小盟主";
+                if (LeaderLevel == 2) dic["LeaderLevel"] = "大盟主";
+                if (LeaderLevel == 0) dic["LeaderLevel"] = "";
+
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("UserIdMakerCode", "创客创客编号");
+            ReturnFields.Add("UserIdRealName", "创客真实姓名");
+            ReturnFields.Add("LeaderLevel", "盟主等级");
+            ReturnFields.Add("CreateDate", "创建时间");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "Leaders", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 42 - 10
Areas/Admin/Controllers/MainServer/OrdersController.cs

@@ -165,7 +165,7 @@ namespace MySystem.Areas.Admin.Controllers
                 string[] datelist = SendDateData.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'";
+                condition += " and SendDate>='" + start + " 00:00:00' and SendDate<='" + end + " 23:59:59'";
             }
 
             //退款状态
@@ -565,11 +565,18 @@ namespace MySystem.Areas.Admin.Controllers
                 // string result = new Alipay.AlipayPublicClass(_accessor.HttpContext).Refund(set.AlipayAppId, set.AlipayPrivateKey, set.AlipayPublicKey, order.OrderNo, order.TotalPrice);
                 // if (result.StartsWith("success"))
                 // {
-                order.RefundActAmount = data.RefundActAmount;
-                order.RefundReason = data.RefundReason;
-                order.RefundStatus = 1;
-                db.SaveChanges();
-                return "success";
+                if (order.PayStatus > 0)
+                {
+                    return "已支付订单不可退货";
+                }
+                else
+                {
+                    order.RefundActAmount = data.RefundActAmount;
+                    order.RefundReason = data.RefundReason;
+                    order.RefundStatus = 1;
+                    db.SaveChanges();
+                    return "success";
+                }
                 // }
                 // else
                 // { 
@@ -1046,15 +1053,15 @@ namespace MySystem.Areas.Admin.Controllers
         /// 导出Excel
         /// </summary>
         /// <returns></returns>
-        public JsonResult ExportsExcel(Orders data, string UserIdMakerCode, string UserIdRealName, string PayModeSelect, string StoreIdStoreNo, string StoreIdStoreName, string RefundStatusSelect, string DeliveryTypeSelect, string SendStatusSelect, string ProductIdSelect, string StoreTypeSelect, string StoreUserIdMakerCode, string StoreUserIdRealName, string PayStatusSelect, string RedisKey = "ExportKey")
+        public JsonResult ExportsExcel(Orders data, string UserIdMakerCode, string UserIdRealName, string PayModeSelect, string StoreIdStoreNo, string StoreIdStoreName, string RefundStatusSelect, string DeliveryTypeSelect, string SendStatusSelect, string ProductIdSelect, string StoreTypeSelect, string StoreUserIdMakerCode, string StoreUserIdRealName, string PayStatusSelect, string CreateDateData, string SendDateData, string PayDateData, string RedisKey = "ExportKey")
         {
             Dictionary<string, string> Fields = new Dictionary<string, string>();
-            Fields.Add("CreateDate", "3"); //时间
+            // Fields.Add("CreateDate", "3"); //时间
             Fields.Add("OrderNo", "1"); //订单号
             Fields.Add("RealName", "1"); //姓名
             Fields.Add("Mobile", "1"); //手机号
             Fields.Add("ErpCode", "1"); //运单号
-            Fields.Add("SendDate", "3"); //发货时间
+            // Fields.Add("SendDate", "3"); //发货时间
             Fields.Add("TradeNo", "1"); //支付交易号
             Fields.Add("StoreContact", "1"); //仓库联系人
             Fields.Add("SnNos", "2"); //SN编号
@@ -1126,7 +1133,31 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 condition += " and PayStatus=" + PayStatusSelect;
             }
-            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("Orders", Fields, "Id desc", "0", 1, 20000, condition, "UserId,OrderNo,RealName,Mobile,TotalPrice,Areas,Address,ErpName,ErpCode,SendDate,PayMode,TradeNo,StoreId,RefundStatus,DeliveryType,SendStatus,ProductId,StoreContact,StoreType,StoreUserId,TopUserId,PayStatus,BuyCount,Remark,Id", false);
+            //支付时间
+            if (!string.IsNullOrEmpty(PayDateData))
+            {
+                string[] datelist = PayDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and PayDate>='" + start + " 00:00:00' and PayDate<='" + end + " 23:59:59'";
+            }
+            //下单时间
+            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'";
+            }
+            //发货时间
+            if (!string.IsNullOrEmpty(SendDateData))
+            {
+                string[] datelist = SendDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and SendDate>='" + start + " 00:00:00' and SendDate<='" + end + " 23:59:59'";
+            }
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("Orders", Fields, "Id desc", "0", 1, 20000, condition, "UserId,OrderNo,RealName,Mobile,TotalPrice,Areas,Address,ErpName,ErpCode,SendDate,PayMode,PayDate,TradeNo,StoreId,RefundStatus,DeliveryType,SendStatus,ProductId,StoreContact,StoreType,StoreUserId,TopUserId,PayStatus,BuyCount,Remark,Id", false);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
             foreach (Dictionary<string, object> dic in diclist)
             {
@@ -1220,6 +1251,7 @@ namespace MySystem.Areas.Admin.Controllers
             ReturnFields.Add("ErpCode", "运单号");
             ReturnFields.Add("SendDate", "发货时间");
             ReturnFields.Add("PayMode", "支付方式");
+            ReturnFields.Add("PayDate", "支付时间");
             ReturnFields.Add("TradeNo", "支付交易号");
             ReturnFields.Add("StoreIdStoreNo", "仓库编号");
             ReturnFields.Add("StoreIdStoreName", "仓库名称");

+ 39 - 1
Areas/Admin/Controllers/MainServer/PosCouponsController.cs

@@ -51,7 +51,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// 机具券列表
         /// </summary>
         /// <returns></returns>
-        public JsonResult IndexData(PosCoupons data, string UseDateData, string UserIdMakerCode, string LeaderIdMakerCode, string ExchangeCode, string IsUseSelect, string IsLockSelect, int page = 1, int limit = 30)
+        public JsonResult IndexData(PosCoupons data, string OpCode, string UseDateData, string UserIdMakerCode, string LeaderIdMakerCode, string ExchangeCode, string IsUseSelect, string IsLockSelect, string TypeSelect, int page = 1, int limit = 30)
         {
 
             Dictionary<string, string> Fields = new Dictionary<string, string>();
@@ -60,6 +60,15 @@ namespace MySystem.Areas.Admin.Controllers
 
 
             string condition = " and Status>-1";
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                var sysAdmins = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == OpCode) ?? new OpModels.SysAdmin();
+                if (sysAdmins.Id > 0)
+                {
+                    condition = " and OpId=" + sysAdmins.UserId;
+                }
+            }
             //创客编号
             if (!string.IsNullOrEmpty(UserIdMakerCode))
             {
@@ -75,6 +84,18 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 condition += " and ExchangeCode =" + ExchangeCode;
             }
+            //机具券类型
+            if (!string.IsNullOrEmpty(TypeSelect))
+            {
+                if (int.Parse(TypeSelect) == 1)
+                {
+                    condition += " and QueryCount =1";
+                }
+                else
+                {
+                    condition += " and QueryCount =2";
+                }
+            }
             //是否使用
             if (!string.IsNullOrEmpty(IsUseSelect))
             {
@@ -123,6 +144,23 @@ namespace MySystem.Areas.Admin.Controllers
                 if (IsLock == 0) dic["IsLockName"] = "否";
                 if (IsLock == 1) dic["IsLockName"] = "是";
 
+                //机具券类型
+                int QueryCount = int.Parse(dic["QueryCount"].ToString());
+                if (QueryCount == 1) dic["QueryCount"] = "电签券";
+                if (QueryCount == 2) dic["QueryCount"] = "大POS";
+
+                //所属运营中心
+                int OpId = int.Parse(dic["OpId"].ToString());
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.QueryCount > 0 && m.UserId == OpId) ?? new OpModels.SysAdmin();
+                if (sysAdmin.Id > 0)
+                {
+                    dic["YName"] = sysAdmin.OpCode;
+                }
+                else
+                {
+                    dic["YName"] = "";
+                }
+
             }
             return Json(obj);
         }

+ 12 - 12
Areas/Admin/Controllers/MainServer/PosMachinesTwoChangeController.cs

@@ -59,7 +59,7 @@ namespace MySystem.Areas.Admin.Controllers
             Fields.Add("PosSn", "1"); //SN编号
             Fields.Add("BrandId", "0"); //品牌
 
-            string condition = " and Status>-1 AND BindingState = 1 AND DATE_SUB(CURDATE(), INTERVAL 180 DAY) >= date(BindingTime) and UpFeeFlag=1 and DownFeeFlag=0 and SeoDescription!='设置成功'";
+            string condition = " and Status>-1 AND BindingState = 1 AND DATE_SUB(CURDATE(), INTERVAL 120 DAY) >= date(BindingTime) and UpFeeFlag=1 and DownFeeFlag=0 and SeoDescription!='设置成功'";
             //绑定状态
             if (!string.IsNullOrEmpty(BindingStateSelect))
             {
@@ -468,8 +468,8 @@ namespace MySystem.Areas.Admin.Controllers
             List<int> posIds = new List<int>();
             List<int> upposIds = new List<int>();
             string userIds = "";
-            DateTime check = DateTime.Now.AddDays(-180);
-            List<PosMachinesTwo> poslist = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BindingState == 1 && m.UpFeeFlag == 1 && m.DownFeeFlag == 0 && m.BindingTime <= check && m.SeoDescription != "设置成功").ToList();
+            DateTime check = DateTime.Now.AddDays(-120);
+            List<PosMachinesTwo> poslist = db.PosMachinesTwo.Where(m => m.Status > -1 && m.BindingState == 1 && m.UpFeeFlag == 1 && m.DownFeeFlag == 0 && m.BindingTime <= check && m.SeoDescription != "设置成功").ToList();//18503
             foreach (PosMachinesTwo pos in poslist)
             {
                 Dictionary<string, object> Fields = new Dictionary<string, object>();
@@ -482,7 +482,7 @@ namespace MySystem.Areas.Admin.Controllers
                     userIds += pos.BuyUserId + ",";
                 }
 
-                if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 2 || pos.BrandId == 4 || pos.BrandId == 5 || pos.BrandId == 6)
+                if (pos.BrandId == 1 || pos.BrandId == 3 || pos.BrandId == 2 || pos.BrandId == 4 || pos.BrandId == 5 || pos.BrandId == 6 || pos.BrandId == 7)
                 {
                     // PosId:机具Id
                     // Kind:1或2,1为费率0.63,2为费率0.6
@@ -490,10 +490,10 @@ namespace MySystem.Areas.Admin.Controllers
                     string info = "{\"RecordId\":\"\",\"PosId\":\"" + pos.Id + "\",\"Fee\": \"" + 0.63 + "\",\"Kind\": \"" + 1 + "\",\"OpMan\": \"" + SysUserName + "\"}";
                     RedisDbconn.Instance.AddList("SetDepositPostQueue", info);
                 }
-                else
-                {
-                    upposIds.Add(pos.Id);
-                }
+                // else
+                // {
+                //     upposIds.Add(pos.Id);
+                // }
                 new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosMachinesTwo", Fields, pos.Id);
 
             }
@@ -532,8 +532,8 @@ namespace MySystem.Areas.Admin.Controllers
             //         {
             //             UserId = Convert.ToInt32(UserId), //创客
             //             Title = "商户费率变更通知", //标题
-            //             Content = "<div class='f16' style='margin-bottom: .72rem'>您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率</div>" + snhtml, //内容
-            //             Summary = "您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率",
+            //             Content = "<div class='f16' style='margin-bottom: .72rem'>您的部分机具已绑定超过120天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率</div>" + snhtml, //内容
+            //             Summary = "您的部分机具已绑定超过120天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率",
             //             CreateDate = DateTime.Now,
 
             //         }));
@@ -611,8 +611,8 @@ namespace MySystem.Areas.Admin.Controllers
         //             {
         //                 UserId = Convert.ToInt32(UserId), //创客
         //                 Title = "商户费率变更通知", //标题
-        //                 Content = "<div class='f16' style='margin-bottom: .72rem'>您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率</div>" + snhtml, //内容
-        //                 Summary = "您的部分机具已绑定超过180天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率",
+        //                 Content = "<div class='f16' style='margin-bottom: .72rem'>您的部分机具已绑定超过120天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率</div>" + snhtml, //内容
+        //                 Summary = "您的部分机具已绑定超过120天,刷卡费率已自动变更为0.63%,如需调整费率,请前往我的商户-商户详情中调整费率",
         //                 CreateDate = DateTime.Now,
 
         //             }));

+ 38 - 2
Areas/Admin/Controllers/MainServer/PosMachinesTwoController.cs

@@ -51,7 +51,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// 机具库列表
         /// </summary>
         /// <returns></returns>
-        public JsonResult IndexData(PosMachinesTwo data, string BindingStateSelect, string ActivationStateSelect, string UserIdMakerCode, string UserIdRealName, string StoreIdCode, string StoreIdName, string BrandId, string ActivationDateData, string BindingDateData, int ShowFlag = 0, int page = 1, int limit = 30)
+        public JsonResult IndexData(PosMachinesTwo data, string BindingStateSelect, string ActivationStateSelect, string UserIdMakerCode, string UserIdRealName, string StoreIdCode, string StoreIdName, string BrandId, string ActivationDateData, string BindingDateData, string IsStoreSelect, string OpCode, int ShowFlag = 0, int page = 1, int limit = 30)
         {
 
             Dictionary<string, string> Fields = new Dictionary<string, string>();
@@ -74,6 +74,14 @@ namespace MySystem.Areas.Admin.Controllers
 
 
             string condition = " and Status>-1";
+            //是否仓库机
+            if (!string.IsNullOrEmpty(IsStoreSelect))
+            {
+                if (int.Parse(IsStoreSelect) > 0)
+                {
+                    condition += " and UserId=0 and BuyUserId=0";
+                }
+            }
             //绑定状态
             if (!string.IsNullOrEmpty(BindingStateSelect))
             {
@@ -104,6 +112,15 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 condition += " and StoreId in (select StoreId from StoreForName where Name='" + StoreIdName + "')";
             }
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                var sysUser = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == OpCode) ?? new OpModels.SysAdmin();
+                if (sysUser.Id > 0)
+                {
+                    condition += " and OpId=" + sysUser.UserId;
+                }
+            }
             //品牌
             if (!string.IsNullOrEmpty(BrandId))
             {
@@ -186,10 +203,29 @@ namespace MySystem.Areas.Admin.Controllers
                 //循环开始时间
                 if (!string.IsNullOrEmpty(dic["RecycEndDate"].ToString()))
                 {
-                    var RecycStartDate = Convert.ToDateTime(dic["RecycEndDate"].ToString()).AddDays(-180).ToString("yyyy-MM-dd HH:mm:ss");
+                    var RecycStartDate = Convert.ToDateTime(dic["RecycEndDate"].ToString()).AddDays(-360).ToString("yyyy-MM-dd HH:mm:ss");
                     dic["RecycStartDate"] = RecycStartDate;
                 }
 
+                //实际押金
+                string SeoKeyword = dic["SeoKeyword"].ToString();
+                if (SeoKeyword.Length > 2)
+                {
+                    SeoKeyword = (decimal.Parse(SeoKeyword) / 100).ToString();
+                }
+                dic["SeoKeyword"] = SeoKeyword;
+
+                //设置押金
+                string PrizeParams = dic["PrizeParams"].ToString();
+                dic["PrizeParams"] = PrizeParams;
+
+                //所属运营中心
+                int OpId = int.Parse(dic["OpId"].ToString());
+                if (OpId != 0)
+                {
+                    var sys = opdb.SysAdmin.FirstOrDefault(m => m.QueryCount > 0 && m.UserId == OpId) ?? new OpModels.SysAdmin();
+                    dic["OpCode"] = sys.OpCode;
+                }
 
             }
             Dictionary<string, object> other = new Dictionary<string, object>();

+ 633 - 7
Areas/Admin/Controllers/MainServer/StoreHouseController.cs

@@ -52,7 +52,7 @@ namespace MySystem.Areas.Admin.Controllers
         /// 仓库列表
         /// </summary>
         /// <returns></returns>
-        public JsonResult IndexData(StoreHouse data, string UserIdMakerCode, string UserIdRealName, string ManageUserIdRealName, string ManageUserIdMobile, string ManageUserIdMakerCode, string StoreStatusSelect, string CreateDateData, int ShowFlag = 0, int page = 1, int limit = 30)
+        public JsonResult IndexData(StoreHouse data, string UserIdMakerCode, string UserIdRealName, string ManageUserIdRealName, string ManageUserIdMobile, string ManageUserIdMakerCode, string StoreStatusSelect, string CreateDateData, string MakerCode, string YZOpCode, string OpStatusSelect, string StoreKindSelect, int ShowFlag = 0, int page = 1, int limit = 30)
         {
 
             Dictionary<string, string> Fields = new Dictionary<string, string>();
@@ -132,7 +132,7 @@ namespace MySystem.Areas.Admin.Controllers
             //仓库状态
             if (!string.IsNullOrEmpty(StoreStatusSelect))
             {
-                condition += " and StoreStatus=" + StoreStatusSelect;
+                condition += " and Status=" + StoreStatusSelect;
             }
             if (!string.IsNullOrEmpty(CreateDateData))
             {
@@ -141,7 +141,65 @@ namespace MySystem.Areas.Admin.Controllers
                 string end = datelist[1];
                 condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
             }
+            //下线创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+                if (userForMakerCode.UserId > 0)
+                {
+                    var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId);
+                    var users = db.Users.Where(m => m.ParentNav.Contains("," + user.Id.ToString() + ",")).ToList();
+                    string userIds = "";
+                    foreach (var item in users)
+                    {
+                        userIds += item.Id + ",";
+                    }
+                    userIds += user.Id;//下线创客Id包含自己
+                    string Id = "";
+                    DataTable dt = OtherMySqlConn.dtable("SELECT Id FROM StoreHouse WHERE UserId IN(" + userIds.TrimEnd(',') + ") AND `Status`=1 AND Sort=0 AND UserId>1");
+                    foreach (DataRow item in dt.Rows)
+                    {
+                        Id += item["Id"].ToString() + ",";
+                    }
+                    condition += " and Id in (" + Id.TrimEnd(',') + ")";
+
+                }
+            }
+            //运营中心编号
+            if (!string.IsNullOrEmpty(YZOpCode))
+            {
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == YZOpCode) ?? new OpModels.SysAdmin();
+                if (sysAdmin.Id > 0)
+                {
+                    condition += " and OpId=" + sysAdmin.UserId;
+                }
+            }
+            //是否关联
+            if (!string.IsNullOrEmpty(OpStatusSelect))
+            {
+                if (int.Parse(OpStatusSelect) > 0)
+                {
+                    condition += " and OpId>0";
+                }
+                else
+                {
+                    condition += " and OpId=0";
+
+                }
+            }
+            //是否运营仓
+            if (!string.IsNullOrEmpty(StoreKindSelect))
+            {
+                if (int.Parse(StoreKindSelect) > 0)
+                {
+                    condition += " and Sort>0 and StoreKind=2";
+                }
+                else
+                {
+                    condition += " and Sort=0 and StoreKind!=2";
 
+                }
+            }
 
             Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouse", Fields, "Id desc", "0", page, limit, condition);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
@@ -165,13 +223,14 @@ namespace MySystem.Areas.Admin.Controllers
                 if (StoreType == 0) dic["StoreType"] = "实体仓";
                 if (StoreType == 1) dic["StoreType"] = "虚拟仓";
                 //仓库状态
-                int StoreStatus = int.Parse(dic["StoreStatus"].ToString());
-                if (StoreStatus == 1) dic["StoreStatus"] = "启用";
-                if (StoreStatus == 0) dic["StoreStatus"] = "禁用";
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 1) dic["Status"] = "启用";
+                if (Status == 0) dic["Status"] = "禁用";
                 //仓库归属类型
                 int StoreKind = int.Parse(dic["StoreKind"].ToString());
                 if (StoreKind == 0) dic["StoreKind"] = "分仓";
                 if (StoreKind == 1) dic["StoreKind"] = "总仓";
+                if (StoreKind == 2) dic["StoreKind"] = "运营仓";
                 //小分仓
                 int Id = int.Parse(function.CheckInt(dic["Id"].ToString()));
                 int PreCount = db.PreSendStockDetail.Count(m => m.FromStoreId == Id && m.ApplyFlag == 0 && m.Status >= 0 && m.Status <= 1);
@@ -195,6 +254,12 @@ namespace MySystem.Areas.Admin.Controllers
                 dic["PromissAmount"] = PromissAmount.ToString();//担保金额
                 dic["ThisMonthPreAmount"] = ThisMonthPreAmount.ToString();//本月小分仓额度
                 dic["ValidPreAmount"] = ValidPreAmount.ToString();//可用小分仓额度
+
+                //是否关联
+                int OpId = int.Parse(dic["OpId"].ToString());
+                var opInfo = opdb.SysAdmin.FirstOrDefault(m => m.QueryCount > 0 && m.UserId == OpId) ?? new OpModels.SysAdmin();
+                if (OpId == 0) dic["OpIdStatus"] = "否";
+                if (OpId > 0) dic["OpIdStatus"] = opInfo.OpCode;
             }
             return Json(obj);
         }
@@ -236,6 +301,8 @@ namespace MySystem.Areas.Admin.Controllers
                     Dictionary<string, object> Fields = new Dictionary<string, object>();
                     Fields.Add("CreateMan", SysUserName); //创建人
                     Fields.Add("StoreName", data.StoreName); //仓库名称
+                    Fields.Add("FilePath", data.FilePath); //附件
+                    Fields.Add("Deposit", data.Deposit); //押金
                     UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
                     if (user == null)
                     {
@@ -262,13 +329,23 @@ namespace MySystem.Areas.Admin.Controllers
                     Fields.Add("StoreStatus", 1);
                     Fields.Add("Status", 1);
 
-                    var name = db.StoreHouse.FirstOrDefault(m => m.UserId == user.UserId && m.BrandId == BrandId && m.StoreName == data.StoreName);
+                    var name = db.StoreHouse.FirstOrDefault(m => m.UserId == user.UserId && m.BrandId == BrandId && m.StoreName == data.StoreName && m.OpId == 0);
                     if (name != null)
                     {
                         return "您的仓库名重复,请重新填写";
                     }
 
                     int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("StoreHouse", Fields, 0);
+                    //添加分仓创建时间
+                    var users = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users();
+                    if (users.Id > 0)
+                    {
+                        if (string.IsNullOrEmpty(users.CreateStoreDate.ToString()))
+                        {
+                            users.CreateStoreDate = DateTime.Now;
+                            db.SaveChanges();
+                        }
+                    }
                     StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
                     if (edit != null)
                     {
@@ -364,6 +441,8 @@ namespace MySystem.Areas.Admin.Controllers
             Dictionary<string, object> Fields = new Dictionary<string, object>();
             Fields.Add("CreateMan", SysUserName); //创建人
             Fields.Add("StoreName", data.StoreName); //仓库名称
+            Fields.Add("FilePath", data.FilePath); //附件
+            Fields.Add("Deposit", data.Deposit); //押金
             UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
             if (user == null)
             {
@@ -377,6 +456,60 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "您输入的仓库负责人编号不存在,请重新输入正确的仓库负责人编号";
             }
+            var store = db.StoreHouse.Where(m => m.Sort == 0 && m.Status == 1 && m.UserId == user.UserId).ToList();
+            var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == user.UserId) ?? new UserAccount();
+            if (userAccount.Id > 0)
+            {
+                userAccount.StoreDeposit = data.Deposit;
+                db.SaveChanges();
+            }
+            RedisDbconn.Instance.AddList("ResetStoreReserveQueue", user.UserId.ToString());
+            decimal olddeposit = 0;//旧押金
+            decimal newdeposit = 0;//新押金
+            var sto = db.StoreHouse.FirstOrDefault(m => m.Id == data.Id);
+            newdeposit = data.Deposit;
+            olddeposit = sto.Deposit;
+            if (sto.OpId > 0)
+            {
+                var amount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sto.OpId) ?? new OpModels.UserAccount();
+                if (newdeposit > olddeposit)
+                {
+                    var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                    {
+                        CreateDate = DateTime.Now,
+                        UserId = sto.OpId,
+                        SeoDescription = "分仓押金变更",
+                        OperateType = 1,
+                        UseAmount = newdeposit - olddeposit,
+                        BeforeAmount = amount.ValidAmount,
+                        AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
+                    }).Entity;
+                    opdb.SaveChanges();
+                }
+                if (newdeposit < olddeposit)
+                {
+                    var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                    {
+                        CreateDate = DateTime.Now,
+                        UserId = sto.OpId,
+                        SeoDescription = "分仓押金变更",
+                        OperateType = 2,
+                        UseAmount = olddeposit - newdeposit,
+                        BeforeAmount = amount.ValidAmount,
+                        AfterAmount = amount.ValidAmount + newdeposit - olddeposit,
+                    }).Entity;
+                    opdb.SaveChanges();
+                }
+                amount.ValidAmount -= sto.Deposit;
+                amount.ValidAmount += data.Deposit;
+                opdb.SaveChanges();
+            }
+            foreach (var item in store)
+            {
+                var storeInfo = store.FirstOrDefault(m => m.Id == item.Id);
+                storeInfo.Deposit = data.Deposit;
+                db.SaveChanges();
+            }
             Fields.Add("ManageUserId", manage.UserId); //仓库管理员
             Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
             Fields.Add("ManageMobile", data.ManageMobile);
@@ -434,7 +567,7 @@ namespace MySystem.Areas.Admin.Controllers
         {
             Dictionary<string, object> Fields = new Dictionary<string, object>();
             StoreHouse storeHouse = db.StoreHouse.FirstOrDefault(m => m.Id == data.Id);
-            var brand = db.StoreHouse.FirstOrDefault(m => m.UserId == storeHouse.UserId && m.BrandId == data.BrandId);
+            var brand = db.StoreHouse.FirstOrDefault(m => m.UserId == storeHouse.UserId && m.BrandId == data.BrandId && m.OpId == 0);
             if (brand != null)
             {
                 return "您已有该品牌类型的仓库,请重新选择";
@@ -463,6 +596,8 @@ namespace MySystem.Areas.Admin.Controllers
             Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
             Fields.Add("ManageMobile", data.ManageMobile);
             Fields.Add("Remark", data.Remark); //备注
+            Fields.Add("FilePath", data.FilePath); //附件
+            Fields.Add("Deposit", data.Deposit); //押金
             Fields.Add("LimitTopUserId", data.LimitTopUserId); //限制创客特殊仓库
             Fields.Add("StoreKind", data.StoreKind); //仓库归属类型
             int bid = Convert.ToInt32(data.BrandId);
@@ -473,6 +608,16 @@ namespace MySystem.Areas.Admin.Controllers
             Fields.Add("Status", 1);
 
             int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("StoreHouse", Fields, 0);
+            //添加分仓创建时间
+            var users = db.Users.FirstOrDefault(m => m.Id == user.UserId) ?? new Users();
+            if (users.Id > 0)
+            {
+                if (string.IsNullOrEmpty(users.CreateStoreDate.ToString()))
+                {
+                    users.CreateStoreDate = DateTime.Now;
+                    db.SaveChanges();
+                }
+            }
             StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
             if (edit != null)
             {
@@ -1402,5 +1547,486 @@ namespace MySystem.Areas.Admin.Controllers
 
         #endregion
 
+
+        #region 关联分仓
+
+        /// <summary>
+        /// 关联分仓
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult BatchSetting(string right, string StoreIds)
+        {
+            string[] idlist = StoreIds.Split(new char[] { ',' });
+            decimal totalAmount = 0;
+            decimal deposit = 0;
+            var userIds = "";
+            foreach (var item in idlist)
+            {
+                int StoreId = int.Parse(item);
+                var amount = 0;
+                var tamount = 0;
+                var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
+                var posCount = db.PosMachinesTwo.Count(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.OpId == 0);
+                var BrandId = int.Parse(storeInfo.BrandId);
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == BrandId);
+                if (brandInfo.Name.Contains("电签"))
+                {
+                    amount = 100;
+                }
+                if (brandInfo.Name.Contains("大POS"))
+                {
+                    amount = 150;
+                }
+                if (!userIds.Contains(storeInfo.UserId + ","))
+                {
+                    userIds += storeInfo.UserId + ",";
+                    deposit += storeInfo.Deposit;
+                }
+                tamount = amount * posCount;//扣减运营中心该品牌机具额度
+                totalAmount += tamount;//关联分仓打标记运营中心所需额度
+            }
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            // ViewBag.totalAmount = "关联分仓机具需要额度:" + totalAmount + "\n" + "关联分仓获得押金:" + deposit;
+            ViewBag.totalAmount = "关联分仓机具需要额度:" + totalAmount;
+            ViewBag.deposit = "关联分仓获得押金:" + deposit;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 关联分仓
+
+        /// <summary>
+        /// 关联分仓
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string BatchSetting(string Id, string MakerCode, string IsOk = "1")
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            AddSysLog(Id, "StoreHouse", "StoreHouseBatchSetting");
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == userForMakerCode.UserId) ?? new OpModels.SysAdmin();
+                Fields.Add("OpId", sysAdmin.UserId);
+                if (sysAdmin.Id > 0)
+                {
+                    var amount = 0;
+                    var tamount = 0;
+                    decimal deposit = 0;
+                    var pCount = 0;
+                    var userIds = "";
+                    string error = "";
+                    List<int> StoreIds = new List<int>();
+                    foreach (var items in idlist)
+                    {
+                        StoreIds.Add(int.Parse(items));
+                    }
+                    List<StoreHouse> StoreHouses = db.StoreHouse.Where(m => StoreIds.Contains(m.Id)).ToList();
+                    List<PosMachinesTwo> PosList = db.PosMachinesTwo.Where(m => StoreIds.Contains(m.StoreId) && m.UserId == 0 && m.BuyUserId == 0).ToList();
+                    List<KqProducts> ProductList = db.KqProducts.ToList();
+                    foreach (var items in idlist)
+                    {
+                        int StoreId = int.Parse(items);
+                        var storeInfo = StoreHouses.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2);
+                        if (storeInfo.OpId > 0)
+                        {
+                            error += "以下操作失败" + storeInfo.StoreNo + ',' + "请先解除该分仓的关联" + '\n';
+                        }
+                        else
+                        {
+                            var pos = PosList.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0).ToList();
+                            var posCount = pos.Count();
+                            var brandInfo = ProductList.FirstOrDefault(m => m.Id == int.Parse(storeInfo.BrandId));
+                            if (brandInfo.Name.Contains("电签"))
+                            {
+                                amount = 100;
+                            }
+                            if (brandInfo.Name.Contains("大POS"))
+                            {
+                                amount = 150;
+                            }
+                            if (!userIds.Contains(storeInfo.UserId + ","))
+                            {
+                                userIds += storeInfo.UserId + ",";
+                                deposit += storeInfo.Deposit;//增加分仓押金
+                            }
+                            tamount += amount * posCount;//扣减运营中心该品牌机具额度
+                            pCount += posCount;//添加总机具数
+                        }
+                    }
+                    if (!string.IsNullOrEmpty(error))
+                    {
+                        return "Warning|" + error;
+                    }
+                    var userAmount = opdb.UserAccount.FirstOrDefault(m => m.Sort == sysAdmin.Id) ?? new OpModels.UserAccount();
+                    decimal TotalAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount;//旧的总金额
+                    userAmount.ValidAmount += deposit;
+                    opdb.SaveChanges();
+                    decimal toAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount;//新的总金额
+                    if (toAmount >= tamount)
+                    {
+                        foreach (var item in idlist)
+                        {
+                            int StoreId = int.Parse(item);
+                            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, StoreId);
+                            var storeInfo = StoreHouses.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2);
+                            if (storeInfo.OpId == 0)
+                            {
+                                var pos = PosList.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0).ToList();
+                                var posCount = pos.Count();
+                                var BrandId = int.Parse(storeInfo.BrandId);
+                                var brandInfo = ProductList.FirstOrDefault(m => m.Id == BrandId);
+                                if (brandInfo.Name.Contains("电签"))
+                                {
+                                    amount = 100;
+                                }
+                                if (brandInfo.Name.Contains("大POS"))
+                                {
+                                    amount = 150;
+                                }
+                                if (IsOk == "1")
+                                {
+                                    foreach (var items in pos)
+                                    {
+                                        var posInfo = pos.FirstOrDefault(m => m.Id == items.Id) ?? new PosMachinesTwo();
+                                        posInfo.OpId = sysAdmin.UserId;
+                                        if (userAmount.ValidAmount - amount >= 0)
+                                        {
+                                            userAmount.ValidAmount -= amount;
+                                            posInfo.OpReserve3 += amount;
+                                            posInfo.OpReserve1 = 0;
+                                            posInfo.OpReserve2 = 0;
+                                            opdb.SaveChanges();
+                                        }
+                                        else
+                                        {
+                                            if (userAmount.TotalAmt - amount >= 0)
+                                            {
+                                                userAmount.TotalAmt -= amount - userAmount.ValidAmount;
+                                                posInfo.OpReserve3 = userAmount.ValidAmount;
+                                                posInfo.OpReserve1 = amount - userAmount.ValidAmount;
+                                                posInfo.OpReserve2 = 0;
+                                                opdb.SaveChanges();
+                                            }
+                                            else
+                                            {
+                                                if (userAmount.ValidForGetAmount - amount >= 0)
+                                                {
+                                                    userAmount.ValidForGetAmount -= amount - userAmount.TotalAmt;
+                                                    posInfo.OpReserve3 = 0;
+                                                    posInfo.OpReserve1 = userAmount.TotalAmt;
+                                                    posInfo.OpReserve2 = amount - userAmount.TotalAmt;
+                                                    opdb.SaveChanges();
+                                                }
+                                            }
+                                        }
+                                        db.SaveChanges();
+                                    }
+                                    sysAdmin.TotalMachineCount += posCount;//添加总机具数
+                                    opdb.SaveChanges();
+                                }
+                                storeInfo.OpId = sysAdmin.UserId;
+                                db.SaveChanges();
+
+                                var query = opdb.StoreForOperate.FirstOrDefault(m => m.OpId == sysAdmin.UserId && m.StoreId == StoreId && m.Sort == 0 && m.QueryCount == storeInfo.UserId && m.Status == 0);
+                                if (query == null)
+                                {
+                                    var user = db.Users.FirstOrDefault(m => m.Id == storeInfo.UserId) ?? new Users();
+                                    query = opdb.StoreForOperate.Add(new OpModels.StoreForOperate()
+                                    {
+                                        CreateDate = DateTime.Now, //创建时间
+                                        CreateMan = SysUserName + "_" + SysRealName,
+                                        QueryCount = storeInfo.UserId,//分仓所属人Id
+                                        SeoTitle = user.MakerCode,
+                                        SeoKeyword = storeInfo.StoreNo,
+                                        SeoDescription = storeInfo.StoreName,
+                                        OpId = sysAdmin.UserId,
+                                        StoreId = StoreId,
+                                    }).Entity;
+                                    opdb.SaveChanges();
+                                }
+                                //添加分仓创建时间
+                                var users = db.Users.FirstOrDefault(m => m.Id == storeInfo.UserId) ?? new Users();
+                                if (users.Id > 0)
+                                {
+                                    DataTable dt = OtherMySqlConn.dtable("SELECT CreateDate FROM StoreHouse WHERE UserId=" + users.Id + " AND `Status`>0 ORDER BY CreateDate LIMIT 1");
+                                    if (dt.Rows.Count > 0)
+                                    {
+                                        users.CreateStoreDate = DateTime.Parse(dt.Rows[0][0].ToString());
+                                        db.SaveChanges();
+                                    }
+                                }
+                            }
+                        }
+                        if (IsOk == "1")
+                        {
+                            if (deposit > tamount)
+                            {
+                                var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                                {
+                                    CreateDate = DateTime.Now,
+                                    UserId = sysAdmin.UserId,
+                                    SeoDescription = "关联分仓",
+                                    OperateType = 1,
+                                    UseAmount = deposit - tamount,
+                                    BeforeAmount = TotalAmount,
+                                    AfterAmount = TotalAmount + deposit - tamount,
+                                }).Entity;
+                            }
+                            if (deposit < tamount)
+                            {
+                                var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                                {
+                                    CreateDate = DateTime.Now,
+                                    UserId = sysAdmin.UserId,
+                                    SeoDescription = "关联分仓",
+                                    OperateType = 2,
+                                    UseAmount = tamount - deposit,
+                                    BeforeAmount = TotalAmount,
+                                    AfterAmount = TotalAmount + deposit - tamount,
+                                }).Entity;
+                            }
+                            opdb.SaveChanges();
+                        }
+                        sysAdmin.StoreCount += idlist.Count();//添加关联分仓数
+                        opdb.SaveChanges();
+                    }
+                    else
+                    {
+                        userAmount.ValidAmount -= deposit;
+                        opdb.SaveChanges();
+                        return "运营中心额度不足";
+                    }
+                }
+                else
+                {
+                    return "该创客未创建运营中心";
+                }
+            }
+            return "success";
+        }
+
+        //获取运营中心额度
+        public string GetReserve(string MakerCode)
+        {
+            UserForMakerCode userFor = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            OpModels.UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.Id == userFor.UserId) ?? new OpModels.UserAccount();
+            decimal TotalAmount = account.ValidAmount + account.TotalAmt + account.ValidForGetAmount;
+            return TotalAmount.ToString("f2");
+        }
+
+        #endregion
+
+
+        #region 取消关联
+
+        /// <summary>
+        /// 取消关联
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult BatchCancle(string right, string StoreIds)
+        {
+            string[] idlist = StoreIds.Split(new char[] { ',' });
+            decimal totalAmount = 0;
+            decimal deposit = 0;
+            var userIds = "";
+            foreach (var item in idlist)
+            {
+                int StoreId = int.Parse(item);
+                var amount = 0;
+                var tamount = 0;
+                var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
+                var posCount = db.PosMachinesTwo.Count(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.OpId == storeInfo.OpId);
+                var BrandId = int.Parse(storeInfo.BrandId);
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == BrandId);
+                if (brandInfo.Name.Contains("电签"))
+                {
+                    amount = 100;
+                }
+                if (brandInfo.Name.Contains("大POS"))
+                {
+                    amount = 150;
+                }
+                if (!userIds.Contains(storeInfo.UserId + ","))
+                {
+                    userIds += storeInfo.UserId + ",";
+                    deposit += storeInfo.Deposit;
+                }
+                tamount = amount * posCount;//增加运营中心该品牌机具额度
+                totalAmount += tamount;//取消关联分仓打标记运营中心所需额度
+            }
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.totalAmount = "取消关联机具获得额度:" + totalAmount;
+            ViewBag.deposit = "取消关联分仓扣除押金:" + deposit;
+            return View();
+        }
+
+        #endregion
+
+
+        #region 取消关联
+
+        /// <summary>
+        /// 取消关联
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string BatchCancle(string Id, string MakerCode, string IsOk = "1")
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            AddSysLog(Id, "StoreHouse", "StoreHouseBatchCancle");
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == userForMakerCode.UserId);
+                var userAmount = opdb.UserAccount.FirstOrDefault(m => m.Sort == sysAdmin.Id) ?? new OpModels.UserAccount();
+                decimal TotalAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount;//旧的总金额
+                Fields.Add("OpId", 0);
+                if (sysAdmin.Id > 0)
+                {
+                    var amount = 0;
+                    var tamount = 0;
+                    decimal deposit = 0;
+                    decimal ValidAmount = 0;
+                    decimal TotalAmt = 0;
+                    decimal ValidForGetAmount = 0;
+                    var pCount = 0;
+                    var userIds = "";
+                    string error = "";
+                    List<int> StoreIds = new List<int>();
+                    foreach (var items in idlist)
+                    {
+                        StoreIds.Add(int.Parse(items));
+                    }
+                    List<StoreHouse> StoreHouses = db.StoreHouse.Where(m => StoreIds.Contains(m.Id)).ToList();
+                    List<PosMachinesTwo> PosList = db.PosMachinesTwo.Where(m => StoreIds.Contains(m.StoreId) && m.UserId == 0 && m.BuyUserId == 0 && m.OpId > 0).ToList();
+                    List<KqProducts> ProductList = db.KqProducts.ToList();
+                    foreach (var item in idlist)
+                    {
+                        int StoreId = int.Parse(item);
+                        var store = StoreHouses.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2 && m.OpId == sysAdmin.UserId);
+                        if (store == null)
+                        {
+                            error += "分仓" + store.StoreNo + "未在创客" + MakerCode + "的关联分仓中";
+                        }
+                        else
+                        {
+                            var pos = PosList.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.OpId == sysAdmin.UserId).ToList();
+                            var posCount = pos.Count();
+                            var BrandId = int.Parse(store.BrandId);
+                            var brandInfo = ProductList.FirstOrDefault(m => m.Id == BrandId);
+                            if (brandInfo.Name.Contains("电签"))
+                            {
+                                amount = 100;
+                            }
+                            if (brandInfo.Name.Contains("大POS"))
+                            {
+                                amount = 150;
+                            }
+                            if (!userIds.Contains(store.UserId + ","))
+                            {
+                                userIds += store.UserId + ",";
+                                deposit += store.Deposit;//增加分仓押金
+                            }
+                            foreach (var items in pos)
+                            {
+                                var posInfo = pos.FirstOrDefault(m => m.Id == items.Id) ?? new PosMachinesTwo();
+                                ValidAmount += posInfo.OpReserve3;
+                                TotalAmt += posInfo.OpReserve1;
+                                ValidForGetAmount += posInfo.OpReserve2;
+                            }
+                            tamount += amount * posCount;//扣减运营中心该品牌机具额度
+                            pCount += posCount;//添加总机具数
+                        }
+                    }
+                    if (!string.IsNullOrEmpty(error))
+                    {
+                        return "Warning|" + error;
+                    }
+                    decimal toAmount = userAmount.ValidAmount + userAmount.TotalAmt + userAmount.ValidForGetAmount + ValidAmount + TotalAmt + ValidForGetAmount;//新的总金额
+                    if (toAmount >= deposit)
+                    {
+                        foreach (var item in idlist)
+                        {
+                            int StoreId = int.Parse(item);
+                            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, StoreId);
+                            db.SaveChanges();
+                            var store = StoreHouses.FirstOrDefault(m => m.Id == StoreId && m.StoreKind != 2);
+                            var pos = PosList.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.OpId == sysAdmin.UserId).ToList();
+                            foreach (var items in pos)
+                            {
+                                var posInfo = pos.FirstOrDefault(m => m.Id == items.Id) ?? new PosMachinesTwo();
+                                posInfo.OpReserve3 = 0;
+                                posInfo.OpReserve1 = 0;
+                                posInfo.OpReserve2 = 0;
+                                posInfo.OpId = 0;
+                                db.SaveChanges();
+                            }
+                            var query = opdb.StoreForOperate.FirstOrDefault(m => m.Status == 0 && m.OpId == sysAdmin.UserId && m.StoreId == StoreId && m.Sort == 0 && m.QueryCount == store.UserId);
+                            if (query != null)
+                            {
+                                query.UpdateDate = DateTime.Now;
+                                query.UpdateMan = SysUserName + "_" + SysRealName;
+                                query.Status = -1;
+                                opdb.SaveChanges();
+                            }
+                        }
+                        userAmount.ValidAmount -= deposit;//扣减关联分仓押金
+                        userAmount.ValidAmount += ValidAmount;
+                        userAmount.TotalAmt += TotalAmt;
+                        userAmount.ValidForGetAmount += ValidForGetAmount;
+
+                        sysAdmin.StoreCount -= idlist.Count();//减少关联分仓数
+                        sysAdmin.TotalMachineCount -= pCount;//减少关联分仓机具数
+                        if (deposit > tamount)
+                        {
+                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                            {
+                                CreateDate = DateTime.Now,
+                                UserId = sysAdmin.UserId,
+                                SeoDescription = "取消关联分仓",
+                                OperateType = 2,
+                                UseAmount = deposit - tamount,
+                                BeforeAmount = TotalAmount,
+                                AfterAmount = TotalAmount - deposit + tamount,
+                            }).Entity;
+                        }
+                        if (deposit < tamount)
+                        {
+                            var amoutRecord = opdb.AmountRecord.Add(new OpModels.AmountRecord
+                            {
+                                CreateDate = DateTime.Now,
+                                UserId = sysAdmin.UserId,
+                                SeoDescription = "取消关联分仓",
+                                OperateType = 1,
+                                UseAmount = tamount - deposit,
+                                BeforeAmount = TotalAmount,
+                                AfterAmount = TotalAmount - deposit + tamount,
+                            }).Entity;
+                        }
+                        opdb.SaveChanges();
+                    }
+                    else
+                    {
+                        return "运营中心额度不足";
+                    }
+                }
+            }
+            else
+            {
+                return "该创客未创建运营中心";
+            }
+            return "success";
+        }
+
+        #endregion
+
     }
 }

+ 1 - 1
Areas/Admin/Controllers/MainServer/StoreMachineApplyController.cs

@@ -653,7 +653,7 @@ namespace MySystem.Areas.Admin.Controllers
                 tostore = db.StoreHouse.FirstOrDefault(m => m.UserId == apply.UserId && m.BrandId == BrandId.ToString() && m.Status > -1);
 
                 MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
-                PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
+                PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId == 0 && m.UserId == 0 && m.PreUserId == 0) ?? new PosMachinesTwo();
                 if (machine.Id > 0)
                 {
                     if (machine.BrandId != BrandId)

+ 392 - 21
Areas/Admin/Controllers/MainServer/SysToolsController.cs

@@ -63,12 +63,12 @@ namespace MySystem.Areas.Admin.Controllers
                 Users user = db.Users.FirstOrDefault(m => m.MakerCode == MakerCode);
                 if (user != null)
                 {
+                    user.ParentUserId = puser.Id;
+                    user.ParentNav = puser.ParentNav + "," + puser.Id + ",";
                     if (IsTeam == 1)
                     {
-                        RelationForUserSub(user.Id, user);
+                        RelationForUserSub(db, user.Id, user);
                     }
-                    user.ParentUserId = puser.Id;
-                    user.ParentNav = puser.ParentNav + "," + puser.Id + ",";
                     db.SaveChanges();
                     function.WriteLog(DateTime.Now.ToString() + ":下级:" + MakerCode + ", 上级:" + ParentMakerCode, "换线日志");
                     return "success";
@@ -77,18 +77,17 @@ namespace MySystem.Areas.Admin.Controllers
             }
             return "上级创客编号不存在";
         }
-        private void RelationForUserSub(int ParentUserId, Users puser)
+        private void RelationForUserSub(WebCMSEntities dbnew, int ParentUserId, Users puser)
         {
-            var subusers = db.Users.Select(m => new { m.Id, m.ParentUserId, m.ParentNav }).Where(m => m.ParentUserId == ParentUserId).ToList();
+            var subusers = dbnew.Users.Select(m => new { m.Id, m.ParentUserId, m.ParentNav }).Where(m => m.ParentUserId == ParentUserId).ToList();
             foreach (var subuser in subusers)
             {
-                Users user = db.Users.FirstOrDefault(m => m.Id == subuser.Id);
+                Users user = dbnew.Users.FirstOrDefault(m => m.Id == subuser.Id);
                 if (user != null)
                 {
                     user.ParentUserId = puser.Id;
                     user.ParentNav = puser.ParentNav + "," + puser.Id + ",";
-                    db.SaveChanges();
-                    RelationForUserSub(user.Id, user);
+                    RelationForUserSub(dbnew, user.Id, user);
                 }
             }
         }
@@ -1012,7 +1011,10 @@ namespace MySystem.Areas.Admin.Controllers
                     DepositUsers = "创客编号:" + user.MakerCode + ",姓名:" + user.RealName + ",手机号:" + user.Mobile;
                 }
                 string ActiveTimes = rewards.CreateDate == null ? "" : rewards.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss");
+                var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == pos.StoreId) ?? new StoreHouse();
                 string results = "该机具为故障机" + "\n";
+                results += "所在仓库:" + storeInfo.StoreNo + "\n";
+                results += "仓库名称:" + storeInfo.StoreName + "\n";
                 results += "押金返现实际返现对象:" + DepositUsers + "\n";
                 results += "押金:" + Deposits + "\n";
                 results += "是否返现:" + DepositGets + ",领取时间:" + ActiveTimes + "\n";
@@ -3229,12 +3231,6 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "真实姓名";
             }
-            WebCMSEntities maindb = new WebCMSEntities();
-            bool checkCertId = maindb.Users.Any(m => m.CertId == idcard);
-            if (checkCertId)
-            {
-                return "您输入的身份证号已经认证过了,请更换身份证";
-            }
             String querys = "bankcard=" + bankcard + "&idcard=" + idcard + "&name=" + name;
             function.WriteLog(DateTime.Now.ToString(), "验证三要素日志");
             function.WriteLog(querys, "验证三要素日志");
@@ -3322,12 +3318,6 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 return "请输入真实姓名";
             }
-            WebCMSEntities maindb = new WebCMSEntities();
-            bool checkCertId = maindb.Users.Any(m => m.CertId == idcard);
-            if (checkCertId)
-            {
-                return "您输入的身份证号已经认证过了,请更换身份证";
-            }
             String querys = "bankcard=" + bankcard + "&idcard=" + idcard + "&mobile=" + mobile + "&name=" + name;
             function.WriteLog(DateTime.Now.ToString(), "验证四要素日志");
             function.WriteLog(querys, "验证四要素日志");
@@ -3376,7 +3366,7 @@ namespace MySystem.Areas.Admin.Controllers
             result = jsonObj["data"]["desc"].ToString();
             function.WriteLog(result, "验证四要素日志");
             function.WriteLog("\n\n", "验证四要素日志");
-            return  result;
+            return result;
 
         }
         #endregion
@@ -3387,5 +3377,386 @@ namespace MySystem.Areas.Admin.Controllers
             return true;
         }
 
+
+        #region 根据机具号同步商户激活状态
+
+        public IActionResult SyncMerchantStatus(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [HttpPost]
+        public string SyncMerchantStatusDo(string PosSn)
+        {
+
+            if (string.IsNullOrEmpty(PosSn))
+            {
+                return "请输入机具号";
+            }
+            var pos = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
+            var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == pos.SnId) ?? new PosMachinesTwo();
+            var posMerchant = db.PosMerchantInfo.FirstOrDefault(m => m.Id == posInfo.BindMerchantId) ?? new PosMerchantInfo();
+            if (posInfo.Id == 0)
+            {
+                return "机具" + PosSn + "不存在";
+            }
+            if (posMerchant.Id == 0)
+            {
+                return "机具绑定商户不存在";
+            }
+            else
+            {
+                posMerchant.ActiveStatus = 1;
+                posMerchant.UpdateDate = DateTime.Now;
+                posMerchant.MerStandardDate = posInfo.ActivationTime;
+                function.WriteLog(DateTime.Now.ToString() + ":请求参数," + PosSn + ":" + SysUserName + "-" + SysRealName, "根据机具号同步商户激活状态");
+                db.SaveChanges();
+            }
+
+            return "success";
+
+        }
+        #endregion
+
+
+
+        #region 根据机具号补发开机奖励
+
+        public IActionResult PosRewardReissued(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [HttpPost]
+        public string PosRewardReissuedDo(string PosSn)
+        {
+            if (string.IsNullOrEmpty(PosSn))
+            {
+                return "请输入机具SN";
+            }
+            string[] PosSnList = PosSn.Split('\n');
+            var PosId = "";
+            var error = "";
+            foreach (var item in PosSnList)
+            {
+                var pos = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == item) ?? new MachineForSnNo();
+                var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == pos.SnId) ?? new PosMachinesTwo();
+                bool checkExist = db.OpenRewardDetail.Any(m => m.SnNo == item);
+                if (checkExist)
+                {
+                    error += "以下操作失败" + item + ',' + "该机具开机奖励已发,请勿再次操作" + '\n';
+                }
+                else
+                {
+                    if (posInfo.Id > 0)
+                    {
+                        PosId += posInfo.Id + ",";
+                    }
+
+                }
+            }
+            if (!string.IsNullOrEmpty(error))
+            {
+                return "Warning|" + error;
+            }
+            PosId = PosId.TrimEnd(',');
+            function.WriteLog(DateTime.Now.ToString() + ":请求参数," + PosId + ":" + SysUserName + "-" + SysRealName, "根据机具号补发开机奖励");
+
+            RedisDbconn.Instance.AddList("OpenRewardQueue", PosId);
+            return "success";
+        }
+        #endregion
+
+
+        #region 根据机具号设置费率
+
+        public IActionResult SetPosFee(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [HttpPost]
+        public string SetPosFeeDo(string PosSn, string FeeType)
+        {
+            if (string.IsNullOrEmpty(PosSn))
+            {
+                return "请输入机具SN";
+            }
+            if (string.IsNullOrEmpty(FeeType))
+            {
+                return "请输入选择费率";
+            }
+            if (FeeType == "0")
+            {
+                FeeType = "0.6";
+            }
+            if (FeeType == "1")
+            {
+                FeeType = "0.63";
+            }
+
+            string[] PosSnList = PosSn.Split('\n');
+            var PosId = "";
+            var RecordId = "";
+            var error = "";
+            foreach (var item in PosSnList)
+            {
+                var pos = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == item) ?? new MachineForSnNo();
+                var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == pos.SnId) ?? new PosMachinesTwo();
+                if (posInfo.Id > 0)
+                {
+                    var query = db.PosMachinesFeeChangeRecord.Add(new PosMachinesFeeChangeRecord()
+                    {
+                        Sort = posInfo.BrandId,
+                        CreateDate = DateTime.Now,
+                        PosId = posInfo.Id,
+                        PosSn = posInfo.PosSn,
+                        PosUserId = posInfo.UserId,
+                        MerchantId = posInfo.BindMerchantId,
+                        UserId = posInfo.UserId,
+                        ChangeFee = decimal.Parse(FeeType),
+
+                    }).Entity;
+                    db.SaveChanges();
+                    PosId += posInfo.Id + ",";
+                    RecordId += query.Id + ",";
+                }
+                else
+                {
+                    error += "机具" + PosSn + "不存在";
+                }
+            }
+            if (!string.IsNullOrEmpty(error))
+            {
+                return "Warning|" + error;
+            }
+            PosId = PosId.TrimEnd(',');
+            function.WriteLog(DateTime.Now.ToString() + ":请求参数," + PosId + ":" + SysUserName + "-" + SysRealName, "根据机具号设置费率");
+
+            string data = "{\"RecordId\":\"" + RecordId + "\",\"PosId\":\"" + PosId + "\",\"Fee\": \"" + FeeType + "\",\"Kind\": \"2\",\"OpMan\": \"系统\"}";
+            RedisDbconn.Instance.AddList("SetDepositPostQueue", data);
+            return "success";
+        }
+        #endregion
+
+
+        #region 根据机具号、商户号、商户姓名关联商户和机具信息
+
+        public IActionResult RelationPosAndMerchant(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [HttpPost]
+        public string RelationPosAndMerchantDo(string PosSn, string MerchantNo, string MerchantName)
+        {
+            if (string.IsNullOrEmpty(PosSn))
+            {
+                return "请输入机具SN";
+            }
+            if (string.IsNullOrEmpty(MerchantNo))
+            {
+                return "请输入商户编号";
+            }
+            if (string.IsNullOrEmpty(MerchantName))
+            {
+                return "请输入商户姓名";
+            }
+            var query = PosSn + "," + MerchantNo + "," + MerchantName;
+            var posMerchant = db.PosMerchantInfo.FirstOrDefault(m => m.MerchantNo == MerchantNo && m.MerchantName == MerchantName) ?? new PosMerchantInfo();
+            var machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == posMerchant.KqSnNo) ?? new MachineForSnNo();
+            var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId) ?? new PosMachinesTwo();
+            if (posMerchant.Id == 0)
+            {
+                return "商户" + MerchantNo + "不存在";
+            }
+            if (pos.Id == 0)
+            {
+                return "机具" + PosSn + "不存在";
+            }
+            else
+            {
+                pos.BindMerchantId = posMerchant.Id;
+                db.SaveChanges();
+                function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "根据机具号、商户号、商户姓名关联");
+            }
+
+            return "success";
+        }
+        #endregion
+
+
+        #region 认证创客
+
+        public IActionResult AuthMaker(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [HttpPost]
+        public string AuthMakerDo(string MakerCode, string RealName, string CertId, string BackCard, string BackName)
+        {
+            if (string.IsNullOrEmpty(MakerCode))
+            {
+                return "请输入创客编号";
+            }
+            if (string.IsNullOrEmpty(RealName))
+            {
+                return "请输入真实姓名";
+            }
+            if (string.IsNullOrEmpty(CertId))
+            {
+                return "请输入身份证号";
+            }
+            if (string.IsNullOrEmpty(BackCard))
+            {
+                return "请输入银行卡号";
+            }
+            if (string.IsNullOrEmpty(BackName))
+            {
+                return "请输入银行名称";
+            }
+            var query = MakerCode + "," + RealName + "," + CertId + "," + BackCard + "," + BackName;
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            var userInfo = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
+            if (userInfo.AuthFlag == 1)
+            {
+                return "已认证";
+            }
+            else
+            {
+                userInfo.UpdateDate = DateTime.Now;
+                userInfo.RealName = RealName;
+                userInfo.CertId = CertId;
+                userInfo.SettleBankCardNo = BackCard;
+                userInfo.SettleBankCardName = BackName;
+                db.SaveChanges();
+                function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "认证创客");
+
+            }
+
+            return "success";
+        }
+        #endregion
+
+
+        #region 划拨创客机具
+
+        public IActionResult TransferPos(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [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)
+            {
+                posInfo.BuyUserId = tUserId.Id;
+                posInfo.UserId = tUserId.Id;
+                db.SaveChanges();
+                function.WriteLog(DateTime.Now.ToString() + ":请求参数," + query + ":" + SysUserName + "-" + SysRealName, "划拨创客机具");
+            }
+            else
+            {
+                return "机具" + PosSn + "已使用";
+            }
+
+            return "success";
+        }
+        #endregion
+
+
+        #region 还原提现订单状态
+
+        public IActionResult RestoreStatus(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        [HttpPost]
+        public string RestoreStatusDo(string OrderNo)
+        {
+            if (string.IsNullOrEmpty(OrderNo))
+            {
+                return "请输入提现订单编号";
+            }
+            string[] OrderNoList = OrderNo.Replace("\r","").Split('\n');
+            var error = "";
+            foreach (var item in OrderNoList)
+            {
+                var cash = db.UserCashRecord.FirstOrDefault(m => m.CashOrderNo == item) ?? new UserCashRecord();
+                if (cash.Id > 0)
+                {
+                    cash.QueryCount = 0;
+                    cash.Status = 0;
+                    db.SaveChanges();
+                }
+                else
+                {
+                    error += "订单" + item + "不存在" + '\n';
+                }
+            }
+            if (!string.IsNullOrEmpty(error))
+            {
+                return "Warning|" + error;
+            }
+            return "success";
+        }
+        #endregion
+
+
     }
 }

+ 29 - 3
Areas/Admin/Controllers/MainServer/TradeDaySummaryController.cs

@@ -172,20 +172,26 @@ namespace MySystem.Areas.Admin.Controllers
             Dictionary<string, object> other = new Dictionary<string, object>();
             string HelpDirectTradeAmt = "0.00";//扶持期直营商户交易总额
             string HelpNonDirectTradeAmt = "0.00";//扶持期非直营商户交易总额
+            string ProfitDirectTradeAmt = "0.00";//盈利期非直营商户交易总额
             string NotHelpDirectTradeAmt = "0.00";//非扶持期直营商户交易总额
             string NotHelpNonDirectTradeAmt = "0.00";//非扶持期非直营商户交易总额
-            DataTable dt = OtherMySqlConn.dtable("SELECT SUM(HelpDirectTradeAmt),SUM(HelpNonDirectTradeAmt),SUM(NotHelpDirectTradeAmt),SUM(NotHelpNonDirectTradeAmt) FROM TradeDaySummary where 1=1" + condition);
+            string ProfitNonDirectTradeAmt = "0.00";//盈利期非直营商户交易总额
+            DataTable dt = OtherMySqlConn.dtable("SELECT SUM(HelpDirectTradeAmt),SUM(HelpNonDirectTradeAmt),SUM(ProfitDirectTradeAmt),SUM(NotHelpDirectTradeAmt),SUM(NotHelpNonDirectTradeAmt),SUM(ProfitNonDirectTradeAmt)  FROM TradeDaySummary where 1=1" + condition);
             if (dt.Rows.Count > 0)
             {
                 HelpDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
                 HelpNonDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
-                NotHelpDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
-                NotHelpNonDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][3].ToString())).ToString("f2");
+                ProfitDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
+                NotHelpDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][3].ToString())).ToString("f2");
+                NotHelpNonDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][4].ToString())).ToString("f2");
+                ProfitNonDirectTradeAmt = decimal.Parse(function.CheckNum(dt.Rows[0][5].ToString())).ToString("f2");
             }
             other.Add("HelpDirectTradeAmt", HelpDirectTradeAmt);
             other.Add("HelpNonDirectTradeAmt", HelpNonDirectTradeAmt);
+            other.Add("ProfitDirectTradeAmt", ProfitDirectTradeAmt);
             other.Add("NotHelpDirectTradeAmt", NotHelpDirectTradeAmt);
             other.Add("NotHelpNonDirectTradeAmt", NotHelpNonDirectTradeAmt);
+            other.Add("ProfitNonDirectTradeAmt", ProfitNonDirectTradeAmt);
             obj.Add("other", other);
             return Json(obj);
         }
@@ -464,6 +470,7 @@ namespace MySystem.Areas.Admin.Controllers
             ReturnFields.Add("NotHelpNonDirectQrDebitTradeAmt", "非直营云闪付非封顶借记卡(非扶持期)");
             ReturnFields.Add("NotHelpDirectNonQrDebitTradeAmt", "直营非云闪付非封顶借记卡(非扶持期)");
             ReturnFields.Add("NotHelpNonDirectNonQrDebitTradeAmt", "非直营非云闪付非封顶借记卡(非扶持期)");
+
             ReturnFields.Add("HelpDirectTradeAmt", "直营商户交易总额(扶持期)");
             ReturnFields.Add("HelpNonDirectTradeAmt", "非直营商户交易总额(扶持期)");
             ReturnFields.Add("HelpDirectCreditTradeAmt", "直营贷记卡交易总额(扶持期)");
@@ -482,6 +489,25 @@ namespace MySystem.Areas.Admin.Controllers
             ReturnFields.Add("HelpNonDirectQrDebitTradeAmt", "非直营云闪付非封顶借记卡(扶持期)");
             ReturnFields.Add("HelpDirectNonQrDebitTradeAmt", "直营非云闪付非封顶借记卡(扶持期)");
             ReturnFields.Add("HelpNonDirectNonQrDebitTradeAmt", "非直营非云闪付非封顶借记卡(扶持期)");
+            
+            ReturnFields.Add("ProfitDirectTradeAmt", "直营商户交易总额(盈利期)");
+            ReturnFields.Add("ProfitNonDirectTradeAmt", "非直营商户交易总额(盈利期)");
+            ReturnFields.Add("ProfitDirectCreditTradeAmt", "直营贷记卡交易总额(盈利期)");
+            ReturnFields.Add("ProfitNonDirectCreditTradeAmt", "非直营贷记卡交易总额(盈利期)");
+            ReturnFields.Add("ProfitDirectQrCreditTradeAmt", "直营云闪付贷记卡交易额(盈利期)");
+            ReturnFields.Add("ProfitNonDirectQrCreditTradeAmt", "非直营云闪付贷记卡交易额(盈利期)");
+            ReturnFields.Add("ProfitDirectNonQrCreditTradeAmt", "直营非云闪付贷记卡交易额(盈利期)");
+            ReturnFields.Add("ProfitNonDirectNonQrCreditTradeAmt", "非直营非云闪付贷记卡交易额(盈利期)");
+            ReturnFields.Add("ProfitDirectDebitTradeAmt", "直营商户借记卡交易总额(盈利期)");
+            ReturnFields.Add("ProfitDirectDebitCapTradeAmt", "直营商户借记卡封顶交易总金额(盈利期)");
+            ReturnFields.Add("ProfitDirectDebitCapNum", "直营商户借记卡封顶交易总数(盈利期)");
+            ReturnFields.Add("ProfitNonDirectDebitTradeAmt", "非直营商户借记卡交易总额(盈利期)");
+            ReturnFields.Add("ProfitNonDirectDebitCapTradeAmt", "非直营商户借记卡封顶交易总金额(盈利期)");
+            ReturnFields.Add("ProfitNonDirectDebitCapNum", "非直营商户借记卡封顶交易总数(盈利期)");
+            ReturnFields.Add("ProfitDirectQrDebitTradeAmt", "直营云闪付非封顶借记卡(盈利期)");
+            ReturnFields.Add("ProfitNonDirectQrDebitTradeAmt", "非直营云闪付非封顶借记卡(盈利期)");
+            ReturnFields.Add("ProfitDirectNonQrDebitTradeAmt", "直营非云闪付非封顶借记卡(盈利期)");
+            ReturnFields.Add("ProfitNonDirectNonQrDebitTradeAmt", "非直营非云闪付非封顶借记卡(盈利期)");
 
             result.Add("Fields", ReturnFields);
             AddSysLog("0", "TradeDaySummary", "ExportExcel");

+ 20 - 2
Areas/Admin/Controllers/MainServer/UserAccountRecordController.cs

@@ -412,13 +412,13 @@ namespace MySystem.Areas.Admin.Controllers
         /// 导出Excel
         /// </summary>
         /// <returns></returns>
-        public JsonResult ExportExcel(UserAccountRecord data, string MakerCode, string RealName, int TopUserId, int UserId)
+        public JsonResult ExportExcel(UserAccountRecord data, string MakerCode, string RealName, string CreateDateData, int TopUserId, int UserId)
         {
             Dictionary<string, string> Fields = new Dictionary<string, string>();
             Fields.Add("ChangeType", "1"); //交易类型
             Fields.Add("ProductType", "1"); //产品类型
             Fields.Add("TransRecordNo", "3"); //交易流水编号
-            Fields.Add("CreateDate", "3"); //交易时间
+            // Fields.Add("CreateDate", "3"); //交易时间
 
             string condition = " and Status>-1";
             //创客编号
@@ -440,6 +440,24 @@ namespace MySystem.Areas.Admin.Controllers
             {
                 condition += " and UserId=" + UserId;
             }
+            if (!string.IsNullOrEmpty(CreateDateData))
+            {
+                string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                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 = db.UserAccountRecord.Any(m => m.CreateDate >= start);
+                var checks = db.UserAccountRecord.Any(m => m.CreateDate <= end);
+                if (check)
+                {
+                    var sId = db.UserAccountRecord.Where(m => m.CreateDate >= start).Min(m => m.Id);
+                    condition += "  and Id >=" + sId;
+                }
+                if (checks)
+                {
+                    var eId = db.UserAccountRecord.Where(m => m.CreateDate <= end).Max(m => m.Id);
+                    condition += " and Id <=" + eId;
+                }
+            }
 
             Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("UserAccountRecord", Fields, "Id desc", "0", 1, 20000, condition, "UserId,ProductType,TransRecordNo,ChangeType,ChangeAmount,Remark,BeforeTotalAmount,AfterTotalAmount,BeforeFreezeAmount,AfterFreezeAmount,BeforeBalanceAmount,AfterBalanceAmount,CreateDate", false);
             List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;

+ 10 - 1
Areas/Admin/Controllers/MainServer/UserCashRecordController.cs

@@ -168,12 +168,18 @@ namespace MySystem.Areas.Admin.Controllers
             string WaitAmount = "0.00";//待处理总金额
             string SuccessAmount = "0.00";//提现成功总金额
             string FailAmount = "0.00";//提现失败总金额
-            DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(Status=0,TradeAmount,0)),SUM(if(Status=1,TradeAmount,0)),SUM(if(Status=2,TradeAmount,0)) FROM UserCashRecord where 1=1 " + condition);
+            string WaitTaxAmount = "0.00";//待处理总金额(税后)
+            string SuccessTaxAmount = "0.00";//提现成功总金额(税后)
+            string FailTaxAmount= "0.00";//提现失败总金额(税后)
+            DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(Status=0,TradeAmount,0)),SUM(if(Status=1,TradeAmount,0)),SUM(if(Status=2,TradeAmount,0)),SUM(if(Status=0,ActualTradeAmount,0)),SUM(if(Status=1,ActualTradeAmount,0)),SUM(if(Status=2,ActualTradeAmount,0)) FROM UserCashRecord where 1=1 " + condition);
             if (dt.Rows.Count > 0)
             {
                 WaitAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
                 SuccessAmount = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
                 FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
+                WaitTaxAmount = decimal.Parse(function.CheckNum(dt.Rows[0][3].ToString())).ToString("f2");
+                SuccessTaxAmount = decimal.Parse(function.CheckNum(dt.Rows[0][4].ToString())).ToString("f2");
+                FailTaxAmount = decimal.Parse(function.CheckNum(dt.Rows[0][5].ToString())).ToString("f2");
             }
             // dt = OtherMySqlConn.dtable("select sum(TradeAmount) from UserCashRecord where Status=1" + condition);
             // if (dt.Rows.Count > 0)
@@ -188,6 +194,9 @@ namespace MySystem.Areas.Admin.Controllers
             other.Add("WaitAmount", WaitAmount);
             other.Add("SuccessAmount", SuccessAmount);
             other.Add("FailAmount", FailAmount);
+            other.Add("WaitTaxAmount", WaitTaxAmount);
+            other.Add("SuccessTaxAmount", SuccessTaxAmount);
+            other.Add("FailTaxAmount", FailTaxAmount);
             obj.Add("other", other);
             return Json(obj);
         }

+ 23 - 6
Areas/Admin/Controllers/MainServer/UserTradeDaySummaryController.cs

@@ -148,37 +148,50 @@ namespace MySystem.Areas.Admin.Controllers
             Dictionary<string, object> other = new Dictionary<string, object>();
             string HelpDirectTradeAmt = "0.00"; //扶持期直营贷记卡交易
             string NotHelpDirectTradeAmt = "0.00"; //稳定期直营贷记卡交易
+            string ProfitDirectCreditTradeAmt = "0.00"; //盈利期直营贷记卡交易
             string HelpDirectDebitTradeAmt = "0.00"; //扶持期直营借记卡交易
             string NotHelpDirectDebitTradeAmt = "0.00"; //稳定期直营借记卡交易
+            string ProfitDirectDebitTradeAmt = "0.00"; //盈利期直营借记卡交易
+
             string HelpNonDirectTradeAmt = "0.00"; //扶持期非直营贷记卡交易
             string NotHelpNonDirectTradeAmt = "0.00"; //稳定期非直营贷记卡交易
+            string ProfitNonDirectCreditTradeAmt = "0.00"; //盈利期非直营贷记卡交易
             string HelpNonDirectDebitTradeAmt = "0.00"; //扶持期非直营借记卡交易
             string NotHelpNonDirectDebitTradeAmt = "0.00"; //稳定期非直营借记卡交易
+            string ProfitNonDirectDebitTradeAmt = "0.00"; //盈利期非直营借记卡交易
 
-            DataTable dt = OtherMySqlConn.dtable("select sum(HelpDirectTradeAmt),sum(NotHelpDirectTradeAmt),sum(HelpDirectDebitTradeAmt),sum(NotHelpDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='self' " + condition);
+            DataTable dt = OtherMySqlConn.dtable("select sum(HelpDirectTradeAmt),sum(NotHelpDirectTradeAmt),sum(ProfitDirectCreditTradeAmt),sum(HelpDirectDebitTradeAmt),sum(NotHelpDirectDebitTradeAmt),sum(ProfitDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='self' " + condition);
             if (dt.Rows.Count > 0)
             {
                 HelpDirectTradeAmt = dt.Rows[0][0].ToString();
                 NotHelpDirectTradeAmt = dt.Rows[0][1].ToString();
-                HelpDirectDebitTradeAmt = dt.Rows[0][2].ToString();
-                NotHelpDirectDebitTradeAmt = dt.Rows[0][3].ToString();
+                ProfitDirectCreditTradeAmt = dt.Rows[0][2].ToString();
+                HelpDirectDebitTradeAmt = dt.Rows[0][3].ToString();
+                NotHelpDirectDebitTradeAmt = dt.Rows[0][4].ToString();
+                ProfitDirectDebitTradeAmt = dt.Rows[0][5].ToString();
             }
-            dt = OtherMySqlConn.dtable("select sum(HelpNonDirectTradeAmt),sum(NotHelpNonDirectTradeAmt),sum(HelpNonDirectDebitTradeAmt),sum(NotHelpNonDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='team' " + condition);
+            dt = OtherMySqlConn.dtable("select sum(HelpNonDirectTradeAmt),sum(NotHelpNonDirectTradeAmt),sum(ProfitNonDirectCreditTradeAmt),sum(HelpNonDirectDebitTradeAmt),sum(NotHelpNonDirectDebitTradeAmt),sum(ProfitNonDirectDebitTradeAmt) from TradeDaySummary where SeoTitle='team' " + condition);
             if (dt.Rows.Count > 0)
             {
                 HelpNonDirectTradeAmt = dt.Rows[0][0].ToString();
                 NotHelpNonDirectTradeAmt = dt.Rows[0][1].ToString();
-                HelpNonDirectDebitTradeAmt = dt.Rows[0][2].ToString();
-                NotHelpNonDirectDebitTradeAmt = dt.Rows[0][3].ToString();
+                ProfitNonDirectCreditTradeAmt = dt.Rows[0][2].ToString();
+                HelpNonDirectDebitTradeAmt = dt.Rows[0][3].ToString();
+                NotHelpNonDirectDebitTradeAmt = dt.Rows[0][4].ToString();
+                ProfitNonDirectDebitTradeAmt = dt.Rows[0][5].ToString();
             }
             other.Add("HelpDirectTradeAmt", HelpDirectTradeAmt);
             other.Add("NotHelpDirectTradeAmt", NotHelpDirectTradeAmt);
+            other.Add("ProfitDirectCreditTradeAmt", ProfitDirectCreditTradeAmt);
             other.Add("HelpDirectDebitTradeAmt", HelpDirectDebitTradeAmt);
             other.Add("NotHelpDirectDebitTradeAmt", NotHelpDirectDebitTradeAmt);
+            other.Add("ProfitDirectDebitTradeAmt", ProfitDirectDebitTradeAmt);
             other.Add("HelpNonDirectTradeAmt", HelpNonDirectTradeAmt);
             other.Add("NotHelpNonDirectTradeAmt", NotHelpNonDirectTradeAmt);
+            other.Add("ProfitNonDirectCreditTradeAmt", ProfitNonDirectCreditTradeAmt);
             other.Add("HelpNonDirectDebitTradeAmt", HelpNonDirectDebitTradeAmt);
             other.Add("NotHelpNonDirectDebitTradeAmt", NotHelpNonDirectDebitTradeAmt);
+            other.Add("ProfitNonDirectDebitTradeAmt", ProfitNonDirectDebitTradeAmt);
             obj.Add("other", other);
             return Json(obj);
         }
@@ -435,12 +448,16 @@ namespace MySystem.Areas.Admin.Controllers
             ReturnFields.Add("SeoTitle", "交易类型");
             ReturnFields.Add("HelpDirectTradeAmt", "扶持期直营贷记卡交易");
             ReturnFields.Add("NotHelpDirectTradeAmt", "稳定期直营贷记卡交易");
+            ReturnFields.Add("ProfitDirectCreditTradeAmt", "盈利期直营贷记卡交易");
             ReturnFields.Add("HelpDirectDebitTradeAmt", "扶持期直营借记卡交易");
             ReturnFields.Add("NotHelpDirectDebitTradeAmt", "稳定期直营借记卡交易");
+            ReturnFields.Add("ProfitDirectDebitTradeAmt", "盈利期直营借记卡交易");
             ReturnFields.Add("HelpNonDirectTradeAmt", "扶持期非直营贷记卡交易");
             ReturnFields.Add("NotHelpNonDirectTradeAmt", "稳定期非直营贷记卡交易");
+            ReturnFields.Add("ProfitNonDirectCreditTradeAmt", "盈利期非直营贷记卡交易");
             ReturnFields.Add("HelpNonDirectDebitTradeAmt", "扶持期非直营借记卡交易");
             ReturnFields.Add("NotHelpNonDirectDebitTradeAmt", "稳定期非直营借记卡交易");
+            ReturnFields.Add("ProfitNonDirectDebitTradeAmt", "盈利期非直营借记卡交易");
 
             result.Add("Fields", ReturnFields);
             AddSysLog("0", "TradeDaySummary", "ExportExcel");

+ 165 - 3
Areas/Admin/Controllers/MainServer/UsersController.cs

@@ -1561,6 +1561,14 @@ namespace MySystem.Areas.Admin.Controllers
                 dic["JfAmtwd"] = Convert.ToDecimal(Info["JfAmtwd"].ToString());
                 dic["JCountwd"] = Convert.ToInt32(Info["JCountwd"].ToString());
                 dic["YAmtwd"] = Convert.ToDecimal(Info["YAmtwd"].ToString());
+
+                dic["TotalAmtyl"] = Convert.ToDecimal(Info["TotalAmtyl"].ToString()) + Convert.ToDecimal(Info["YAmtyl"].ToString());
+                dic["DAmtyl"] = Convert.ToDecimal(Info["DAmtyl"].ToString());
+                dic["JAmtyl"] = Convert.ToDecimal(Info["JAmtyl"].ToString());
+                dic["JfAmtyl"] = Convert.ToDecimal(Info["JfAmtyl"].ToString());
+                dic["JCountyl"] = Convert.ToInt32(Info["JCountyl"].ToString());
+                dic["YAmtyl"] = Convert.ToDecimal(Info["YAmtyl"].ToString());
+
                 dic["TBCount"] = Info["TBCount"].ToString();
                 dic["TACount"] = Info["TACount"].ToString();
                 // dic["BCount"] = Info["BCount"].ToString();
@@ -1585,6 +1593,14 @@ namespace MySystem.Areas.Admin.Controllers
             int JCountwd = 0;
             decimal YAmtwd = 0;
 
+            //盈利期
+            decimal TotalAmtyl = 0;
+            decimal DAmtyl = 0;
+            decimal JAmtyl = 0;
+            decimal JfAmtyl = 0;
+            int JCountyl = 0;
+            decimal YAmtyl = 0;
+
             //团队
             //扶持期
             decimal TotalAmtfc1 = 0;
@@ -1602,13 +1618,21 @@ namespace MySystem.Areas.Admin.Controllers
             int JCountwd1 = 0;
             decimal YAmtwd1 = 0;
 
+            //盈利期
+            decimal TotalAmtyl1 = 0;
+            decimal DAmtyl1 = 0;
+            decimal JAmtyl1 = 0;
+            decimal JfAmtyl1 = 0;
+            int JCountyl1 = 0;
+            decimal YAmtyl1 = 0;
+
             int PBCount = 0;
             int PACount = 0;
             int TBCount = 0;
             int TACount = 0;
 
             Dictionary<string, object> other = new Dictionary<string, object>();
-            DataTable dt = OtherMySqlConn.dtable("SELECT Sum(HelpDirectTradeAmt + HelpDirectDebitTradeAmt),Sum(if (QueryCount = 0,HelpDirectTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitTradeAmt - HelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitCapNum,0)),Sum(if (QueryCount = 1,HelpDirectTradeAmt,0)),Sum(NotHelpDirectTradeAmt + NotHelpDirectDebitTradeAmt),Sum(if (QueryCount = 0,NotHelpDirectTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitTradeAmt - NotHelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitCapNum,0)),Sum(if (QueryCount = 1,NotHelpDirectTradeAmt,0))from TradeDaySummary where SeoTitle = 'self' and UserId =" + ParentId + "" + con);
+            DataTable dt = OtherMySqlConn.dtable("SELECT Sum(HelpDirectTradeAmt + HelpDirectDebitTradeAmt),Sum(if (QueryCount = 0,HelpDirectTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitTradeAmt - HelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitCapNum,0)),Sum(if (QueryCount = 1,HelpDirectTradeAmt,0)),Sum(NotHelpDirectTradeAmt + NotHelpDirectDebitTradeAmt),Sum(if (QueryCount = 0,NotHelpDirectTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitTradeAmt - NotHelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitCapNum,0)),Sum(if (QueryCount = 1,NotHelpDirectTradeAmt,0)),Sum(ProfitDirectTradeAmt + ProfitDirectDebitTradeAmt),Sum(if (QueryCount = 0,ProfitDirectTradeAmt,0)),Sum(if (QueryCount = 0,ProfitDirectDebitTradeAmt - ProfitDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,ProfitDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,ProfitDirectDebitCapNum,0)),Sum(if (QueryCount = 1,ProfitDirectTradeAmt,0))from TradeDaySummary where SeoTitle = 'self' and UserId =" + ParentId + "" + con);
             if (dt.Rows.Count > 0)
             {
                 TotalAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));
@@ -1617,12 +1641,20 @@ namespace MySystem.Areas.Admin.Controllers
                 JfAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][3].ToString()));
                 JCountfc = Convert.ToInt32(function.CheckInt(dt.Rows[0][4].ToString()));
                 YAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][5].ToString()));
+
                 TotalAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][6].ToString()));
                 DAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][7].ToString()));
                 JAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][8].ToString()));
                 JfAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][9].ToString()));
                 JCountwd = Convert.ToInt32(function.CheckInt(dt.Rows[0][10].ToString()));
                 YAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][11].ToString()));
+
+                TotalAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][12].ToString()));
+                DAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][13].ToString()));
+                JAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][14].ToString()));
+                JfAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][15].ToString()));
+                JCountyl = Convert.ToInt32(function.CheckInt(dt.Rows[0][16].ToString()));
+                YAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][17].ToString()));
             }
             //统计激活数(个人、团队)
             dt = OtherMySqlConn.dtable("SELECT SUM(if(SeoTitle='self',ActiveBuddyMerStatus,0)),SUM(if(SeoTitle='team',ActiveBuddyMerStatus,0)) FROM UserTradeMonthSummary WHERE UserId= " + ParentId + "" + cons);
@@ -1632,7 +1664,7 @@ namespace MySystem.Areas.Admin.Controllers
                 TACount = Convert.ToInt32(function.CheckNum(dt.Rows[0][1].ToString()));
             }
 
-            DataTable dts = OtherMySqlConn.dtable("SELECT Sum(HelpNonDirectTradeAmt + HelpNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,HelpNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitTradeAmt - HelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,HelpNonDirectTradeAmt,0)),Sum(NotHelpNonDirectTradeAmt + NotHelpNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,NotHelpNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitTradeAmt - NotHelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,NotHelpNonDirectTradeAmt,0))from TradeDaySummary where SeoTitle = 'team' and UserId =" + ParentId + "" + con);
+            DataTable dts = OtherMySqlConn.dtable("SELECT Sum(HelpNonDirectTradeAmt + HelpNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,HelpNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitTradeAmt - HelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,HelpNonDirectTradeAmt,0)),Sum(NotHelpNonDirectTradeAmt + NotHelpNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,NotHelpNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitTradeAmt - NotHelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,NotHelpNonDirectTradeAmt,0)),Sum(ProfitNonDirectTradeAmt + ProfitNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,ProfitNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,ProfitNonDirectDebitTradeAmt - ProfitNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,ProfitNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,ProfitNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,ProfitNonDirectTradeAmt,0))from TradeDaySummary where SeoTitle = 'team' and UserId =" + ParentId + "" + con);
             if (dts.Rows.Count > 0)
             {
                 TotalAmtfc1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][0].ToString()));
@@ -1641,12 +1673,20 @@ namespace MySystem.Areas.Admin.Controllers
                 JfAmtfc1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][3].ToString()));
                 JCountfc1 = Convert.ToInt32(function.CheckInt(dts.Rows[0][4].ToString()));
                 YAmtfc1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][5].ToString()));
+
                 TotalAmtwd1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][6].ToString()));
                 DAmtwd1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][7].ToString()));
                 JAmtwd1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][8].ToString()));
                 JfAmtwd1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][9].ToString()));
                 JCountwd1 = Convert.ToInt32(function.CheckInt(dts.Rows[0][10].ToString()));
                 YAmtwd1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][11].ToString()));
+
+                TotalAmtyl1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][12].ToString()));
+                DAmtyl1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][13].ToString()));
+                JAmtyl1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][14].ToString()));
+                JfAmtyl1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][15].ToString()));
+                JCountyl1 = Convert.ToInt32(function.CheckInt(dts.Rows[0][16].ToString()));
+                YAmtyl1 = Convert.ToDecimal(function.CheckNum(dts.Rows[0][17].ToString()));
             }
 
             other.Add("TotalAmtfc", TotalAmtfc);
@@ -1663,6 +1703,13 @@ namespace MySystem.Areas.Admin.Controllers
             other.Add("JCountwd", JCountwd);
             other.Add("YAmtwd", YAmtwd);
 
+            other.Add("TotalAmtyl", TotalAmtyl);
+            other.Add("DAmtyl", DAmtyl);
+            other.Add("JAmtyl", JAmtyl);
+            other.Add("JfAmtyl", JfAmtyl);
+            other.Add("JCountyl", JCountyl);
+            other.Add("YAmtyl", YAmtyl);
+
             other.Add("TotalAmtfc1", TotalAmtfc1);
             other.Add("DAmtfc1", DAmtfc1);
             other.Add("JAmtfc1", JAmtfc1);
@@ -1677,6 +1724,13 @@ namespace MySystem.Areas.Admin.Controllers
             other.Add("JCountwd1", JCountwd1);
             other.Add("YAmtwd1", YAmtwd1);
 
+            other.Add("TotalAmtyl1", TotalAmtyl1);
+            other.Add("DAmtyl1", DAmtyl1);
+            other.Add("JAmtyl1", JAmtyl1);
+            other.Add("JfAmtyl1", JfAmtyl1);
+            other.Add("JCountyl1", JCountyl1);
+            other.Add("YAmtyl1", YAmtyl1);
+
             other.Add("PBCount", PBCount);
             other.Add("PACount", PACount);
             other.Add("TBCount", TBCount);
@@ -1735,6 +1789,14 @@ namespace MySystem.Areas.Admin.Controllers
             int JCountwd = 0;
             decimal YAmtwd = 0;
 
+            //盈利期
+            decimal TotalAmtyl = 0;
+            decimal DAmtyl = 0;
+            decimal JAmtyl = 0;
+            decimal JfAmtyl = 0;
+            int JCountyl = 0;
+            decimal YAmtyl = 0;
+
             int BCount = 0;
             int ACount = 0;
             int PBCount = 0;
@@ -1743,7 +1805,7 @@ namespace MySystem.Areas.Admin.Controllers
             int TACount = 0;
 
             Dictionary<string, object> obj = new Dictionary<string, object>();
-            DataTable dt = OtherMySqlConn.dtable("SELECT Sum(HelpDirectTradeAmt + HelpDirectDebitTradeAmt),Sum(if (QueryCount = 0,HelpDirectTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitTradeAmt - HelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpDirectDebitCapNum,0)),Sum(if (QueryCount = 1,HelpDirectTradeAmt,0)),Sum(NotHelpDirectTradeAmt + NotHelpDirectDebitTradeAmt),Sum(if (QueryCount = 0,NotHelpDirectTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitTradeAmt - NotHelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpDirectDebitCapNum,0)),Sum(if (QueryCount = 1,NotHelpDirectTradeAmt,0))from TradeDaySummary where SeoTitle = 'team'" + condition);
+            DataTable dt = OtherMySqlConn.dtable("SELECT Sum(HelpNonDirectTradeAmt + HelpNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,HelpNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitTradeAmt - HelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,HelpNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,HelpNonDirectTradeAmt,0)),Sum(NotHelpNonDirectTradeAmt + NotHelpNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,NotHelpNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitTradeAmt - NotHelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,NotHelpNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,NotHelpNonDirectTradeAmt,0)),Sum(ProfitNonDirectTradeAmt + ProfitNonDirectDebitTradeAmt),Sum(if (QueryCount = 0,ProfitNonDirectTradeAmt,0)),Sum(if (QueryCount = 0,ProfitNonDirectDebitTradeAmt - ProfitNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,ProfitNonDirectDebitCapTradeAmt,0)),Sum(if (QueryCount = 0,ProfitNonDirectDebitCapNum,0)),Sum(if (QueryCount = 1,ProfitNonDirectTradeAmt,0))from TradeDaySummary where SeoTitle = 'team'" + condition);
             if (dt.Rows.Count > 0)
             {
                 TotalAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][0].ToString()));
@@ -1752,12 +1814,20 @@ namespace MySystem.Areas.Admin.Controllers
                 JfAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][3].ToString()));
                 JCountfc = Convert.ToInt32(function.CheckInt(dt.Rows[0][4].ToString()));
                 YAmtfc = Convert.ToDecimal(function.CheckNum(dt.Rows[0][5].ToString()));
+                
                 TotalAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][6].ToString()));
                 DAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][7].ToString()));
                 JAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][8].ToString()));
                 JfAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][9].ToString()));
                 JCountwd = Convert.ToInt32(function.CheckInt(dt.Rows[0][10].ToString()));
                 YAmtwd = Convert.ToDecimal(function.CheckNum(dt.Rows[0][11].ToString()));
+
+                TotalAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][12].ToString()));
+                DAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][13].ToString()));
+                JAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][14].ToString()));
+                JfAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][15].ToString()));
+                JCountyl = Convert.ToInt32(function.CheckInt(dt.Rows[0][16].ToString()));
+                YAmtyl = Convert.ToDecimal(function.CheckNum(dt.Rows[0][17].ToString()));
             }
             //统计激活数(个人、团队)
             dt = OtherMySqlConn.dtable("SELECT SUM(if(SeoTitle='team',ActiveBuddyMerStatus,0)) FROM UserTradeMonthSummary WHERE UserId= " + UserId + "" + cons);
@@ -1781,6 +1851,13 @@ namespace MySystem.Areas.Admin.Controllers
             obj.Add("JCountwd", JCountwd);
             obj.Add("YAmtwd", YAmtwd);
 
+            obj.Add("TotalAmtyl", TotalAmtyl);
+            obj.Add("DAmtyl", DAmtyl);
+            obj.Add("JAmtyl", JAmtyl);
+            obj.Add("JfAmtyl", JfAmtyl);
+            obj.Add("JCountyl", JCountyl);
+            obj.Add("YAmtyl", YAmtyl);
+
             obj.Add("BCount", BCount);
             obj.Add("ACount", ACount);
             obj.Add("PBCount", PBCount);
@@ -1792,5 +1869,90 @@ namespace MySystem.Areas.Admin.Controllers
         }
 
         #endregion
+
+
+         #region 未实名创客列表
+
+        /// <summary>
+        /// 根据条件查询未实名创客列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult AuthIndex(Users data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询未实名创客列表
+
+        /// <summary>
+        /// 未实名创客列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult AuthIndexData(Users data, int page = 1, int limit = 30)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("MakerCode", "1"); //创客编号
+
+            string condition = " and Status>-1 and AuthFlag=0 and RealName is not null and CertId is not null and SettleBankCardNo is not null and SettleBankCardName is not null";
+            string sort = "Id desc";
+
+            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>
+        /// 认证
+        /// </summary>
+        /// <returns></returns>
+        public string Auth(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "Users", "Auth");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("AuthFlag", 1);
+                Fields.Add("AuthDate", DateTime.Now);
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("Users", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
     }
 }

+ 652 - 0
Areas/Admin/Controllers/OperateServer/PosCouponsLeaderController.cs

@@ -0,0 +1,652 @@
+/*
+ * 机具券变更记录
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Data;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
+using MySystem.Models;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class PosCouponsLeaderController : BaseController
+    {
+        public PosCouponsLeaderController(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(PosCoupons data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询机具券列表
+
+        /// <summary>
+        /// 机具券列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(PosCoupons data, string UseDateData, string UserIdMakerCode, string LeaderIdMakerCode, string ExchangeCode, string IsUseSelect, string IsLockSelect, string TypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("OrderNo", "1"); //单号
+
+
+            string condition = " and Status>-1";
+            //创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //盟主创客编号
+            if (!string.IsNullOrEmpty(LeaderIdMakerCode))
+            {
+                condition += " and LeaderUserId in (select UserId from UserForMakerCode where MakerCode='" + LeaderIdMakerCode + "')";
+            }
+            //兑换码
+            if (!string.IsNullOrEmpty(ExchangeCode))
+            {
+                condition += " and ExchangeCode =" + ExchangeCode;
+            }
+            //机具券类型
+            if (!string.IsNullOrEmpty(TypeSelect))
+            {
+                if (int.Parse(TypeSelect) == 1)
+                {
+                    condition += " and QueryCount =1";
+                }
+                else
+                {
+                    condition += " and QueryCount =2";
+                }
+            }
+            //是否使用
+            if (!string.IsNullOrEmpty(IsUseSelect))
+            {
+                condition += " and IsUse =" + IsUseSelect;
+            }
+            //是否锁定
+            if (!string.IsNullOrEmpty(IsLockSelect))
+            {
+                condition += " and IsLock=" + IsLockSelect;
+            }
+
+            if (!string.IsNullOrEmpty(UseDateData))
+            {
+                string[] datelist = UseDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and UseDate >='" + start + " 00:00:00' and UseDate <='" + end + " 23:59:59'";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosCoupons", 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 fromuserid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = fromuserid_Users.MakerCode;
+                dic["UserIdRealName"] = fromuserid_Users.RealName;
+                dic.Remove("UserId");
+
+                //盟主创客信息
+                int LeaderUserId = int.Parse(function.CheckInt(dic["LeaderUserId"].ToString()));
+                Users leaderuserid_Users = db.Users.FirstOrDefault(m => m.Id == LeaderUserId) ?? new Users();
+                dic["LeaderUserIdMakerCode"] = leaderuserid_Users.MakerCode;
+                dic["LeaderUserIdRealName"] = leaderuserid_Users.RealName;
+                dic.Remove("LeaderUserId");
+
+                //是否使用
+                int IsUse = int.Parse(dic["IsUse"].ToString());
+                if (IsUse == 0) dic["IsUseName"] = "否";
+                if (IsUse == 1) dic["IsUseName"] = "是";
+
+                //是否锁定
+                int IsLock = int.Parse(dic["IsLock"].ToString());
+                if (IsLock == 0) dic["IsLockName"] = "否";
+                if (IsLock == 1) dic["IsLockName"] = "是";
+
+                //机具券类型
+                int QueryCount = int.Parse(dic["QueryCount"].ToString());
+                if (QueryCount == 1) dic["QueryCount"] = "电签券";
+                if (QueryCount == 2) dic["QueryCount"] = "大POS";
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+
+        #region 商机券列表
+
+        /// <summary>
+        /// 根据条件查询商机券列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult SJQ(PosCoupons data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询商机券列表
+
+        /// <summary>
+        /// 商机券列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult SJQData(PosCoupons data, string UseDateData, string UserIdMakerCode, string ExchangeCode, string IsUseSelect, string IsLockSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("OrderNo", "1"); //单号
+
+
+            string condition = " and Status>-1 and HelpProfitFlag=1";
+            //创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //兑换码
+            if (!string.IsNullOrEmpty(ExchangeCode))
+            {
+                condition += " and ExchangeCode =" + ExchangeCode;
+            }
+            //是否使用
+            if (!string.IsNullOrEmpty(IsUseSelect))
+            {
+                condition += " and IsUse =" + IsUseSelect;
+            }
+            //是否锁定
+            if (!string.IsNullOrEmpty(IsLockSelect))
+            {
+                condition += " and IsLock=" + IsLockSelect;
+            }
+
+            if (!string.IsNullOrEmpty(UseDateData))
+            {
+                string[] datelist = UseDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                string start = datelist[0];
+                string end = datelist[1];
+                condition += " and UseDate >='" + start + "' and UseDate <='" + end + " 23:59:59'";
+
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosCoupons", 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 fromuserid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = fromuserid_Users.MakerCode;
+                dic["UserIdRealName"] = fromuserid_Users.RealName;
+                dic.Remove("UserId");
+
+                //盟主创客信息
+                int LeaderUserId = int.Parse(function.CheckInt(dic["LeaderUserId"].ToString()));
+                Users leaderuserid_Users = db.Users.FirstOrDefault(m => m.Id == LeaderUserId) ?? new Users();
+                dic["LeaderUserIdMakerCode"] = leaderuserid_Users.MakerCode;
+                dic["LeaderUserIdRealName"] = leaderuserid_Users.RealName;
+                dic.Remove("LeaderUserId");
+
+                //是否使用
+                int IsUse = int.Parse(dic["IsUse"].ToString());
+                if (IsUse == 0) dic["IsUseName"] = "否";
+                if (IsUse == 1) dic["IsUseName"] = "是";
+
+                //是否锁定
+                int IsLock = int.Parse(dic["IsLock"].ToString());
+                if (IsLock == 0) dic["IsLockName"] = "否";
+                if (IsLock == 1) dic["IsLockName"] = "是";
+
+                //是否是商机券
+                int HelpProfitFlag = int.Parse(dic["HelpProfitFlag"].ToString());
+                if (HelpProfitFlag == 0) dic["IsSJName"] = "否";
+                if (HelpProfitFlag == 1) dic["IsSJName"] = "是";
+
+                //是否使用商机券
+                int HelpProfitStatus = int.Parse(dic["HelpProfitStatus"].ToString());
+                if (HelpProfitStatus == 0) dic["SJUseName"] = "否";
+                if (HelpProfitStatus == 1) dic["SJUseName"] = "是";
+
+                //助利宝商户信息
+                int HelpProfitMerchantId = int.Parse(function.CheckInt(dic["HelpProfitMerchantId"].ToString()));
+                PosMerchantInfo posMerchantInfo = db.PosMerchantInfo.FirstOrDefault(m => m.Id == HelpProfitMerchantId) ?? new PosMerchantInfo();
+                dic["posMerchantInfo"] = posMerchantInfo.MerchantNo + "<br />" + posMerchantInfo.MerchantName;
+
+            }
+            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(PosCoupons data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("PosCoupons", Fields, 0);
+            AddSysLog(data.Id.ToString(), "PosCoupons", "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;
+
+
+            PosCoupons editData = db.PosCoupons.FirstOrDefault(m => m.Id == Id) ?? new PosCoupons();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改机具券变更记录
+
+        /// <summary>
+        /// 增加或修改机具券变更记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(PosCoupons data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("PosCoupons", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "PosCoupons", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除机具券变更记录信息
+
+        /// <summary>
+        /// 删除机具券变更记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosCoupons", "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("PosCoupons", 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, "PosCoupons", "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("PosCoupons", 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, "PosCoupons", "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("PosCoupons", 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("PosCoupons", Sort, Id);
+
+            AddSysLog(Id.ToString(), "PosCoupons", "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.PosCoupons.Add(new PosCoupons()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "PosCoupons", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(PosCoupons data, string FromUserIdMakerCode, string FromUserIdRealName, string ToUserIdMakerCode, string ToUserIdRealName, string ChangeKindSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CreateDate", "3"); //时间
+            Fields.Add("OrderNo", "1"); //单号
+
+
+            string condition = " and Status>-1";
+            //来源创客编号
+            if (!string.IsNullOrEmpty(FromUserIdMakerCode))
+            {
+                condition += " and FromUserId in (select FromUserId from UserForMakerCode where MakerCode='" + FromUserIdMakerCode + "')";
+            }
+            //来源创客真实姓名
+            if (!string.IsNullOrEmpty(FromUserIdRealName))
+            {
+                condition += " and FromUserId in (select FromUserId from UserForRealName where RealName='" + FromUserIdRealName + "')";
+            }
+            //目标创客编号
+            if (!string.IsNullOrEmpty(ToUserIdMakerCode))
+            {
+                condition += " and ToUserId in (select ToUserId from UserForMakerCode where MakerCode='" + ToUserIdMakerCode + "')";
+            }
+            //目标创客真实姓名
+            if (!string.IsNullOrEmpty(ToUserIdRealName))
+            {
+                condition += " and ToUserId in (select ToUserId from UserForRealName where RealName='" + ToUserIdRealName + "')";
+            }
+            //变更类型
+            if (!string.IsNullOrEmpty(ChangeKindSelect))
+            {
+                condition += " and ChangeKind=" + ChangeKindSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PosCoupons", Fields, "Id desc", "0", 1, 20000, condition, "FromUserId,ToUserId,OrderNo,BeforeStock,BeforeTotal,BeforeOut,AfterStock,AfterTotal,AfterOut,ChangeCount,ChangeKind", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //来源创客
+                int FromUserId = int.Parse(function.CheckInt(dic["FromUserId"].ToString()));
+                Users fromuserid_Users = db.Users.FirstOrDefault(m => m.Id == FromUserId) ?? new Users();
+                dic["FromUserIdMakerCode"] = fromuserid_Users.MakerCode;
+                dic["FromUserIdRealName"] = fromuserid_Users.RealName;
+                dic.Remove("FromUserId");
+                //目标创客
+                int ToUserId = int.Parse(function.CheckInt(dic["ToUserId"].ToString()));
+                Users touserid_Users = db.Users.FirstOrDefault(m => m.Id == ToUserId) ?? new Users();
+                dic["ToUserIdMakerCode"] = touserid_Users.MakerCode;
+                dic["ToUserIdRealName"] = touserid_Users.RealName;
+                dic.Remove("ToUserId");
+
+            }
+
+            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("FromUserIdMakerCode", "来源创客编号");
+            ReturnFields.Add("FromUserIdRealName", "来源创客真实姓名");
+            ReturnFields.Add("ToUserIdMakerCode", "目标创客编号");
+            ReturnFields.Add("ToUserIdRealName", "目标创客真实姓名");
+            ReturnFields.Add("OrderNo", "单号");
+            ReturnFields.Add("BeforeStock", "变更前机具券库存");
+            ReturnFields.Add("BeforeTotal", "变更前机具券总数");
+            ReturnFields.Add("BeforeOut", "变更前机具券使用数");
+            ReturnFields.Add("AfterStock", "变更后机具券库存");
+            ReturnFields.Add("AfterTotal", "变更后机具券总数");
+            ReturnFields.Add("AfterOut", "变更后机具券使用数");
+            ReturnFields.Add("ChangeCount", "变更数量");
+            ReturnFields.Add("ChangeKind", "变更类型");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "PosCoupons", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+        #region 设置盟主券
+
+        /// <summary>
+        /// 设置盟主券
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult BatchSetting(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+
+        #region 设置盟主券
+
+        /// <summary>
+        /// 设置盟主券
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string BatchSetting(string Id, string MakerCode)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosCoupons", "PosCouponsBatchSetting");
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
+                if (user.Id > 0 && user.LeaderLevel > 0)
+                {
+                    DataTable dt = OtherMySqlConn.dtable("UPDATE PosCoupons SET LeaderUserId=" + user.Id + ",SeoTitle=" + SysUserName + "_" + SysRealName + " WHERE Id IN (" + Id + ")");
+                    db.SaveChanges();
+                }
+                else
+                {
+                    return "该创客不是盟主或者账号不存在";
+                }
+            }
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 取消盟主券
+
+        /// <summary>
+        /// 取消盟主券
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult BatchCancle(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+
+        #region 取消盟主券
+
+        /// <summary>
+        /// 取消盟主券
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string BatchCancle(string Id, string MakerCode)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "PosCoupons", "PosCouponsBatchCancle");
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var user = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId) ?? new Users();
+                if (user.Id > 0)
+                {
+                    var posCoupons = db.PosCoupons.Where(m => m.LeaderUserId == user.Id).ToList();
+                    var error = "";
+                    foreach (var item in idlist)
+                    {
+                        var check = posCoupons.Any(m => m.Id == int.Parse(item) && m.LeaderUserId == user.Id);
+                        if (!check)
+                        {
+                            error += "ID为" + item + "的机具券不是盟主" + MakerCode + "的机具券";
+                        }
+                    }
+
+                    if (!string.IsNullOrEmpty(error))
+                    {
+                        return "Warning|" + error;
+                    }
+                    DataTable dt = OtherMySqlConn.dtable("UPDATE PosCoupons SET LeaderUserId=0,SeoTitle=" + SysUserName + "_" + SysRealName + " WHERE Id IN (" + Id + ") AND LeaderUserId=" + user.Id + "");
+                    db.SaveChanges();
+                }
+            }
+            return "success";
+        }
+
+        #endregion
+
+    }
+}

+ 1498 - 0
Areas/Admin/Controllers/OperateServer/StoreHouseOperateController.cs

@@ -0,0 +1,1498 @@
+/*
+ * 仓库
+ */
+
+using System;
+using System.Web;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Data;
+using System.Threading;
+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 StoreHouseOperateController : BaseController
+    {
+        public StoreHouseOperateController(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(StoreHouse data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询仓库列表
+
+        /// <summary>
+        /// 仓库列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(StoreHouse data, string CreateDateData, string OpCode, string MakerCode, int ShowFlag = 0, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("StoreNo", "1"); //仓库编号
+            if (ShowFlag == 0)
+            {
+                Dictionary<string, object> objs = new Dictionary<string, object>();
+                return Json(objs);
+            }
+
+            string condition = " and Status>-1 and Sort>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'";
+            }
+            //所属运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == OpCode) ?? new OpModels.SysAdmin();
+                if (sysAdmin.Id > 0)
+                {
+                    condition += " and Sort=" + sysAdmin.Id;
+                }
+            }
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new OpModels.SysAdmin();
+                if (sysAdmin.Id > 0)
+                {
+                    condition += " and Sort=" + sysAdmin.Id;
+                }
+            }
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouse", Fields, "Id desc", "0", page, limit, condition);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //仓库归属人
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                dic["MakerMobiles"] = userid_Users.Mobile;
+
+                int OpId = int.Parse(function.CheckInt(dic["Sort"].ToString()));
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == OpId) ?? new OpModels.SysAdmin();
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic["RealNames"] = sysAdmin.RealName;
+                //产品类型
+                dic["BrandId"] = RelationClass.GetKqProductBrandList(dic["BrandId"].ToString());
+                //小分仓
+                int Id = int.Parse(function.CheckInt(dic["Id"].ToString()));
+                int PreCount = db.PreSendStockDetail.Count(m => m.FromStoreId == Id && m.ApplyFlag == 0 && m.Status >= 0 && m.Status <= 1);
+                dic["PreNum"] = PreCount.ToString();
+                
+                // //分仓额度
+                // var amount = db.UserAccount.FirstOrDefault(m => m.Id == UserId) ?? new UserAccount();
+                // var ValidAmount = amount.ValidAmount;
+                // var FixedAmount = amount.FixedAmount;
+                // var TempAmount = amount.TempAmount + amount.TempAmountForBalance;
+                // var check = db.StoreHouseAmountPromiss.Any(m => m.ToUserId == UserId);
+                // decimal PromissAmount = 0;
+                // var ThisMonthPreAmount = amount.ThisMonthPreAmount;
+                // var ValidPreAmount = amount.ValidPreAmount;
+                // if (check)
+                // {
+                //     PromissAmount = db.StoreHouseAmountPromiss.Where(m => m.Status == 1 && m.ToUserId == UserId).Sum(m => m.PromissAmount);
+                // }
+                // dic["ValidAmount"] = ValidAmount.ToString();//可用额度
+                // dic["FixedAmount"] = FixedAmount.ToString();//固定额度
+                // dic["TempAmount"] = TempAmount.ToString();//临时额度
+                // dic["PromissAmount"] = PromissAmount.ToString();//担保金额
+                // dic["ThisMonthPreAmount"] = ThisMonthPreAmount.ToString();//本月小分仓额度
+                // dic["ValidPreAmount"] = ValidPreAmount.ToString();//可用小分仓额度
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加仓库
+
+        /// <summary>
+        /// 增加或修改仓库信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加仓库
+
+        /// <summary>
+        /// 增加或修改仓库信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(StoreHouse data, string ManageMakerCode, string MakerCode)
+        {
+            string BrandIdString = data.BrandId;
+            if (!string.IsNullOrEmpty(BrandIdString))
+            {
+                string[] BrandIdList = BrandIdString.Split(',');
+                foreach (string BrandId in BrandIdList)
+                {
+                    Dictionary<string, object> Fields = new Dictionary<string, object>();
+                    Fields.Add("CreateMan", SysUserName); //创建人
+                    Fields.Add("StoreName", data.StoreName); //仓库名称
+                    UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+                    if (user == null)
+                    {
+                        return "您输入的仓库归属创客编号不存在,请重新输入正确的仓库归属创客编号";
+                    }
+                    Fields.Add("UserId", user.UserId); //仓库归属人
+                    Fields.Add("Areas", data.Areas); //所属地区
+                    Fields.Add("Address", data.Address); //仓库地址
+                    UserForMakerCode manage = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ManageMakerCode);
+                    if (manage == null)
+                    {
+                        return "您输入的仓库负责人编号不存在,请重新输入正确的仓库负责人编号";
+                    }
+                    Fields.Add("ManageUserId", manage.UserId); //仓库管理员
+                    Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
+                    Fields.Add("ManageMobile", data.ManageMobile);
+                    Fields.Add("Remark", data.Remark); //备注
+                    Fields.Add("LimitTopUserId", data.LimitTopUserId); //限制创客特殊仓库
+                    Fields.Add("StoreKind", data.StoreKind); //仓库归属类型
+                    int bid = int.Parse(BrandId);
+                    KqProducts pro = db.KqProducts.FirstOrDefault(m => m.Id == bid) ?? new KqProducts();
+                    Fields.Add("BrandId", BrandId);
+                    Fields.Add("ProductName", pro.Name);
+                    Fields.Add("StoreStatus", 1);
+                    Fields.Add("Status", 1);
+
+                    var name = db.StoreHouse.FirstOrDefault(m => m.UserId == user.UserId && m.BrandId == BrandId && m.StoreName == data.StoreName);
+                    if (name != null)
+                    {
+                        return "您的仓库名重复,请重新填写";
+                    }
+
+                    int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("StoreHouse", Fields, 0);
+                    StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
+                    if (edit != null)
+                    {
+                        string No = Id.ToString();
+                        for (int i = 0; i < 7 - Id.ToString().Length; i++)
+                        {
+                            No = "0" + No;
+                        }
+                        No = "S" + No;
+                        edit.StoreNo = No;
+                        db.StoreForCode.Add(new StoreForCode()
+                        {
+                            Code = No,
+                            StoreId = Id,
+                        });
+                        RedisDbconn.Instance.Set("StoreForCode:" + No, Id);
+                    }
+                    StoreForName storeForName = db.StoreForName.FirstOrDefault(m => m.Name == data.StoreName);
+                    if (storeForName == null)
+                    {
+                        db.StoreForName.Add(new StoreForName()
+                        {
+                            Name = data.StoreName,
+                            StoreId = Id,
+                        });
+                    }
+                    else
+                    {
+                        storeForName.StoreId = Id;
+                    }
+                    UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == user.UserId);
+                    if (account == null)
+                    {
+                        account = db.UserAccount.Add(new UserAccount()
+                        {
+                            Id = user.UserId,
+                            UserId = user.UserId,
+                        }).Entity;
+                        db.SaveChanges();
+                    }
+                    if (account.FixedAmount == 0 && account.ValidAmount == 0)
+                    {
+                        account.FixedAmount = 20000;
+                        account.ValidAmount = 20000;
+                    }
+
+                    RedisDbconn.Instance.Set("StoreForName:" + data.StoreName, Id);
+                    AddSysLog(data.Id.ToString(), "StoreHouse", "add");
+                    db.SaveChanges();
+
+                    SetRedis(Id, user.UserId);
+                }
+            }
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改仓库
+
+        /// <summary>
+        /// 增加或修改仓库信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            StoreHouse editData = db.StoreHouse.FirstOrDefault(m => m.Id == Id) ?? new StoreHouse();
+            ViewBag.data = editData;
+
+            Users manage = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
+            ViewBag.ManageMakerCode = manage.MakerCode;
+            ViewBag.ManageRealName = manage.RealName;
+
+            Users user = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
+            ViewBag.MakerCode = user.MakerCode;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改仓库
+
+        /// <summary>
+        /// 增加或修改仓库信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(StoreHouse data, string ManageMakerCode, string MakerCode)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("CreateMan", SysUserName); //创建人
+            Fields.Add("StoreName", data.StoreName); //仓库名称
+            UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+            if (user == null)
+            {
+                return "您输入的仓库归属创客编号不存在,请重新输入正确的仓库归属创客编号";
+            }
+            Fields.Add("UserId", user.UserId); //仓库归属人
+            Fields.Add("Areas", data.Areas); //所属地区
+            Fields.Add("Address", data.Address); //仓库地址
+            UserForMakerCode manage = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ManageMakerCode);
+            if (manage == null)
+            {
+                return "您输入的仓库负责人编号不存在,请重新输入正确的仓库负责人编号";
+            }
+            Fields.Add("ManageUserId", manage.UserId); //仓库管理员
+            Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
+            Fields.Add("ManageMobile", data.ManageMobile);
+            Fields.Add("Remark", data.Remark); //备注
+            Fields.Add("LimitTopUserId", data.LimitTopUserId); //限制创客特殊仓库
+            Fields.Add("StoreKind", data.StoreKind); //仓库归属类型
+            Fields.Add("Status", data.Status);
+            Fields.Add("StoreStatus", data.Status);
+
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "StoreHouse", "update");
+            db.SaveChanges();
+
+            SetRedis(data.Id, user.UserId);
+
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 一键添加仓库
+
+        /// <summary>
+        /// 一件添加仓库
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edits(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            StoreHouse editData = db.StoreHouse.FirstOrDefault(m => m.Id == Id) ?? new StoreHouse();
+            ViewBag.data = editData;
+
+            Users manage = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
+            ViewBag.ManageMakerCode = manage.MakerCode;
+            ViewBag.ManageRealName = manage.RealName;
+
+            Users user = db.Users.FirstOrDefault(m => m.Id == editData.ManageUserId) ?? new Users();
+            ViewBag.MakerCode = user.MakerCode;
+            return View();
+        }
+
+        #endregion
+
+        #region 一键添加仓库
+
+        /// <summary>
+        /// 一键添加仓库
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edits(StoreHouse data, string ManageMakerCode, string MakerCode)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            StoreHouse storeHouse = db.StoreHouse.FirstOrDefault(m => m.Id == data.Id);
+            var brand = db.StoreHouse.FirstOrDefault(m => m.UserId == storeHouse.UserId && m.BrandId == data.BrandId);
+            if (brand != null)
+            {
+                return "您已有该品牌类型的仓库,请重新选择";
+            }
+            var name = db.StoreHouse.FirstOrDefault(m => m.UserId == storeHouse.UserId && m.StoreName == data.StoreName);
+            if (name != null)
+            {
+                return "您的仓库名重复,请重新填写";
+            }
+            Fields.Add("StoreName", data.StoreName); //仓库名称
+            UserForMakerCode user = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+            if (user == null)
+            {
+                return "您输入的仓库归属创客编号不存在,请重新输入正确的仓库归属创客编号";
+            }
+            Fields.Add("UserId", user.UserId); //仓库归属人
+            Fields.Add("Areas", data.Areas); //所属地区
+            Fields.Add("Address", data.Address); //仓库地址
+            UserForMakerCode manage = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == ManageMakerCode);
+            if (manage == null)
+            {
+                return "您输入的仓库负责人编号不存在,请重新输入正确的仓库负责人编号";
+            }
+            Fields.Add("CreateMan", SysUserName); //创建人
+            Fields.Add("ManageUserId", manage.UserId); //仓库管理员
+            Fields.Add("ManagerEmail", data.ManagerEmail); //管理者邮箱
+            Fields.Add("ManageMobile", data.ManageMobile);
+            Fields.Add("Remark", data.Remark); //备注
+            Fields.Add("LimitTopUserId", data.LimitTopUserId); //限制创客特殊仓库
+            Fields.Add("StoreKind", data.StoreKind); //仓库归属类型
+            int bid = Convert.ToInt32(data.BrandId);
+            KqProducts pro = db.KqProducts.FirstOrDefault(m => m.Id == bid) ?? new KqProducts();
+            Fields.Add("BrandId", data.BrandId);
+            Fields.Add("ProductName", pro.Name);
+            Fields.Add("StoreStatus", 1);
+            Fields.Add("Status", 1);
+
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("StoreHouse", Fields, 0);
+            StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
+            if (edit != null)
+            {
+                string No = Id.ToString();
+                for (int i = 0; i < 7 - Id.ToString().Length; i++)
+                {
+                    No = "0" + No;
+                }
+                No = "S" + No;
+                edit.StoreNo = No;
+                db.StoreForCode.Add(new StoreForCode()
+                {
+                    Code = No,
+                    StoreId = Id,
+                });
+                RedisDbconn.Instance.Set("StoreForCode:" + No, Id);
+            }
+            StoreForName storeForName = db.StoreForName.FirstOrDefault(m => m.Name == data.StoreName);
+            if (storeForName == null)
+            {
+                db.StoreForName.Add(new StoreForName()
+                {
+                    Name = data.StoreName,
+                    StoreId = Id,
+                });
+            }
+            else
+            {
+                storeForName.StoreId = Id;
+            }
+            RedisDbconn.Instance.Set("StoreForName:" + data.StoreName, Id);
+            AddSysLog(data.Id.ToString(), "StoreHouse", "add");
+            db.SaveChanges();
+
+            SetRedis(Id, user.UserId);
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 删除仓库信息
+
+        /// <summary>
+        /// 删除仓库信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "StoreHouse", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                StoreHouse edit = db.StoreHouse.FirstOrDefault(m => m.Id == id);
+                if (edit != null)
+                {
+                    StoreForCode code = db.StoreForCode.FirstOrDefault(m => m.Code == edit.StoreNo);
+                    if (code != null)
+                    {
+                        db.StoreForCode.Remove(code);
+                    }
+                    StoreForName name = db.StoreForName.FirstOrDefault(m => m.Name == edit.StoreName);
+                    if (name != null)
+                    {
+                        db.StoreForName.Remove(name);
+                    }
+                }
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", 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, "StoreHouse", "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("StoreHouse", 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, "StoreHouse", "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("StoreHouse", 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("StoreHouse", Sort, Id);
+
+            AddSysLog(Id.ToString(), "StoreHouse", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+
+        public IActionResult Import(string right, string ExcelKind)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.ExcelKind = ExcelKind;
+            return View();
+        }
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        [HttpPost]
+        public string ImportPost(string ExcelPath, int Kind = 0)
+        {
+            // RedisDbconn.Instance.AddList("ExcelImport", ExcelPath + "#cut#" + Kind);
+            string key = function.MD5_16(Guid.NewGuid().ToString());
+            RedisDbconn.Instance.AddList("ExcelImportV2", ExcelPath + "#cut#" + Kind + "#cut#" + key + "#cut#" + SysUserName);
+            return "success|" + key;
+        }
+
+        // [HttpPost]
+        // public Dictionary<string, object> ImportPostV2(string ExcelPath, int Kind = 0)
+        // {
+        //     Dictionary<string, object> Obj = new Dictionary<string, object>();
+        //     string key = function.MD5_16(Guid.NewGuid().ToString());
+        //     RedisDbconn.Instance.AddList("ExcelImportV2", ExcelPath + "#cut#" + Kind + "#cut#" + key);
+        //     Obj.Add("status", "success");
+        //     Obj.Add("key", key);
+        //     Obj.Add("errlist", RedisDbconn.Instance.GetList<string>("ErrList" + key));
+        //     return Obj;
+        // }
+        public string CheckImport(string key)
+        {
+            string result = RedisDbconn.Instance.Get<string>("CheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    return result;
+                }
+                return datalist[0];
+            }
+            return "0";
+        }
+        public Dictionary<string, object> CheckImportV2(string key)
+        {
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            string result = RedisDbconn.Instance.Get<string>("CheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    List<string> errList = RedisDbconn.Instance.GetList<string>("ErrList" + key);
+                    if (errList.Count > 0)
+                    {
+                        Obj.Add("status", 2);
+                        Obj.Add("errList", errList);
+                    }
+                    else
+                    {
+                        Obj.Add("status", 1);
+                        Obj.Add("data", result);
+                    }
+                    return Obj;
+                }
+                Obj.Add("status", 0);
+                Obj.Add("data", datalist[0]);
+                return Obj;
+            }
+            Obj.Add("status", -1);
+            Obj.Add("data", "执行中...");
+            return Obj;
+        }
+        #endregion
+
+
+        #region 机具驳回仓库
+        /// <summary>
+        /// 机具驳回仓库
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        public string RejectStore(string ExcelData, int ExcelKind = 0)
+        {
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            if (ExcelKind == 1)
+            {
+                string error = "";
+                decimal amount = 0;
+                List<string> PosSnList = new List<string>();
+                for (int i = 1; i < list.Count; i++)
+                {
+                    JsonData dr = list[i];
+                    string itemJson = dr.ToJson();
+                    string PosSn = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                    string BrandId = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                    string MakerCode = itemJson.Contains("\"C\"") ? dr["C"].ToString() : "";
+                    string StoreNo = itemJson.Contains("\"D\"") ? dr["D"].ToString() : "";
+                    string No = itemJson.Contains("\"E\"") ? dr["E"].ToString() : "";
+                    string Remark = itemJson.Contains("\"F\"") ? dr["F"].ToString() : "";
+                    UserForMakerCode userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
+                    StoreForCode storeForCode = db.StoreForCode.FirstOrDefault(m => m.Code == StoreNo);
+                    var store = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
+                    MachineForSnNo machineForSnNo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == PosSn) ?? new MachineForSnNo();
+                    var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0 && m.BuyUserId == userForMakerCode.UserId) ?? new PosMachinesTwo();
+                    var posInfo = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machineForSnNo.SnId && m.BrandId == Convert.ToInt32(BrandId) && m.BindingState == 0) ?? new PosMachinesTwo();
+                    if (pos.Id == 0)
+                    {
+                        error += "以下操作失败" + PosSn + ',' + "未找到创客" + MakerCode + "的该台机具" + '\n';
+                    }
+                    if (store.Id == 0)
+                    {
+                        error += "以下操作失败" + PosSn + ',' + StoreNo + ',' + "未找到该仓库" + '\n';
+                    }
+                    if (posInfo.Id == 0)
+                    {
+                        error += "以下操作失败" + PosSn + ',' + "未找到该品牌的未使用机具" + '\n';
+                    }
+                    if (PosSnList.Contains(PosSn))
+                    {
+                        error += "以下操作失败" + PosSn + ',' + "该机具号重复" + '\n';
+                    }
+                    else
+                    {
+                        PosSnList.Add(PosSn);
+                        var fromStore = db.StoreHouse.FirstOrDefault(m => m.Id == pos.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
+                        var toStore = db.StoreHouse.FirstOrDefault(m => m.Id == storeForCode.StoreId && m.BrandId == BrandId) ?? new StoreHouse();
+                        var user = db.Users.FirstOrDefault(m => m.Id == toStore.UserId) ?? new Users();
+                        var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == toStore.UserId) ?? new UserAccount();
+                        var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == Convert.ToInt32(BrandId)) ?? new KqProducts();
+                        var fuserMachineData = db.UserMachineData.FirstOrDefault(m => m.IdBrand == userForMakerCode.UserId + "_" + brandInfo.Id);
+                        if (brandInfo.Name.Contains("电签"))
+                        {
+                            amount = 200;
+                        }
+                        if (brandInfo.Name.Contains("大POS"))
+                        {
+                            amount = 300;
+                        }
+                        userAccount.ValidAmount -= amount;
+                        db.SaveChanges();
+                        if (posInfo != null)
+                        {
+                            if (fromStore.Id != toStore.Id)
+                            {
+                                var changeNo = "JJBH" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
+                                StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    StoreId = fromStore.Id, //出货仓库
+                                    ToStoreId = toStore.Id, //发货仓库
+                                    BrandId = Convert.ToInt32(BrandId), //产品类型
+                                    ProductName = RelationClass.GetKqProductBrandInfo(Convert.ToInt32(BrandId)), //产品名称
+                                    ChangeNo = changeNo, //变更记录单号
+                                    BizBatchNo = No, //业务批次号
+                                    TransType = 4, //交易类型
+                                    SnNo = PosSn, //SN编号
+                                    StockOpDirect = 1, //库存操作方向
+                                    SnStatus = 1, //SN状态
+                                    DeviceVendor = posInfo.DeviceName, //设备厂商
+                                    DeviceModel = posInfo.DeviceKind, //设备型号
+                                    DeviceType = posInfo.DeviceType, //设备类型                    
+                                    SourceStoreId = posInfo.SourceStoreId, //源仓库编号
+                                    BrandType = posInfo.DeviceType, //品牌类型
+                                }).Entity;
+                                db.SaveChanges();
+
+                                db.StoreChangeHistory.Add(new StoreChangeHistory()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    UserId = user.Id, //创客
+                                    FromUserId = user.Id,//来源创客
+                                    ToUserId = toStore.UserId,//接收创客
+                                    StoreId = fromStore.Id, //出货仓库
+                                    ToStoreId = toStore.Id, //发货仓库
+                                    BrandId = Convert.ToInt32(BrandId), //产品类型
+                                    ChangeRecordNo = changeNo, //变更记录单号
+                                    SeoTitle = "机具驳回仓库",
+                                    BizBatchNo = No, //业务批次号
+                                    TransType = 4,//驳回
+                                    SnNo = PosSn, //SN编号
+                                });
+                                db.SaveChanges();
+
+                                StoreBalance fbalance = db.StoreBalance.Add(new StoreBalance()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    StoreId = fromStore.Id, //仓库
+                                    BrandId = Convert.ToInt32(BrandId), //产品类型
+                                    OpStoreNum = 1, //操作库存数
+                                    OpSymbol = "-", //操作符
+                                    BeforeTotalNum = fromStore.TotalNum, //操作前总库存数
+                                    AfterTotalNum = fromStore.TotalNum - 1, //操作后总库存数
+                                    BeforeLaveNum = fromStore.LaveNum, //操作前剩余库存数
+                                    AfterLaveNum = fromStore.LaveNum - 1, //操作后剩余库存数
+                                    BeforeOutNum = fromStore.OutNum, //操作前出库数
+                                    AfterOutNum = fromStore.OutNum - 1, //操作后出库数
+                                }).Entity;
+                                db.SaveChanges();
+
+                                StoreBalance tbalance = db.StoreBalance.Add(new StoreBalance()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    StoreId = toStore.Id, //仓库
+                                    BrandId = Convert.ToInt32(BrandId), //产品类型
+                                    OpStoreNum = 1, //操作库存数
+                                    OpSymbol = "+", //操作符
+                                    BeforeTotalNum = toStore.TotalNum, //操作前总库存数
+                                    AfterTotalNum = toStore.TotalNum + 1, //操作后总库存数
+                                    BeforeLaveNum = toStore.LaveNum, //操作前剩余库存数
+                                    AfterLaveNum = toStore.LaveNum + 1, //操作后剩余库存数
+                                    BeforeOutNum = toStore.OutNum, //操作前出库数
+                                    AfterOutNum = toStore.OutNum, //操作后出库数
+                                }).Entity;
+                                db.SaveChanges();
+
+                                posInfo.StoreId = toStore.Id;
+                                posInfo.BuyUserId = 0;
+                                posInfo.UserId = 0;
+                                posInfo.RecycEndDate = null;
+                                posInfo.PosSnType = 0;
+                                posInfo.BindMerchantId = 0;
+                                posInfo.ActivityList = null;
+                                posInfo.ScanQrTrade = 0;
+                                posInfo.DebitCardTrade = 0;
+                                posInfo.PrizeParams = null;
+                                posInfo.IsVip = 0;
+                                posInfo.CreditTrade = 0;
+                                posInfo.UserNav = null;
+                                posInfo.TransferTime = null;
+                                posInfo.IsPurchase = 0;
+                                posInfo.BindingTime = null;
+                                posInfo.BindingState = 0;
+                                posInfo.ActivationTime = null;
+                                posInfo.ActivationState = 0;
+                                posInfo.LeaderUserId = 0;
+                                posInfo.PreUserId = 0;
+                                posInfo.IsFirst = 0;
+                                fuserMachineData.TotalMachineCount -= 1;
+                                fuserMachineData.UnBindCount -= 1;
+                                toStore.TotalNum += 1;
+                                toStore.LaveNum += 1;
+                                fromStore.TotalNum -= 1;
+                                fromStore.LaveNum -= 1;
+                                db.SaveChanges();
+                            }
+                            else
+                            {
+                                var changeNo = "JJBH" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
+                                StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    StoreId = fromStore.Id, //出货仓库
+                                    ToStoreId = toStore.Id, //发货仓库
+                                    BrandId = Convert.ToInt32(BrandId), //产品类型
+                                    ProductName = RelationClass.GetKqProductBrandInfo(Convert.ToInt32(BrandId)), //产品名称
+                                    ChangeNo = changeNo, //变更记录单号
+                                    BizBatchNo = No, //业务批次号
+                                    TransType = 4, //交易类型
+                                    SnNo = PosSn, //SN编号
+                                    StockOpDirect = 1, //库存操作方向
+                                    SnStatus = 1, //SN状态
+                                    DeviceVendor = posInfo.DeviceName, //设备厂商
+                                    DeviceModel = posInfo.DeviceKind, //设备型号
+                                    DeviceType = posInfo.DeviceType, //设备类型                    
+                                    SourceStoreId = posInfo.SourceStoreId, //源仓库编号
+                                    BrandType = posInfo.DeviceType, //品牌类型
+                                }).Entity;
+                                db.SaveChanges();
+
+                                db.StoreChangeHistory.Add(new StoreChangeHistory()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    UserId = user.Id, //创客
+                                    FromUserId = user.Id,//来源创客
+                                    ToUserId = toStore.UserId,//接收创客
+                                    StoreId = fromStore.Id, //出货仓库
+                                    ToStoreId = toStore.Id, //发货仓库
+                                    BrandId = Convert.ToInt32(BrandId), //产品类型
+                                    ChangeRecordNo = changeNo, //变更记录单号
+                                    SeoTitle = "机具驳回仓库",
+                                    BizBatchNo = No, //业务批次号
+                                    SnNo = PosSn, //SN编号
+                                    TransType = 4,//驳回
+                                });
+                                db.SaveChanges();
+
+                                StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
+                                {
+                                    CreateDate = DateTime.Now,
+                                    StoreId = fromStore.Id, //仓库
+                                    BrandId = Convert.ToInt32(BrandId), //产品类型
+                                    OpStoreNum = 1, //操作库存数
+                                    OpSymbol = "-", //操作符
+                                    BeforeTotalNum = fromStore.TotalNum, //操作前总库存数
+                                    AfterTotalNum = fromStore.TotalNum - 1, //操作后总库存数
+                                    BeforeLaveNum = fromStore.LaveNum, //操作前剩余库存数
+                                    AfterLaveNum = fromStore.LaveNum - 1, //操作后剩余库存数
+                                    BeforeOutNum = fromStore.OutNum, //操作前出库数
+                                    AfterOutNum = fromStore.OutNum - 1, //操作后出库数
+                                }).Entity;
+                                db.SaveChanges();
+
+                                posInfo.StoreId = toStore.Id;
+                                posInfo.BuyUserId = 0;
+                                posInfo.UserId = 0;
+                                posInfo.RecycEndDate = null;
+                                posInfo.PosSnType = 0;
+                                posInfo.BindMerchantId = 0;
+                                posInfo.ActivityList = null;
+                                posInfo.ScanQrTrade = 0;
+                                posInfo.DebitCardTrade = 0;
+                                posInfo.PrizeParams = null;
+                                posInfo.IsVip = 0;
+                                posInfo.CreditTrade = 0;
+                                posInfo.UserNav = null;
+                                posInfo.TransferTime = null;
+                                posInfo.IsPurchase = 0;
+                                posInfo.BindingTime = null;
+                                posInfo.BindingState = 0;
+                                posInfo.ActivationTime = null;
+                                posInfo.ActivationState = 0;
+                                posInfo.LeaderUserId = 0;
+                                posInfo.PreUserId = 0;
+                                posInfo.IsFirst = 0;
+                                fuserMachineData.TotalMachineCount -= 1;
+                                fuserMachineData.UnBindCount -= 1;
+                                toStore.LaveNum += 1;
+                                toStore.TotalNum += 1;
+                                db.SaveChanges();
+                            }
+                            db.SaveChanges();
+
+                        }
+                    }
+
+                }
+                if (!string.IsNullOrEmpty(error))
+                {
+                    return "Warning|" + error;
+                }
+            }
+            AddSysLog("0", "MachinesRejectStore", "Import");
+            return "success";
+        }
+        #endregion
+
+
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(StoreHouse data, string UserIdMakerCode, string UserIdRealName, string ManageUserIdRealName, string ManageUserIdMobile, string ManageUserIdMakerCode, string StoreStatusSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("StoreNo", "1"); //仓库编号
+            Fields.Add("CreateDate", "3"); //时间
+            Fields.Add("StoreName", "1"); //仓库名称
+            Fields.Add("ManagerEmail", "1"); //管理者邮箱
+
+
+            string condition = " and Status>-1";
+            //仓库归属人创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+            //仓库归属人真实姓名
+            if (!string.IsNullOrEmpty(UserIdRealName))
+            {
+                condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
+            }
+            //仓库管理员真实姓名
+            if (!string.IsNullOrEmpty(ManageUserIdRealName))
+            {
+                condition += " and ManageUserId in (select ManageUserId from UserForRealName where RealName='" + ManageUserIdRealName + "')";
+            }
+            //仓库管理员手机号
+            if (!string.IsNullOrEmpty(ManageUserIdMobile))
+            {
+                condition += " and ManageUserId in (select ManageUserId from UserForMobile where Mobile='" + ManageUserIdMobile + "')";
+            }
+            //仓库管理员创客编号
+            if (!string.IsNullOrEmpty(ManageUserIdMakerCode))
+            {
+                condition += " and ManageUserId in (select ManageUserId from UserForMakerCode where MakerCode='" + ManageUserIdMakerCode + "')";
+            }
+            //仓库状态
+            if (!string.IsNullOrEmpty(StoreStatusSelect))
+            {
+                condition += " and StoreStatus=" + StoreStatusSelect;
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreHouse", Fields, "Id desc", "0", 1, 20000, condition, "StoreNo,StoreName,UserId,BrandId,Address,ManageUserId,ManagerEmail,StoreType,TotalNum,LaveNum,OutNum,LimitTopUserId,StoreStatus,StoreKind", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //仓库归属人
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserIdMakerCode"] = userid_Users.MakerCode;
+                dic["UserIdRealName"] = userid_Users.RealName;
+                //产品类型
+                dic["BrandId"] = RelationClass.GetKqProductBrandList(dic["BrandId"].ToString());
+                //仓库管理员
+                int ManageUserId = int.Parse(function.CheckInt(dic["ManageUserId"].ToString()));
+                Users manageuserid_Users = db.Users.FirstOrDefault(m => m.Id == ManageUserId) ?? new Users();
+                dic["ManageUserIdRealName"] = manageuserid_Users.RealName;
+                dic["ManageUserIdMobile"] = manageuserid_Users.Mobile;
+                dic["ManageUserIdMakerCode"] = manageuserid_Users.MakerCode;
+                //仓库类型
+                int StoreType = int.Parse(dic["StoreType"].ToString());
+                if (StoreType == 0) dic["StoreType"] = "实体仓";
+                if (StoreType == 1) dic["StoreType"] = "虚拟仓";
+                //仓库状态
+                int StoreStatus = int.Parse(dic["StoreStatus"].ToString());
+                if (StoreStatus == 1) dic["StoreStatus"] = "启用";
+                if (StoreStatus == 0) dic["StoreStatus"] = "禁用";
+                //仓库归属类型
+                int StoreKind = int.Parse(dic["StoreKind"].ToString());
+                if (StoreKind == 0) dic["StoreKind"] = "分仓";
+                if (StoreKind == 1) dic["StoreKind"] = "总仓";
+
+            }
+
+            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("StoreNo", "仓库编号");
+            ReturnFields.Add("StoreName", "仓库名称");
+            ReturnFields.Add("UserIdMakerCode", "仓库归属人创客编号");
+            ReturnFields.Add("UserIdRealName", "仓库归属人真实姓名");
+            ReturnFields.Add("BrandId", "产品类型");
+            ReturnFields.Add("Address", "仓库地址");
+            ReturnFields.Add("ManageUserIdRealName", "仓库管理员真实姓名");
+            ReturnFields.Add("ManageUserIdMobile", "仓库管理员手机号");
+            ReturnFields.Add("ManageUserIdMakerCode", "仓库管理员创客编号");
+            ReturnFields.Add("ManagerEmail", "管理者邮箱");
+            ReturnFields.Add("StoreType", "仓库类型");
+            ReturnFields.Add("TotalNum", "总库存数");
+            ReturnFields.Add("LaveNum", "剩余库存数");
+            ReturnFields.Add("OutNum", "出库数");
+            ReturnFields.Add("LimitTopUserId", "限制创客特殊仓库");
+            ReturnFields.Add("StoreStatus", "仓库状态");
+            ReturnFields.Add("StoreKind", "仓库归属类型");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "StoreHouse", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+
+
+
+        #region 仓库列表
+
+        /// <summary>
+        /// 根据条件查询仓库列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Stat(StoreHouse data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询仓库列表
+
+        /// <summary>
+        /// 仓库列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult StatDo(string CreateDateData, int page = 1, int limit = 30)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["StatSqlConnStr"].ToString();
+            string sCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
+            string eCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
+            if (!string.IsNullOrEmpty(CreateDateData))
+            {
+                string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                sCreateDate = datelist[0] + " 00:00:00";
+                eCreateDate = datelist[1] + " 23:59:59";
+            }
+            else
+            {
+                Dictionary<string, object> nodata = new Dictionary<string, object>();
+                nodata.Add("code", 0);
+                nodata.Add("msg", "");
+                nodata.Add("count", 0);
+                nodata.Add("data", new List<Dictionary<string, object>>());
+
+                return Json(nodata);
+            }
+            string minId = "0";
+            string maxId = "0";
+            string minPosId = "0";
+            string maxPosId = "0";
+            DataTable startDt = OtherMySqlConn.dtable("select min(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
+            if (startDt.Rows.Count > 0)
+            {
+                minId = function.CheckInt(startDt.Rows[0][0].ToString());
+                if (minId == "0")
+                {
+                    startDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
+                    if (startDt.Rows.Count > 0)
+                    {
+                        minId = function.CheckInt(startDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
+            if (endDt.Rows.Count > 0)
+            {
+                maxId = function.CheckInt(endDt.Rows[0][0].ToString());
+                if (minId == "0")
+                {
+                    endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
+                    if (endDt.Rows.Count > 0)
+                    {
+                        maxId = function.CheckInt(endDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable startPosDt = OtherMySqlConn.dtable("select min(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
+            if (startPosDt.Rows.Count > 0)
+            {
+                minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
+                if (minPosId == "0")
+                {
+                    startPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
+                    if (startPosDt.Rows.Count > 0)
+                    {
+                        minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
+            if (endPosDt.Rows.Count > 0)
+            {
+                maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
+                if (maxPosId == "0")
+                {
+                    endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
+                    if (endPosDt.Rows.Count > 0)
+                    {
+                        maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable list = OtherMySqlConn.dtable("select * from (select s.StoreName,s.StoreNo,u.RealName,u.Mobile,k.Name,s.LaveNum,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType=1) as c1,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType in (10,11,2)) as c2,(select count(Id) from PosMachinesTwo where Id>=" + minPosId + " and Id<=" + maxPosId + " and ActivationState=1 and ActivationTime>='" + sCreateDate + "' and ActivationTime<='" + eCreateDate + "' and StoreId=s.Id) as c3 from StoreHouse s left join Users u on s.BrandId>0 and s.UserId=u.Id left join KqProducts k on s.BrandId=k.Id) tb where c1>0 or c2>0 or c3>0");
+
+            int recordcount = list.Rows.Count;
+            List<Dictionary<string, object>> diclist = new List<Dictionary<string, object>>();
+            foreach (DataRow sub in list.Rows)
+            {
+                Dictionary<string, object> row = new Dictionary<string, object>();
+                row.Add("StoreName", sub["StoreName"].ToString());
+                row.Add("StoreNo", sub["StoreNo"].ToString());
+                row.Add("Mobile", sub["Mobile"].ToString());
+                row.Add("RealName", sub["RealName"].ToString());
+                row.Add("Name", sub["Name"].ToString());
+                row.Add("LaveNum", sub["LaveNum"].ToString());
+                row.Add("c1", sub["c1"].ToString());
+                row.Add("c2", sub["c2"].ToString());
+                row.Add("c3", sub["c3"].ToString());
+                diclist.Add(row);
+            }
+
+            Dictionary<string, object> obj = new Dictionary<string, object>();
+            obj.Add("code", 0);
+            obj.Add("msg", "");
+            obj.Add("count", recordcount);
+            obj.Add("data", diclist);
+
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult StatExportExcel(string CreateDateData)
+        {
+            OtherMySqlConn.connstr = ConfigurationManager.AppSettings["StatSqlConnStr"].ToString();
+            string sCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
+            string eCreateDate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
+            if (!string.IsNullOrEmpty(CreateDateData))
+            {
+                string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
+                sCreateDate = datelist[0] + " 00:00:00";
+                eCreateDate = datelist[1] + " 23:59:59";
+            }
+            else
+            {
+                Dictionary<string, object> nodata = new Dictionary<string, object>();
+                nodata.Add("Status", "1");
+                nodata.Add("Info", "分仓统计数据报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+                nodata.Add("Obj", new List<Dictionary<string, object>>());
+                Dictionary<string, object> NoDataReturnFields = new Dictionary<string, object>();
+                NoDataReturnFields.Add("StoreName", "仓库名称");
+                NoDataReturnFields.Add("StoreNo", "仓库编号");
+                NoDataReturnFields.Add("Mobile", "仓库所属人手机号");
+                NoDataReturnFields.Add("RealName", "仓库所属人名称");
+                NoDataReturnFields.Add("MakerCode", "仓库所属人编码");
+                NoDataReturnFields.Add("ManageMakerCode", "仓库管理员编码");
+                NoDataReturnFields.Add("Name", "品牌");
+                NoDataReturnFields.Add("LaveNum", "当前库存");
+                NoDataReturnFields.Add("c1", "出库(调拨)量");
+                NoDataReturnFields.Add("c2", "出货(发货到创客)量");
+                NoDataReturnFields.Add("c3", "激活量");
+                nodata.Add("Fields", NoDataReturnFields);
+                return Json(nodata);
+            }
+            string minId = "0";
+            string maxId = "0";
+            string minPosId = "0";
+            string maxPosId = "0";
+            DataTable startDt = OtherMySqlConn.dtable("select min(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
+            if (startDt.Rows.Count > 0)
+            {
+                minId = function.CheckInt(startDt.Rows[0][0].ToString());
+                if (minId == "0")
+                {
+                    startDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
+                    if (startDt.Rows.Count > 0)
+                    {
+                        minId = function.CheckInt(startDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange where CreateDate>='" + sCreateDate + "'");
+            if (endDt.Rows.Count > 0)
+            {
+                maxId = function.CheckInt(endDt.Rows[0][0].ToString());
+                if (minId == "0")
+                {
+                    endDt = OtherMySqlConn.dtable("select max(Id) from StoreStockChange");
+                    if (endDt.Rows.Count > 0)
+                    {
+                        maxId = function.CheckInt(endDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable startPosDt = OtherMySqlConn.dtable("select min(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
+            if (startPosDt.Rows.Count > 0)
+            {
+                minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
+                if (minPosId == "0")
+                {
+                    startPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
+                    if (startPosDt.Rows.Count > 0)
+                    {
+                        minPosId = function.CheckInt(startPosDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo where ActivationTime>='" + sCreateDate + "'");
+            if (endPosDt.Rows.Count > 0)
+            {
+                maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
+                if (maxPosId == "0")
+                {
+                    endPosDt = OtherMySqlConn.dtable("select max(Id) from PosMachinesTwo");
+                    if (endPosDt.Rows.Count > 0)
+                    {
+                        maxPosId = function.CheckInt(endPosDt.Rows[0][0].ToString());
+                    }
+                }
+            }
+            DataTable list = OtherMySqlConn.dtable("select * from (select s.StoreName,s.StoreNo,u.RealName,u.Mobile,u.MakerCode,(select MakerCode from Users where Id=s.ManageUserId) as ManageMakerCode,k.Name,s.LaveNum,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType=1) as c1,(select count(Id) from StoreStockChange where Id>=" + minId + " and Id<=" + maxId + " and CreateDate>='" + sCreateDate + "' and CreateDate<='" + eCreateDate + "' and StoreId=s.Id and TransType in (10,11,2)) as c2,(select count(Id) from PosMachinesTwo where Id>=" + minPosId + " and Id<=" + maxPosId + " and ActivationState=1 and ActivationTime>='" + sCreateDate + "' and ActivationTime<='" + eCreateDate + "' and StoreId=s.Id) as c3 from StoreHouse s left join Users u on s.BrandId>0 and s.UserId=u.Id left join KqProducts k on s.BrandId=k.Id) tb where c1>0 or c2>0 or c3>0");
+
+            int recordcount = list.Rows.Count;
+            List<Dictionary<string, object>> diclist = new List<Dictionary<string, object>>();
+            foreach (DataRow sub in list.Rows)
+            {
+                Dictionary<string, object> row = new Dictionary<string, object>();
+                row.Add("StoreName", sub["StoreName"].ToString());
+                row.Add("StoreNo", sub["StoreNo"].ToString());
+                row.Add("Mobile", sub["Mobile"].ToString());
+                row.Add("RealName", sub["RealName"].ToString());
+                row.Add("MakerCode", sub["MakerCode"].ToString());
+                row.Add("ManageMakerCode", sub["ManageMakerCode"].ToString());
+                row.Add("Name", sub["Name"].ToString());
+                row.Add("LaveNum", sub["LaveNum"].ToString());
+                row.Add("c1", sub["c1"].ToString());
+                row.Add("c2", sub["c2"].ToString());
+                row.Add("c3", sub["c3"].ToString());
+                diclist.Add(row);
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "分仓统计数据报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+            ReturnFields.Add("StoreName", "仓库名称");
+            ReturnFields.Add("StoreNo", "仓库编号");
+            ReturnFields.Add("Mobile", "仓库所属人手机号");
+            ReturnFields.Add("RealName", "仓库所属人名称");
+            ReturnFields.Add("MakerCode", "仓库所属人编码");
+            ReturnFields.Add("ManageMakerCode", "仓库管理员编码");
+            ReturnFields.Add("Name", "品牌");
+            ReturnFields.Add("LaveNum", "当前库存");
+            ReturnFields.Add("c1", "出库(调拨)量");
+            ReturnFields.Add("c2", "出货(发货到创客)量");
+            ReturnFields.Add("c3", "激活量");
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "StoreHouse", "StatExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+        #region 同步数据
+
+        /// <summary>
+        /// 同步数据
+        /// </summary>
+        /// <returns></returns>
+        public string SycnData(int Id = 0)
+        {
+            if (Id > 0)
+            {
+                DataTable dt = OtherMySqlConn.dtable("select Id,(select count(Id) from PosMachinesTwo where StoreId=s.Id and BuyUserId=0 and PreUserId=0 and Status>-1) as CurLaveNum from StoreHouse s where Id=" + Id);
+                if (dt.Rows.Count > 0)
+                {
+                    int CurLaveNum = int.Parse(function.CheckInt(dt.Rows[0]["CurLaveNum"].ToString()));
+                    StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == Id);
+                    if (store != null)
+                    {
+                        store.LaveNum = CurLaveNum;
+                        db.SaveChanges();
+                    }
+                }
+            }
+            else
+            {
+                DataTable dt = OtherMySqlConn.dtable("select s.Id,LaveNum,count(p.Id) as CurLaveNum from StoreHouse s left join PosMachinesTwo p on s.Id=p.StoreId and s.BrandId=p.BrandId and p.BuyUserId=0 and p.PreUserId=0 and p.Status>-1 group by s.Id HAVING LaveNum!=count(p.Id)");
+                foreach (DataRow dr in dt.Rows)
+                {
+                    int StoreId = int.Parse(function.CheckInt(dr["Id"].ToString()));
+                    int CurLaveNum = int.Parse(function.CheckInt(dr["CurLaveNum"].ToString()));
+                    StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
+                    if (store != null)
+                    {
+                        store.LaveNum = CurLaveNum;
+                        db.SaveChanges();
+                    }
+                }
+            }
+            AddSysLog(Id, "StoreHouse", "SycnData");
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 设置缓存
+
+        private void SetRedis(int Id, int UserId)
+        {
+            if (UserId > 0)
+            {
+            }
+        }
+
+        #endregion
+
+
+        #region 关联分仓
+
+        /// <summary>
+        /// 关联分仓
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult BatchSetting(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+
+        #region 关联分仓
+
+        /// <summary>
+        /// 关联分仓
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string BatchSetting(string Id, string MakerCode)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "StoreHouse", "StoreHouseBatchSetting");
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == userForMakerCode.UserId) ?? new OpModels.SysAdmin();
+                if (sysAdmin.Id > 0)
+                {
+                    DataTable dt = OtherMySqlConn.dtable("UPDATE StoreHouse SET OpId=" + sysAdmin.Id + " WHERE Id IN (" + Id + ") AND OpId =" + sysAdmin.Id + " AND `Status` >0");
+                    // new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, pos.Id);
+                    db.SaveChanges();
+                    foreach (var item in idlist)
+                    {
+                        int StoreId = int.Parse(item);
+                        var amount = 0;
+                        var tamount = 0;
+                        var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
+                        var posCount = db.PosMachinesTwo.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0).Count();
+                        var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == int.Parse(storeInfo.BrandId));
+                        if (brandInfo.Name.Contains("电签"))
+                        {
+                            amount = 100;
+                        }
+                        if (brandInfo.Name.Contains("大POS"))
+                        {
+                            amount = 150;
+                        }
+                        tamount = amount * posCount;//扣减运营中心该品牌机具额度
+                        var userAmount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sysAdmin.Id) ?? new OpModels.UserAccount();
+                        userAmount.ValidAmount -= tamount;
+                        storeInfo.OpId = sysAdmin.Id;
+                        db.SaveChanges();
+                        opdb.SaveChanges();
+                        var query = opdb.StoreForOperate.FirstOrDefault(m => m.OpId == sysAdmin.Id && m.StoreId == StoreId);
+                        if (query == null)
+                        {
+                            query = opdb.StoreForOperate.Add(new OpModels.StoreForOperate()
+                            {
+                                CreateDate = DateTime.Now, //创建时间
+                                OpId = sysAdmin.Id,
+                                StoreId = StoreId,
+                            }).Entity;
+                            opdb.SaveChanges();
+                        }
+                    }
+                    sysAdmin.StoreCount += idlist.Count();//添加关联分仓数
+                }
+            }
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 取消关联
+
+        /// <summary>
+        /// 取消关联
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult BatchCancle(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+
+        #region 取消关联
+
+        /// <summary>
+        /// 取消关联
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string BatchCancle(string Id, string MakerCode)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "StoreHouse", "StoreHouseBatchCancle");
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == userForMakerCode.UserId);
+                if (sysAdmin.Id > 0)
+                {
+                    DataTable dt = OtherMySqlConn.dtable("UPDATE StoreHouse SET OpId=0 WHERE Id IN (" + Id + ") AND OpId =" + sysAdmin.Id + " AND `Status` >0");
+                    // new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreHouse", Fields, pos.Id);
+                    db.SaveChanges();
+                    foreach (var item in idlist)
+                    {
+                        int StoreId = int.Parse(item);
+                        var amount = 0;
+                        var tamount = 0;
+                        var storeInfo = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId);
+                        var posCount = db.PosMachinesTwo.Where(m => m.StoreId == StoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0).Count();
+                        var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == int.Parse(storeInfo.BrandId));
+                        if (brandInfo.Name.Contains("电签"))
+                        {
+                            amount = 100;
+                        }
+                        if (brandInfo.Name.Contains("大POS"))
+                        {
+                            amount = 150;
+                        }
+                        tamount = amount * posCount;//扣减运营中心该品牌机具额度
+                        var userAmount = opdb.UserAccount.FirstOrDefault(m => m.UserId == sysAdmin.Id) ?? new OpModels.UserAccount();
+                        userAmount.ValidAmount += tamount;
+                        opdb.SaveChanges();
+                        var query = opdb.StoreForOperate.FirstOrDefault(m => m.OpId == sysAdmin.Id && m.StoreId == StoreId);
+                        if (query != null)
+                        {
+                            query.UpdateDate = DateTime.Now;
+                            query.Status = -1;
+                            opdb.SaveChanges();
+                        }
+                    }
+                    sysAdmin.StoreCount -= idlist.Count();//减少关联分仓数
+                }
+            }
+            return "success";
+        }
+
+        #endregion
+
+    }
+}

+ 1012 - 0
Areas/Admin/Controllers/OperateServer/StoreMachineApplyOperateController.cs

@@ -0,0 +1,1012 @@
+/*
+ * 运营中心机具申请记录
+ */
+
+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.OpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class StoreMachineApplyOperateController : BaseController
+    {
+        public StoreMachineApplyOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+        }
+
+        #region 运营中心机具申请记录列表
+
+        /// <summary>
+        /// 根据条件查询运营中心机具申请记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(StoreMachineApply data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询运营中心机具申请记录列表
+
+        /// <summary>
+        /// 运营中心机具申请记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(StoreMachineApply data, string MakerCode, string OpCode, string CreateDateData, string StatusSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("ApplyNo", "1"); //申请单号
+            Fields.Add("SendMode", "1"); //发货方式
+
+
+            string condition = " and Status>-1 and Sort=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'";
+            }
+            //创客编号
+            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(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect + "";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("StoreMachineApply", 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)
+            {
+                //品牌
+                dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["StatusName"] = "待配货";
+                if (Status == 1) dic["StatusName"] = "已发货";
+                if (Status == 2) dic["StatusName"] = "已驳回";
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new SysAdmin();
+                dic["MakerName"] = sysAdmin.MakerName;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic.Remove("UserId");
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+
+        #region 运营中心机具券申请记录列表
+
+        /// <summary>
+        /// 根据条件查询运营中心机具券申请记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Indexs(StoreMachineApply data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询运营中心机具券申请记录列表
+
+        /// <summary>
+        /// 运营中心机具券申请记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexsData(StoreMachineApply data, string MakerCode, string OpCode, string CreateDateData, string StatusSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("ApplyNo", "1"); //申请单号
+            Fields.Add("SendMode", "1"); //发货方式
+
+
+            string condition = " and Status>-1 and Sort=1";
+            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'";
+            }
+            //创客编号
+            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(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect + "";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("StoreMachineApply", 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)
+            {
+                //品牌
+                dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["StatusName"] = "待配货";
+                if (Status == 1) dic["StatusName"] = "已发货";
+                if (Status == 2) dic["StatusName"] = "已驳回";
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new SysAdmin();
+                dic["MakerName"] = sysAdmin.MakerName;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic.Remove("UserId");
+
+            }
+            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(StoreMachineApply data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("BrandId", data.BrandId); //品牌
+            Fields.Add("ApplyNo", data.ApplyNo); //申请单号
+            Fields.Add("ApplyNum", data.ApplyNum); //申请台数
+            Fields.Add("SendNum", data.SendNum); //发货台数
+            Fields.Add("UseAmount", data.UseAmount); //使用额度
+            Fields.Add("SendMode", data.SendMode); //发货方式
+            Fields.Add("ErpCode", data.ErpCode); //快递单号
+            Fields.Add("SendSn", data.SendSn); //发货SN数据
+            Fields.Add("UserId", data.UserId); //创客
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("StoreMachineApply", Fields, 0);
+            AddSysLog(data.Id.ToString(), "StoreMachineApply", "add");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改分仓机具申请记录
+
+        /// <summary>
+        /// 增加或修改分仓机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            StoreMachineApply editData = opdb.StoreMachineApply.FirstOrDefault(m => m.Id == Id) ?? new StoreMachineApply();
+            ViewBag.data = editData;
+
+            Models.WebCMSEntities db = new Models.WebCMSEntities();
+            // Users users = db.Users.FirstOrDefault(m => m.Id == editData.UserId) ?? new Users();
+            SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Status == 0 && m.UserId == editData.UserId) ?? new SysAdmin();
+            ViewBag.UserId = sysAdmin.Id;
+            ViewBag.MakerCode = sysAdmin.MakerCode;
+            ViewBag.MakerName = sysAdmin.MakerName;
+            ViewBag.UseAmount = editData.UseAmount;
+            JsonData SendSnList = new JsonData();
+            SendSnList = JsonMapper.ToObject(editData.SendSn);//申请数据
+            List<Dictionary<string, object>> KsProductList = new List<Dictionary<string, object>>();
+            for (int i = 0; i < SendSnList.Count; i++)
+            {
+                int BrandId = Convert.ToInt32(SendSnList[i]["BrandId"].ToString());
+                int Num = Convert.ToInt32(SendSnList[i]["ApplyNum"].ToString());
+                var products = db.KqProducts.Where(m => m.Id == BrandId).ToList();
+                foreach (var product in products)
+                {
+                    Dictionary<string, object> item = new Dictionary<string, object>();
+                    item.Add("BrandId", BrandId);  //商品Id
+                    item.Add("Name", product.Name);  //商品名称
+                    item.Add("Num", Num);  //商品数量
+                    KsProductList.Add(item);
+                }
+            }
+            ViewBag.KsProductList = KsProductList;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 修改分仓机具申请记录
+
+        /// <summary>
+        /// 增加或修改分仓机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(StoreMachineApply data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("SendSn", data.SendSn); //发货SN数据
+            JsonData SendSnList = new JsonData();
+            SendSnList = JsonMapper.ToObject(data.SendSn);//申请数据
+            int ApplyNum = 0;
+            for (int i = 0; i < SendSnList.Count; i++)
+            {
+                int num = Convert.ToInt32(SendSnList[i]["ApplyNum"].ToString());
+                ApplyNum += num;
+            }
+            Fields.Add("BrandId", data.BrandId); //品牌
+            Fields.Add("ApplyNo", data.ApplyNo); //申请单号
+            Fields.Add("ApplyNum", ApplyNum); //申请台数
+            Fields.Add("SendNum", data.SendNum); //发货台数
+            Fields.Add("UseAmount", data.UseAmount); //使用额度
+            Fields.Add("SendMode", data.SendMode); //发货方式
+            Fields.Add("ErpCode", data.ErpCode); //快递单号
+            Fields.Add("UserId", data.UserId); //创客
+
+            Fields.Add("SeoTitle", SysUserName + '-' + SysRealName);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("StoreMachineApply", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "OpStoreMachineApply", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除分仓机具申请记录信息
+
+        /// <summary>
+        /// 删除分仓机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "StoreMachineApply", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("StoreMachineApply", 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, "StoreMachineApply", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("StoreMachineApply", 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, "StoreMachineApply", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 2);
+                var query = opdb.StoreMachineApply.FirstOrDefault(m => m.Id == id);
+                string[] amountlist = query.SeoTitle.Split(',');
+                decimal ValidAmount = decimal.Parse(amountlist[0]);
+                decimal TotalAmt = decimal.Parse(amountlist[1]);
+                decimal ValidForGetAmount = decimal.Parse(amountlist[2]);
+                var users = opdb.UserAccount.FirstOrDefault(m => m.Status == 0 && m.UserId == query.UserId) ?? new UserAccount();
+                if (users.Id > 0)
+                {
+                    var amountRecord = opdb.AmountRecord.Add(new AmountRecord()
+                    {
+                        CreateDate = DateTime.Now,
+                        CreateMan = SysUserName + "-" + SysRealName,
+                        SeoDescription = "机具申请驳回",
+                        OperateType = 1,//增加
+                        BeforeAmount = users.ValidAmount + users.TotalAmt + users.ValidForGetAmount,
+                        AfterAmount = users.ValidAmount + users.TotalAmt + users.ValidForGetAmount + query.UseAmount,
+                        UseAmount = query.UseAmount,
+                        UserId = query.UserId,
+                        ApplyId = query.Id,
+                    }).Entity;
+
+                    users.ValidAmount += ValidAmount;
+                    users.TotalAmt += TotalAmt;
+                    users.ValidForGetAmount += ValidForGetAmount;
+                    opdb.SaveChanges();
+                }
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("StoreMachineApply", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("StoreMachineApply", Sort, Id);
+
+            AddSysLog(Id.ToString(), "StoreMachineApply", "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];
+
+                opdb.StoreMachineApply.Add(new StoreMachineApply()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "OpStoreMachineApply", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(StoreMachineApply data, string BrandIdSelect, string UserIdRealName, string UserIdMakerCode)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CreateDate", "3"); //时间
+            Fields.Add("ApplyNo", "1"); //申请单号
+            Fields.Add("SendMode", "1"); //发货方式
+
+
+            string condition = " and Status>-1";
+            //品牌
+            if (!string.IsNullOrEmpty(BrandIdSelect))
+            {
+                condition += " and BrandId=" + BrandIdSelect;
+            }
+            //创客真实姓名
+            if (!string.IsNullOrEmpty(UserIdRealName))
+            {
+                condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
+            }
+            //创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("StoreMachineApply", Fields, "Id desc", "0", 1, 20000, condition, "BrandId,ApplyNo,ApplyNum,SendNum,UseAmount,SendMode,ErpCode,UserId", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //品牌
+                dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
+                dic["StatusName"] = dic["Status"].ToString() == "1" ? "正常" : "关闭";
+                //运营中心
+                int OpId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == OpId) ?? new SysAdmin();
+                // Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["MakerName"] = sysAdmin.MakerName;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic.Remove("OpId");
+
+            }
+
+            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("BrandId", "品牌");
+            ReturnFields.Add("ApplyNo", "申请单号");
+            ReturnFields.Add("ApplyNum", "申请台数");
+            ReturnFields.Add("SendNum", "发货台数");
+            ReturnFields.Add("UseAmount", "使用额度");
+            ReturnFields.Add("SendMode", "发货方式");
+            ReturnFields.Add("ErpCode", "快递单号");
+            ReturnFields.Add("MakerName", "创客真实姓名");
+            ReturnFields.Add("MakerName", "创客编号");
+            ReturnFields.Add("OpCode", "运营中心编号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "OpStoreMachineApply", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+        #region 审核发货
+
+        public IActionResult AuditSend(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            StoreMachineApply editData = opdb.StoreMachineApply.FirstOrDefault(m => m.Id == Id) ?? new StoreMachineApply();
+            ViewBag.data = editData;
+
+            SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Status == 0 && m.UserId == editData.UserId) ?? new SysAdmin();
+            ViewBag.OpCode = sysAdmin.OpCode;
+            ViewBag.MakerCode = sysAdmin.MakerCode;
+            ViewBag.MakerName = sysAdmin.MakerName;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 审核发货
+
+        [HttpPost]
+        public string AuditSend(StoreMachineApply data, string ExcelData)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("ApplyNum", data.ApplyNum); //申请数
+            Fields.Add("SendNum", data.ApplyNum); //发货数
+            Fields.Add("ErpCode", data.ErpCode); //快递单号
+            Fields.Add("SendMode", data.SendMode); //发货方式
+            Fields.Add("SeoKeyword", data.SeoKeyword); //申请描述
+            Fields.Add("Status", 1);
+            AddSysLog(data.Id.ToString(), "StoreMachineApply", "AuditSend");
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
+            List<SendInfo> sendInfos = new List<SendInfo>();
+            List<CheckSendInfo> checksendInfos = new List<CheckSendInfo>();
+            StoreMachineApply apply = opdb.StoreMachineApply.FirstOrDefault(m => m.Id == data.Id) ?? new StoreMachineApply();
+
+            string[] amountlist = apply.SeoTitle.Split(',');
+            decimal ValidAmount = decimal.Parse(amountlist[0]);
+            decimal TotalAmt = decimal.Parse(amountlist[1]);
+            decimal ValidForGetAmount = decimal.Parse(amountlist[2]);
+
+            JsonData ApplyList = JsonMapper.ToObject(apply.SendSn);
+            decimal ApplyAmount = 0;
+            decimal Amount = 0;
+            for (int i = 0; i < ApplyList.Count; i++)
+            {
+                int num = Convert.ToInt32(ApplyList[i]["ApplyNum"].ToString());
+                int BrandIds = Convert.ToInt32(ApplyList[i]["BrandId"].ToString());
+                //自动匹配品牌
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == BrandIds);
+                if (brandInfo.Name.Contains("电签"))
+                {
+                    ApplyAmount += num * 100;
+                }
+                if (brandInfo.Name.Contains("大POS"))
+                {
+                    ApplyAmount += num * 150;
+                }
+            }
+            Amount = apply.UseAmount - ApplyAmount;
+            Models.StoreHouse tostore = new Models.StoreHouse();
+            Models.StoreHouse fromstore = new Models.StoreHouse();
+
+            var BrandId = 0;
+            var FromStoreId = 0;
+            string error = "";
+            if (string.IsNullOrEmpty(ExcelData))
+            {
+                return "Warning|" + "请选择要导入的数据";
+            }
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+
+            //判断各品牌发货数量是否符合
+            if (list.Count - 1 > apply.ApplyNum)
+            {
+                return "Warning|" + "机具发货数量过多!";
+            }
+            if (list.Count - 1 < apply.ApplyNum)
+            {
+                return "Warning|" + "机具发货数量不足!";
+            }
+            for (int index = 1; index < list.Count; index++)
+            {
+                JsonData dr = list[index];
+                string itemJson = dr.ToJson();
+                string SnNo = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string Brand = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                string BatchNo = itemJson.Contains("\"C\"") ? dr["C"].ToString() : "";
+                string OutNote = itemJson.Contains("\"D\"") ? dr["D"].ToString() : "";
+
+                BrandId = Convert.ToInt32(Brand);
+
+                if (BrandId == 1) FromStoreId = 7;
+                if (BrandId == 2) FromStoreId = 721;
+                if (BrandId == 3) FromStoreId = 697;
+                if (BrandId == 4) FromStoreId = 774;
+                if (BrandId == 5) FromStoreId = 775;
+                if (BrandId == 6) FromStoreId = 871;
+                if (BrandId == 7) FromStoreId = 1047;
+                if (BrandId == 8) FromStoreId = 4831;
+                if (BrandId == 9) FromStoreId = 4832;
+                CheckSendInfo items = checksendInfos.FirstOrDefault(m => m.BrandId == BrandId);
+                if (items == null)
+                {
+                    CheckSendInfo rows = new CheckSendInfo()
+                    {
+                        BrandId = BrandId,
+                        Num = 1
+                    };
+                    checksendInfos.Add(rows);
+                }
+                else
+                {
+                    items.Num += 1;
+                }
+            }
+            for (int i = 0; i < ApplyList.Count; i++)
+            {
+                int num = Convert.ToInt32(ApplyList[i]["ApplyNum"].ToString());
+                int BrandIds = Convert.ToInt32(ApplyList[i]["BrandId"].ToString());
+                if (BrandIds == 1) FromStoreId = 7;
+                if (BrandIds == 2) FromStoreId = 721;
+                if (BrandIds == 3) FromStoreId = 697;
+                if (BrandIds == 4) FromStoreId = 774;
+                if (BrandIds == 5) FromStoreId = 775;
+                if (BrandIds == 6) FromStoreId = 871;
+                if (BrandIds == 7) FromStoreId = 1047;
+                if (BrandIds == 8) FromStoreId = 4831;
+                if (BrandIds == 9) FromStoreId = 4832;
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == BrandIds);
+                CheckSendInfo items = checksendInfos.FirstOrDefault(m => m.BrandId == BrandIds) ?? new CheckSendInfo();
+                if (items.Num > num)
+                {
+                    return "Warning|" + "该条发货记录的" + brandInfo.Name + "发货数量过多!";
+                }
+                if (items.Num < num)
+                {
+                    return "Warning|" + "该条发货记录的" + brandInfo.Name + "发货数量不足!";
+                }
+            }
+
+            List<string> PosSnList = new List<string>();
+            for (int index = 1; index < list.Count; index++)
+            {
+                JsonData dr = list[index];
+                string itemJson = dr.ToJson();
+                string SnNo = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string Brand = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                BrandId = Convert.ToInt32(Brand);
+                if (BrandId == 1) FromStoreId = 7;
+                if (BrandId == 2) FromStoreId = 721;
+                if (BrandId == 3) FromStoreId = 697;
+                if (BrandId == 4) FromStoreId = 774;
+                if (BrandId == 5) FromStoreId = 775;
+                if (BrandId == 6) FromStoreId = 871;
+                if (BrandId == 7) FromStoreId = 1047;
+                if (BrandId == 8) FromStoreId = 4831;
+                if (BrandId == 9) FromStoreId = 4832;
+                Models.MachineForSnNo posInfo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new Models.MachineForSnNo();
+                var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posInfo.SnId && m.StoreId == FromStoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0) ?? new Models.PosMachinesTwo();
+                if (posInfo.SnId > 0)
+                {
+                    if (pos.Id > 0)
+                    {
+                        if (pos.BrandId != BrandId)
+                        {
+                            error += "以下操作失败" + SnNo + ',' + "该机具品牌填写错误" + '\n';
+                        }
+                    }
+                    if (PosSnList.Contains(SnNo))
+                    {
+                        error += "以下操作失败" + SnNo + ',' + "该机具重复发货" + '\n';
+                    }
+                    PosSnList.Add(SnNo);
+                }
+                else
+                {
+                    error += "以下操作失败" + SnNo + ',' + "未找到该机具或者该机具不符合发货条件" + '\n';
+                }
+            }
+            if (!string.IsNullOrEmpty(error))
+            {
+                return "Warning|" + error;
+            }
+            Dictionary<string, int> storeData = new Dictionary<string, int>();
+            Dictionary<string, int> toStoreData = new Dictionary<string, int>();
+            var amount = 0;
+            for (int index = 1; index < list.Count; index++)
+            {
+                JsonData dr = list[index];
+                string itemJson = dr.ToJson();
+                string SnNo = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string Brand = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                string BatchNo = itemJson.Contains("\"C\"") ? dr["C"].ToString() : "";
+                string OutNote = itemJson.Contains("\"D\"") ? dr["D"].ToString() : "";
+
+                BrandId = Convert.ToInt32(Brand);
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == BrandId);
+                if (brandInfo != null)
+                {
+                    if (brandInfo.Name.Contains("电签"))
+                    {
+                        amount = 100;
+                    }
+                    if (brandInfo.Name.Contains("大POS"))
+                    {
+                        amount = 150;
+                    }
+                }
+
+                if (BrandId == 1) FromStoreId = 7;
+                if (BrandId == 2) FromStoreId = 721;
+                if (BrandId == 3) FromStoreId = 697;
+                if (BrandId == 4) FromStoreId = 774;
+                if (BrandId == 5) FromStoreId = 775;
+                if (BrandId == 6) FromStoreId = 871;
+                if (BrandId == 7) FromStoreId = 1047;
+                if (BrandId == 8) FromStoreId = 4831;
+                if (BrandId == 9) FromStoreId = 4832;
+                tostore = db.StoreHouse.FirstOrDefault(m => m.Sort > 0 && m.UserId == apply.UserId && m.BrandId == BrandId.ToString() && m.Status == 1);
+                SendInfo item = sendInfos.FirstOrDefault(m => m.FromStoreId == FromStoreId && m.ToStoreId == tostore.Id && m.BrandId == BrandId);
+                if (item == null)
+                {
+                    SendInfo row = new SendInfo()
+                    {
+                        FromStoreId = FromStoreId,
+                        ToStoreId = tostore.Id,
+                        BrandId = BrandId,
+                        Num = 1
+                    };
+                    sendInfos.Add(row);
+                }
+                else
+                {
+                    item.Num += 1;
+                }
+
+                apply.SeoDescription = function.CheckString(SnNo) + ',';
+
+                fromstore = db.StoreHouse.FirstOrDefault(m => m.Id == FromStoreId);
+
+                Models.MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new Models.MachineForSnNo();
+                Models.PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId == 0 && m.UserId == 0) ?? new Models.PosMachinesTwo();
+                if (machine.Id > 0)
+                {
+                    if (machine.BrandId != BrandId)
+                    {
+                        return machine.PosSn + "与表格里填写的品牌不一致";
+                    }
+                    else
+                    {
+                        Models.StoreStockChange stockchange = db.StoreStockChange.Add(new Models.StoreStockChange()
+                        {
+                            CreateDate = DateTime.Now,
+                            CreateMan = SysUserName,
+                            Sort = data.Id,//库存变动关联申请记录表
+                            StoreId = FromStoreId, //出货仓库
+                            BrandId = BrandId, //产品类型
+                            ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
+                            BizBatchNo = BatchNo, //业务批次号
+                            TransType = 1, //交易类型
+                            SnNo = SnNo, //SN编号
+                            StockOpDirect = 1, //库存操作方向
+                            SnStatus = 1, //SN状态
+                            DeviceVendor = machine.DeviceName, //设备厂商
+                            DeviceModel = machine.DeviceKind, //设备型号
+                            DeviceType = machine.DeviceType, //设备类型
+                            FromUserId = fromstore.UserId, //出货人
+                            FromDate = DateTime.Now, //出库时间
+                            FromRemark = OutNote, //出库备注
+                            ToUserId = tostore.UserId, //收货人
+                            ToStoreId = fromstore.Id, //退货收货仓库                        
+                            SourceStoreId = machine.SourceStoreId, //源仓库编号
+                            BrandType = machine.DeviceType, //品牌类型
+                        }).Entity;
+
+                        string ChangeNo = "CS";
+                        int StoreStockChangeId = stockchange.Id;
+                        string StoreStockChangeIdString = StoreStockChangeId.ToString();
+                        for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
+                        {
+                            StoreStockChangeIdString = "0" + StoreStockChangeIdString;
+                        }
+                        ChangeNo += StoreStockChangeIdString;
+                        stockchange.ChangeNo = ChangeNo; //交易流水编号
+                        machine.StoreId = tostore.Id;
+
+                        db.StoreChangeHistory.Add(new Models.StoreChangeHistory()
+                        {
+                            CreateDate = DateTime.Now,
+                            UserId = fromstore.UserId, //创客
+                            BrandId = BrandId, //产品类型
+                            ChangeRecordNo = ChangeNo, //变更记录单号
+                            BizBatchNo = BatchNo, //业务批次号
+                            TransType = 1, //交易类型
+                            SnNo = SnNo, //SN编号
+                            SnType = machine.PosSnType, //SN机具类型
+                            StockOpDirect = 1, //库存操作方向
+                            DeviceVendor = machine.DeviceName, //设备厂商
+                            DeviceModel = machine.DeviceKind, //设备型号
+                            DeviceType = machine.DeviceType, //设备类型
+                            FromUserId = fromstore.UserId, //出货创客
+                            FromDate = DateTime.Now, //出库时间
+                            FromRemark = OutNote, //出库备注
+                            SourceStoreId = machine.SourceStoreId, //源仓库
+                            StoreId = fromstore.Id, //仓库
+                            ToUserId = tostore.UserId,//收货创客
+                        });
+
+                        //修改机具所属仓库
+                        machine.StoreId = tostore.Id;
+                        machine.UpdateDate = DateTime.Now;
+
+                        //添加机具所属运营中心
+                        machine.OpId = tostore.UserId;
+
+                        // //额度标记
+                        // if (ValidAmount >= amount)
+                        // {
+                        //     ValidAmount -= amount;
+                        //     // machine.OpReserveKind = 3;
+                        // }
+                        // else if (TotalAmt >= amount)
+                        // {
+                        //     TotalAmt -= amount;
+                        //     // machine.OpReserveKind = 1;
+                        // }
+                        // else if (ValidForGetAmount >= amount)
+                        // {
+                        //     ValidForGetAmount -= amount;
+                        //     // machine.OpReserveKind = 2;
+                        // }
+
+                        if (ValidAmount >= amount)
+                        {
+                            ValidAmount -= amount;
+                            machine.OpReserve3 = amount;
+                            machine.OpReserve1 = 0;
+                            machine.OpReserve2 = 0;
+                        }
+                        else
+                        {
+                            if (TotalAmt >= amount)
+                            {
+                                TotalAmt -= amount - ValidAmount;
+                                machine.OpReserve3 = ValidAmount;
+                                machine.OpReserve1 = amount - ValidAmount;
+                                machine.OpReserve2 = 0;
+                            }
+                            else
+                            {
+                                if (ValidForGetAmount >= amount)
+                                {
+                                    ValidForGetAmount -= amount - TotalAmt;
+                                    machine.OpReserve3 = 0;
+                                    machine.OpReserve1 = TotalAmt;
+                                    machine.OpReserve2 = amount - TotalAmt;
+                                }
+                            }
+                        }
+                        db.SaveChanges();
+                    }
+                }
+                else
+                {
+                    return "总仓无该机具";
+                }
+            }
+
+            foreach (var item in sendInfos)
+            {
+                //出货仓库数据调整
+                Models.StoreHouse storeCH = db.StoreHouse.FirstOrDefault(m => m.Id == item.FromStoreId) ?? new Models.StoreHouse();
+                Models.StoreBalance balance = db.StoreBalance.Add(new Models.StoreBalance()
+                {
+                    CreateDate = DateTime.Now,
+                    StoreId = storeCH.Id, //仓库
+                    TransType = 1, //交易类型
+                    BrandId = BrandId, //产品类型
+                    OpStoreNum = item.Num, //操作库存数
+                    OpSymbol = "-", //操作符
+                    BeforeTotalNum = storeCH.TotalNum, //操作前总库存数
+                    AfterTotalNum = storeCH.TotalNum - item.Num, //操作后总库存数
+                    BeforeLaveNum = storeCH.LaveNum, //操作前剩余库存数
+                    AfterLaveNum = storeCH.LaveNum - item.Num, //操作后剩余库存数
+                    BeforeOutNum = storeCH.OutNum, //操作前出库数
+                    AfterOutNum = storeCH.OutNum + item.Num, //操作后出库数
+                }).Entity;
+                string ChangeNo1 = "CS";
+                int StoreStockChangeId1 = balance.Id;
+                string StoreStockChangeId1String = StoreStockChangeId1.ToString();
+                for (int i = 0; i < 18 - StoreStockChangeId1.ToString().Length; i++)
+                {
+                    StoreStockChangeId1String = "0" + StoreStockChangeId1String;
+                }
+                ChangeNo1 += StoreStockChangeId1String;
+                balance.TransRecordNo = ChangeNo1; //交易流水编号
+                storeCH.LaveNum -= item.Num;
+                storeCH.OutNum += item.Num;
+
+                //收货仓库数据调整
+                Models.StoreHouse storeSH = db.StoreHouse.FirstOrDefault(m => m.Id == item.ToStoreId) ?? new Models.StoreHouse();
+                balance = db.StoreBalance.Add(new Models.StoreBalance()
+                {
+                    CreateDate = DateTime.Now,
+                    StoreId = storeSH.Id, //仓库
+                    TransType = 0, //交易类型
+                    BrandId = BrandId, //产品类型
+                    OpStoreNum = item.Num, //操作库存数
+                    OpSymbol = "+", //操作符
+                    BeforeTotalNum = storeSH.TotalNum, //操作前总库存数
+                    AfterTotalNum = storeSH.TotalNum + item.Num, //操作后总库存数
+                    BeforeLaveNum = storeSH.LaveNum, //操作前剩余库存数
+                    AfterLaveNum = storeSH.LaveNum + item.Num, //操作后剩余库存数
+                    BeforeOutNum = storeSH.OutNum, //操作前出库数
+                    AfterOutNum = storeSH.OutNum, //操作后出库数
+                }).Entity;
+                string ChangeNo2 = "CS";
+                int StoreStockChangeId2 = balance.Id;
+                string StoreStockChangeId2String = StoreStockChangeId2.ToString();
+                for (int i = 0; i < 18 - StoreStockChangeId2.ToString().Length; i++)
+                {
+                    StoreStockChangeId2String = "0" + StoreStockChangeId2String;
+                }
+                ChangeNo2 += StoreStockChangeId2String;
+                balance.TransRecordNo = ChangeNo2; //交易流水编号
+                storeSH.TotalNum += item.Num;
+                storeSH.LaveNum += item.Num;
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.QueryCount == 1 && m.Status == 0 && m.UserId == storeSH.UserId) ?? new SysAdmin();
+                if (sysAdmin.Id > 0)
+                {
+                    sysAdmin.TotalMachineCount += item.Num;
+                    opdb.SaveChanges();
+                }
+            }
+            apply.SeoTitle = SysUserName + '-' + SysRealName;//添加操作人信息
+            apply.UseAmount = ApplyAmount;
+
+            db.SaveChanges();
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("StoreMachineApply", Fields, data.Id);
+
+            string SendData = "{\"Kind\":\"2\",\"Data\":{\"UserId\":\"" + apply.UserId + "\",\"Amount\":\"" + Amount + "\",\"OperateType\":\"1\"}}";
+            RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
+            return "success";
+
+        }
+        #endregion
+
+
+
+        //发货信息实体类
+        private class SendInfo
+        {
+            public int FromStoreId { get; set; }
+            public int ToStoreId { get; set; }
+            public int BrandId { get; set; }
+            public int Num { get; set; }
+        }
+
+        //检查发货信息实体类
+        private class CheckSendInfo
+        {
+            public int BrandId { get; set; }
+            public int Num { get; set; }
+        }
+
+    }
+}

+ 843 - 0
Areas/Admin/Controllers/OperateServer/StoreMachineApplysOperateController.cs

@@ -0,0 +1,843 @@
+/*
+ * 运营中心机具申请记录
+ */
+
+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 StoreMachineApplysOperateController : BaseController
+    {
+        public StoreMachineApplysOperateController(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 Indexs1(StoreMachineApply data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询运营中心关联分仓机具申请记录列表
+
+        /// <summary>
+        /// 运营中心机具申请记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult Indexs1Data(StoreMachineApply data, string MakerCode, string OpCode, string CreateDateData, string StatusSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("ApplyNo", "1"); //申请单号
+            Fields.Add("SendMode", "1"); //发货方式
+
+
+            string condition = " and Status>-1 and QueryCount>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'";
+            }
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                var maker = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode) ?? new UserForMakerCode();
+                var user = db.Users.FirstOrDefault(m => m.Id == maker.UserId) ?? new Users();
+                condition += " and UserId=" + user.Id;
+            }
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                condition += " and QueryCount in (select UserId from SysAdmin where OpCode='" + OpCode + "')";
+            }
+
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect + "";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreMachineApply", 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)
+            {
+                //品牌
+                dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["StatusName"] = "待配货";
+                if (Status == 1) dic["StatusName"] = "已发货";
+                if (Status == 2) dic["StatusName"] = "已驳回";
+                //创客
+                int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                var users = db.Users.FirstOrDefault(m => m.Id == UserId);
+                dic["MakerCode"] = users.MakerCode;
+                dic["RealName"] = users.RealName;
+
+                //运营中心
+                int OpId = int.Parse(function.CheckInt(dic["QueryCount"].ToString()));
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == OpId && m.QueryCount == 1 && m.Status == 0) ?? new OpModels.SysAdmin();
+                // dic["OpCode"] = sysAdmin.OpCode;
+                dic.Remove("UserId");
+
+            }
+            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(StoreMachineApply data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("BrandId", data.BrandId); //品牌
+            Fields.Add("ApplyNo", data.ApplyNo); //申请单号
+            Fields.Add("ApplyNum", data.ApplyNum); //申请台数
+            Fields.Add("SendNum", data.SendNum); //发货台数
+            Fields.Add("UseAmount", data.UseAmount); //使用额度
+            Fields.Add("SendMode", data.SendMode); //发货方式
+            Fields.Add("ErpCode", data.ErpCode); //快递单号
+            Fields.Add("SendSn", data.SendSn); //发货SN数据
+            Fields.Add("UserId", data.UserId); //创客
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Add("StoreMachineApply", Fields, 0);
+            AddSysLog(data.Id.ToString(), "StoreMachineApply", "add");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改分仓机具申请记录
+
+        /// <summary>
+        /// 增加或修改分仓机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            StoreMachineApply editData = db.StoreMachineApply.FirstOrDefault(m => m.Id == Id) ?? new StoreMachineApply();
+            ViewBag.data = editData;
+
+            Users users = db.Users.FirstOrDefault(m => m.Id == editData.UserId) ?? new Users();
+            ViewBag.MakerName = users.RealName;
+            ViewBag.UseAmount = editData.UseAmount;
+            JsonData SendSnList = new JsonData();
+            SendSnList = JsonMapper.ToObject(editData.SendSn);//申请数据
+            List<Dictionary<string, object>> KsProductList = new List<Dictionary<string, object>>();
+            for (int i = 0; i < SendSnList.Count; i++)
+            {
+                int BrandId = Convert.ToInt32(SendSnList[i]["BrandId"].ToString());
+                int Num = Convert.ToInt32(SendSnList[i]["ApplyNum"].ToString());
+                var products = db.KqProducts.Where(m => m.Id == BrandId).ToList();
+                foreach (var product in products)
+                {
+                    Dictionary<string, object> item = new Dictionary<string, object>();
+                    item.Add("BrandId", BrandId);  //商品Id
+                    item.Add("Name", product.Name);  //商品名称
+                    item.Add("Num", Num);  //商品数量
+                    KsProductList.Add(item);
+                }
+            }
+            ViewBag.KsProductList = KsProductList;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 修改分仓机具申请记录
+
+        /// <summary>
+        /// 增加或修改分仓机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(StoreMachineApply data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("SendSn", data.SendSn); //发货SN数据
+            JsonData SendSnList = new JsonData();
+            SendSnList = JsonMapper.ToObject(data.SendSn);//申请数据
+            int ApplyNum = 0;
+            for (int i = 0; i < SendSnList.Count; i++)
+            {
+                int num = Convert.ToInt32(SendSnList[i]["ApplyNum"].ToString());
+                ApplyNum += num;
+            }
+            Fields.Add("BrandId", data.BrandId); //品牌
+            Fields.Add("ApplyNo", data.ApplyNo); //申请单号
+            Fields.Add("ApplyNum", ApplyNum); //申请台数
+            Fields.Add("SendNum", data.SendNum); //发货台数
+            Fields.Add("UseAmount", data.UseAmount); //使用额度
+            Fields.Add("SendMode", data.SendMode); //发货方式
+            Fields.Add("ErpCode", data.ErpCode); //快递单号
+            Fields.Add("UserId", data.UserId); //创客
+
+            Fields.Add("SeoTitle", SysUserName + '-' + SysRealName);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreMachineApply", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "OpStoreMachineApply", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除分仓机具申请记录信息
+
+        /// <summary>
+        /// 删除分仓机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "StoreMachineApply", "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("StoreMachineApply", 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, "StoreMachineApply", "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("StoreMachineApply", 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, "StoreMachineApply", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 2);
+                var query = db.StoreMachineApply.FirstOrDefault(m => m.Id == id);
+                var users = db.UserAccount.FirstOrDefault(m => m.Status == 0 && m.UserId == query.UserId) ?? new UserAccount();
+                if (users.Id > 0)
+                {
+                    users.ValidAmount += query.UseAmount;
+                    db.SaveChanges();
+                }
+                new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreMachineApply", 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("StoreMachineApply", Sort, Id);
+
+            AddSysLog(Id.ToString(), "StoreMachineApply", "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.StoreMachineApply.Add(new StoreMachineApply()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "OpStoreMachineApply", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(StoreMachineApply data, string BrandIdSelect, string UserIdRealName, string UserIdMakerCode)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CreateDate", "3"); //时间
+            Fields.Add("ApplyNo", "1"); //申请单号
+            Fields.Add("SendMode", "1"); //发货方式
+
+
+            string condition = " and Status>-1";
+            //品牌
+            if (!string.IsNullOrEmpty(BrandIdSelect))
+            {
+                condition += " and BrandId=" + BrandIdSelect;
+            }
+            //创客真实姓名
+            if (!string.IsNullOrEmpty(UserIdRealName))
+            {
+                condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
+            }
+            //创客编号
+            if (!string.IsNullOrEmpty(UserIdMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
+            }
+
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("StoreMachineApply", Fields, "Id desc", "0", 1, 20000, condition, "BrandId,ApplyNo,ApplyNum,SendNum,UseAmount,SendMode,ErpCode,UserId", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                //品牌
+                dic["BrandId"] = RelationClass.GetKqProductBrandInfo(int.Parse(dic["BrandId"].ToString()));
+                dic["StatusName"] = dic["Status"].ToString() == "1" ? "正常" : "关闭";
+                //运营中心
+                int OpId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == OpId) ?? new OpModels.SysAdmin();
+                // Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["MakerName"] = sysAdmin.MakerName;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic.Remove("OpId");
+
+            }
+
+            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("BrandId", "品牌");
+            ReturnFields.Add("ApplyNo", "申请单号");
+            ReturnFields.Add("ApplyNum", "申请台数");
+            ReturnFields.Add("SendNum", "发货台数");
+            ReturnFields.Add("UseAmount", "使用额度");
+            ReturnFields.Add("SendMode", "发货方式");
+            ReturnFields.Add("ErpCode", "快递单号");
+            ReturnFields.Add("MakerName", "创客真实姓名");
+            ReturnFields.Add("MakerName", "创客编号");
+            ReturnFields.Add("OpCode", "运营中心编号");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "OpStoreMachineApply", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+        #region 运营中心关联分仓审核发货
+
+        public IActionResult AuditSend(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            var editData = db.StoreMachineApply.FirstOrDefault(m => m.Id == Id) ?? new StoreMachineApply();
+            ViewBag.data = editData;
+
+            var users = db.Users.FirstOrDefault(m => m.Id == editData.UserId) ?? new Users();
+            ViewBag.MakerName = users.RealName;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 运营中心关联分仓审核发货
+
+        [HttpPost]
+        public string AuditSend(StoreMachineApply data, string ExcelData)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("ApplyNum", data.ApplyNum); //申请数
+            Fields.Add("SendNum", data.ApplyNum); //发货数
+            Fields.Add("ErpCode", data.ErpCode); //快递单号
+            Fields.Add("SendMode", data.SendMode); //发货方式
+            Fields.Add("SeoKeyword", data.SeoKeyword); //申请描述
+            Fields.Add("Status", 1);
+            AddSysLog(data.Id.ToString(), "StoreMachineApply", "AuditSend");
+            Dictionary<string, object> Obj = new Dictionary<string, object>();
+            List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
+            List<SendInfo> sendInfos = new List<SendInfo>();
+            List<CheckSendInfo> checksendInfos = new List<CheckSendInfo>();
+            var apply = db.StoreMachineApply.FirstOrDefault(m => m.Id == data.Id) ?? new StoreMachineApply();
+            JsonData ApplyList = JsonMapper.ToObject(apply.SendSn);
+            decimal ApplyAmount = 0;
+            decimal Amount = 0;
+            for (int i = 0; i < ApplyList.Count; i++)
+            {
+                int num = Convert.ToInt32(ApplyList[i]["ApplyNum"].ToString());
+                int BrandIds = Convert.ToInt32(ApplyList[i]["BrandId"].ToString());
+                //自动匹配品牌
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == BrandIds);
+                if (brandInfo.Name.Contains("电签"))
+                {
+                    ApplyAmount += num * 100;
+                }
+                if (brandInfo.Name.Contains("大POS"))
+                {
+                    ApplyAmount += num * 150;
+                }
+            }
+            Amount = apply.UseAmount - ApplyAmount;
+            StoreHouse tostore = new StoreHouse();
+            StoreHouse fromstore = new StoreHouse();
+
+            var BrandId = 0;
+            var FromStoreId = 0;
+            string error = "";
+            if (string.IsNullOrEmpty(ExcelData))
+            {
+                return "Warning|" + "请选择要导入的数据";
+            }
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+
+            //判断各品牌发货数量是否符合
+            if (list.Count - 1 > apply.ApplyNum)
+            {
+                return "Warning|" + "机具发货数量过多!";
+            }
+            if (list.Count - 1 < apply.ApplyNum)
+            {
+                return "Warning|" + "机具发货数量不足!";
+            }
+            for (int index = 1; index < list.Count; index++)
+            {
+                JsonData dr = list[index];
+                string itemJson = dr.ToJson();
+                string SnNo = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string Brand = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                string BatchNo = itemJson.Contains("\"C\"") ? dr["C"].ToString() : "";
+                string OutNote = itemJson.Contains("\"D\"") ? dr["D"].ToString() : "";
+
+                BrandId = Convert.ToInt32(Brand);
+
+                if (BrandId == 1) FromStoreId = 7;
+                if (BrandId == 2) FromStoreId = 721;
+                if (BrandId == 3) FromStoreId = 697;
+                if (BrandId == 4) FromStoreId = 774;
+                if (BrandId == 5) FromStoreId = 775;
+                if (BrandId == 6) FromStoreId = 871;
+                if (BrandId == 7) FromStoreId = 1047;
+                if (BrandId == 8) FromStoreId = 4831;
+                if (BrandId == 9) FromStoreId = 4832;
+                CheckSendInfo items = checksendInfos.FirstOrDefault(m => m.BrandId == BrandId);
+                if (items == null)
+                {
+                    CheckSendInfo rows = new CheckSendInfo()
+                    {
+                        BrandId = BrandId,
+                        Num = 1
+                    };
+                    checksendInfos.Add(rows);
+                }
+                else
+                {
+                    items.Num += 1;
+                }
+            }
+            for (int i = 0; i < ApplyList.Count; i++)
+            {
+                int num = Convert.ToInt32(ApplyList[i]["ApplyNum"].ToString());
+                int BrandIds = Convert.ToInt32(ApplyList[i]["BrandId"].ToString());
+                if (BrandIds == 1) FromStoreId = 7;
+                if (BrandIds == 2) FromStoreId = 721;
+                if (BrandIds == 3) FromStoreId = 697;
+                if (BrandIds == 4) FromStoreId = 774;
+                if (BrandIds == 5) FromStoreId = 775;
+                if (BrandIds == 6) FromStoreId = 871;
+                if (BrandIds == 7) FromStoreId = 1047;
+                if (BrandIds == 8) FromStoreId = 4831;
+                if (BrandIds == 9) FromStoreId = 4832;
+                var brandInfo = db.KqProducts.FirstOrDefault(m => m.Id == BrandIds);
+                CheckSendInfo items = checksendInfos.FirstOrDefault(m => m.BrandId == BrandIds) ?? new CheckSendInfo();
+                if (items.Num > num)
+                {
+                    return "Warning|" + "该条发货记录的" + brandInfo.Name + "发货数量过多!";
+                }
+                if (items.Num < num)
+                {
+                    return "Warning|" + "该条发货记录的" + brandInfo.Name + "发货数量不足!";
+                }
+            }
+
+            List<string> PosSnList = new List<string>();
+            for (int index = 1; index < list.Count; index++)
+            {
+                JsonData dr = list[index];
+                string itemJson = dr.ToJson();
+                string SnNo = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string Brand = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                BrandId = Convert.ToInt32(Brand);
+                if (BrandId == 1) FromStoreId = 7;
+                if (BrandId == 2) FromStoreId = 721;
+                if (BrandId == 3) FromStoreId = 697;
+                if (BrandId == 4) FromStoreId = 774;
+                if (BrandId == 5) FromStoreId = 775;
+                if (BrandId == 6) FromStoreId = 871;
+                if (BrandId == 7) FromStoreId = 1047;
+                if (BrandId == 8) FromStoreId = 4831;
+                if (BrandId == 9) FromStoreId = 4832;
+                MachineForSnNo posInfo = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
+                var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == posInfo.SnId && m.StoreId == FromStoreId && m.UserId == 0 && m.BuyUserId == 0 && m.PreUserId == 0) ?? new PosMachinesTwo();
+                if (posInfo.SnId > 0)
+                {
+                    if (pos.Id > 0)
+                    {
+                        if (pos.BrandId != BrandId)
+                        {
+                            error += "以下操作失败" + SnNo + ',' + "该机具品牌填写错误" + '\n';
+                        }
+                    }
+                    if (PosSnList.Contains(SnNo))
+                    {
+                        error += "以下操作失败" + SnNo + ',' + "该机具重复发货" + '\n';
+                    }
+                    PosSnList.Add(SnNo);
+                }
+                else
+                {
+                    error += "以下操作失败" + SnNo + ',' + "未找到该机具或者该机具不符合发货条件" + '\n';
+                }
+            }
+            if (!string.IsNullOrEmpty(error))
+            {
+                return "Warning|" + error;
+            }
+            Dictionary<string, int> storeData = new Dictionary<string, int>();
+            Dictionary<string, int> toStoreData = new Dictionary<string, int>();
+            for (int index = 1; index < list.Count; index++)
+            {
+                JsonData dr = list[index];
+                string itemJson = dr.ToJson();
+                string SnNo = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string Brand = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                string BatchNo = itemJson.Contains("\"C\"") ? dr["C"].ToString() : "";
+                string OutNote = itemJson.Contains("\"D\"") ? dr["D"].ToString() : "";
+
+                BrandId = Convert.ToInt32(Brand);
+
+                if (BrandId == 1) FromStoreId = 7;
+                if (BrandId == 2) FromStoreId = 721;
+                if (BrandId == 3) FromStoreId = 697;
+                if (BrandId == 4) FromStoreId = 774;
+                if (BrandId == 5) FromStoreId = 775;
+                if (BrandId == 6) FromStoreId = 871;
+                if (BrandId == 7) FromStoreId = 1047;
+                if (BrandId == 8) FromStoreId = 4831;
+                if (BrandId == 9) FromStoreId = 4832;
+                tostore = db.StoreHouse.FirstOrDefault(m => m.Sort > 0 && m.UserId == apply.UserId && m.BrandId == BrandId.ToString() && m.Status == 1);
+                SendInfo item = sendInfos.FirstOrDefault(m => m.FromStoreId == FromStoreId && m.ToStoreId == tostore.Id && m.BrandId == BrandId);
+                if (item == null)
+                {
+                    SendInfo row = new SendInfo()
+                    {
+                        FromStoreId = FromStoreId,
+                        ToStoreId = tostore.Id,
+                        BrandId = BrandId,
+                        Num = 1
+                    };
+                    sendInfos.Add(row);
+                }
+                else
+                {
+                    item.Num += 1;
+                }
+
+                apply.SeoDescription = function.CheckString(SnNo) + ',';
+
+                fromstore = db.StoreHouse.FirstOrDefault(m => m.Id == FromStoreId);
+                // tostore = db.StoreHouse.FirstOrDefault(m => m.Sort > 0 && m.UserId == apply.UserId && m.BrandId == BrandId.ToString() && m.Status == 1);
+
+                MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
+                PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
+                if (machine.Id > 0)
+                {
+                    if (machine.BrandId != BrandId)
+                    {
+                        return machine.PosSn + "与表格里填写的品牌不一致";
+                    }
+                    else
+                    {
+                        StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
+                        {
+                            CreateDate = DateTime.Now,
+                            CreateMan = SysUserName,
+                            Sort = data.Id,//库存变动关联申请记录表
+                            StoreId = FromStoreId, //出货仓库
+                            BrandId = BrandId, //产品类型
+                            ProductName = RelationClass.GetKqProductBrandInfo(BrandId), //产品名称
+                            BizBatchNo = BatchNo, //业务批次号
+                            TransType = 1, //交易类型
+                            SnNo = SnNo, //SN编号
+                            StockOpDirect = 1, //库存操作方向
+                            SnStatus = 1, //SN状态
+                            DeviceVendor = machine.DeviceName, //设备厂商
+                            DeviceModel = machine.DeviceKind, //设备型号
+                            DeviceType = machine.DeviceType, //设备类型
+                            FromUserId = fromstore.UserId, //出货人
+                            FromDate = DateTime.Now, //出库时间
+                            FromRemark = OutNote, //出库备注
+                            ToUserId = tostore.UserId, //收货人
+                            ToStoreId = fromstore.Id, //退货收货仓库                        
+                            SourceStoreId = machine.SourceStoreId, //源仓库编号
+                            BrandType = machine.DeviceType, //品牌类型
+                        }).Entity;
+
+                        string ChangeNo = "CS";
+                        int StoreStockChangeId = stockchange.Id;
+                        string StoreStockChangeIdString = StoreStockChangeId.ToString();
+                        for (int j = 0; j < 18 - StoreStockChangeId.ToString().Length; j++)
+                        {
+                            StoreStockChangeIdString = "0" + StoreStockChangeIdString;
+                        }
+                        ChangeNo += StoreStockChangeIdString;
+                        stockchange.ChangeNo = ChangeNo; //交易流水编号
+                        machine.StoreId = tostore.Id;
+
+                        db.StoreChangeHistory.Add(new StoreChangeHistory()
+                        {
+                            CreateDate = DateTime.Now,
+                            UserId = fromstore.UserId, //创客
+                            BrandId = BrandId, //产品类型
+                            ChangeRecordNo = ChangeNo, //变更记录单号
+                            BizBatchNo = BatchNo, //业务批次号
+                            TransType = 1, //交易类型
+                            SnNo = SnNo, //SN编号
+                            SnType = machine.PosSnType, //SN机具类型
+                            StockOpDirect = 1, //库存操作方向
+                            DeviceVendor = machine.DeviceName, //设备厂商
+                            DeviceModel = machine.DeviceKind, //设备型号
+                            DeviceType = machine.DeviceType, //设备类型
+                            FromUserId = fromstore.UserId, //出货创客
+                            FromDate = DateTime.Now, //出库时间
+                            FromRemark = OutNote, //出库备注
+                            SourceStoreId = machine.SourceStoreId, //源仓库
+                            StoreId = fromstore.Id, //仓库
+                            ToUserId = tostore.UserId,//收货创客
+                        });
+
+                        //修改机具所属仓库
+                        machine.StoreId = tostore.Id;
+                        machine.UpdateDate = DateTime.Now;
+
+                        // //添加机具所属运营中心
+                        // machine.OpId = tostore.UserId;
+                        db.SaveChanges();
+                    }
+                }
+                else
+                {
+                    return "总仓无该机具";
+                }
+            }
+
+            foreach (var item in sendInfos)
+            {
+                //出货仓库数据调整
+                StoreHouse storeCH = db.StoreHouse.FirstOrDefault(m => m.Id == item.FromStoreId) ?? new StoreHouse();
+                StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
+                {
+                    CreateDate = DateTime.Now,
+                    StoreId = storeCH.Id, //仓库
+                    TransType = 1, //交易类型
+                    BrandId = BrandId, //产品类型
+                    OpStoreNum = item.Num, //操作库存数
+                    OpSymbol = "-", //操作符
+                    BeforeTotalNum = storeCH.TotalNum, //操作前总库存数
+                    AfterTotalNum = storeCH.TotalNum - item.Num, //操作后总库存数
+                    BeforeLaveNum = storeCH.LaveNum, //操作前剩余库存数
+                    AfterLaveNum = storeCH.LaveNum - item.Num, //操作后剩余库存数
+                    BeforeOutNum = storeCH.OutNum, //操作前出库数
+                    AfterOutNum = storeCH.OutNum + item.Num, //操作后出库数
+                }).Entity;
+                string ChangeNo1 = "CS";
+                int StoreStockChangeId1 = balance.Id;
+                string StoreStockChangeId1String = StoreStockChangeId1.ToString();
+                for (int i = 0; i < 18 - StoreStockChangeId1.ToString().Length; i++)
+                {
+                    StoreStockChangeId1String = "0" + StoreStockChangeId1String;
+                }
+                ChangeNo1 += StoreStockChangeId1String;
+                balance.TransRecordNo = ChangeNo1; //交易流水编号
+                storeCH.LaveNum -= item.Num;
+                storeCH.OutNum += item.Num;
+
+                //收货仓库数据调整
+                StoreHouse storeSH = db.StoreHouse.FirstOrDefault(m => m.Id == item.ToStoreId) ?? new StoreHouse();
+                balance = db.StoreBalance.Add(new StoreBalance()
+                {
+                    CreateDate = DateTime.Now,
+                    StoreId = storeSH.Id, //仓库
+                    TransType = 0, //交易类型
+                    BrandId = BrandId, //产品类型
+                    OpStoreNum = item.Num, //操作库存数
+                    OpSymbol = "+", //操作符
+                    BeforeTotalNum = storeSH.TotalNum, //操作前总库存数
+                    AfterTotalNum = storeSH.TotalNum + item.Num, //操作后总库存数
+                    BeforeLaveNum = storeSH.LaveNum, //操作前剩余库存数
+                    AfterLaveNum = storeSH.LaveNum + item.Num, //操作后剩余库存数
+                    BeforeOutNum = storeSH.OutNum, //操作前出库数
+                    AfterOutNum = storeSH.OutNum, //操作后出库数
+                }).Entity;
+                string ChangeNo2 = "CS";
+                int StoreStockChangeId2 = balance.Id;
+                string StoreStockChangeId2String = StoreStockChangeId2.ToString();
+                for (int i = 0; i < 18 - StoreStockChangeId2.ToString().Length; i++)
+                {
+                    StoreStockChangeId2String = "0" + StoreStockChangeId2String;
+                }
+                ChangeNo2 += StoreStockChangeId2String;
+                balance.TransRecordNo = ChangeNo2; //交易流水编号
+                storeSH.TotalNum += item.Num;
+                storeSH.LaveNum += item.Num;
+
+            }
+            apply.SeoTitle = SysUserName + '-' + SysRealName;//添加操作人信息
+            apply.UseAmount = ApplyAmount;
+
+            db.SaveChanges();
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreMachineApply", Fields, data.Id);
+
+            string SendData = "{\"Kind\":\"2\",\"Data\":{\"UserId\":\"" + apply.UserId + "\",\"Amount\":\"" + Amount + "\",\"OperateType\":\"1\"}}";
+            RedisDbconn.Instance.AddList("StoreApplyQueue", SendData);
+            return "success";
+
+        }
+        #endregion
+
+
+        //发货信息实体类
+        private class SendInfo
+        {
+            public int FromStoreId { get; set; }
+            public int ToStoreId { get; set; }
+            public int BrandId { get; set; }
+            public int Num { get; set; }
+        }
+
+        //检查发货信息实体类
+        private class CheckSendInfo
+        {
+            public int BrandId { get; set; }
+            public int Num { get; set; }
+        }
+
+    }
+}

+ 696 - 0
Areas/Admin/Controllers/OperateServer/SysAdminOperateController.cs

@@ -0,0 +1,696 @@
+/*
+ * 运营中心
+ */
+
+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.OpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class SysAdminOperateController : BaseController
+    {
+        public SysAdminOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+        }
+
+        #region 运营中心列表
+
+        /// <summary>
+        /// 根据条件查询运营中心列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(SysAdmin data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            string Condition = "";
+            Condition += "AdminName:\"" + data.AdminName + "\",";
+            Condition += "RealName:\"" + data.RealName + "\",";
+            Condition += "Role:\"" + data.Role + "\",";
+
+            if (!string.IsNullOrEmpty(Condition))
+            {
+                Condition = Condition.TrimEnd(',');
+                Condition = ", where: {" + Condition + "}";
+            }
+            ViewBag.Condition = Condition;
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询运营中心列表
+
+        /// <summary>
+        /// 运营中心列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(SysAdmin data, string OpCode, string RealName, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("RealName", "2"); //名称
+
+            string condition = " and Status>-1 and Sort>0 and QueryCount>0 and AdminName!='admin'";
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                condition += " and Id in (select OpId from OperateForCode where OpCode='" + OpCode + "')";
+            }
+            // //运营中心名称
+            // if (!string.IsNullOrEmpty(RealName))
+            // {
+            //     condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
+            // }
+            //创建时间
+            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 AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("SysAdmin", 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 Id = int.Parse(dic["Id"].ToString());
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == Id) ?? new SysAdmin();
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["MakerName"] = sysAdmin.MakerName;
+
+                //登陆地址
+                dic["LoginUrl"] = OpHost + "Admin/" + dbconn.Encrypt3DES(sysAdmin.Sort.ToString(), "kxs12345") + "/Login";
+
+                //未使用用额度
+                UserAccount userAccount = opdb.UserAccount.FirstOrDefault(m => m.Sort == Id) ?? new UserAccount();
+                dic["TotalAmt"] = userAccount.TotalAmt;
+
+                //可提现额度
+                dic["ValidForGetAmount"] = userAccount.ValidForGetAmount;
+
+                //关联分仓额度
+                dic["ValidAmount"] = userAccount.ValidAmount;
+
+                //已提现金额
+                dic["WithdrawAmount"] = userAccount.WithdrawAmount;
+
+                //提现中金额
+                dic["WithdrawingAmount"] = userAccount.WithdrawingAmount;
+
+                //分仓数量 StoreForOperate
+                // dic["StoreCount"] = opdb.StoreForOperate.Where(m => m.OpId == Id).Count();
+
+            }
+            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(SysAdmin data, UserAccount userAccount, string Areas, string Address)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Dictionary<string, object> Field = new Dictionary<string, object>();
+
+            // Models.WebCMSEntities db = new Models.WebCMSEntities();
+            var userForMakerCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == data.MakerCode) ?? new Models.UserForMakerCode();
+            if (userForMakerCode.UserId > 0)
+            {
+                var userInfo = db.Users.FirstOrDefault(m => m.Id == userForMakerCode.UserId && m.Mobile == data.MakerMobile) ?? new Models.Users();
+                if (userInfo.Id > 0)
+                {
+                    var check = opdb.SysAdmin.Any(m => m.AdminName == data.AdminName);
+                    var checks = opdb.SysAdmin.Any(m => m.UserId == userInfo.Id);
+                    if (check)
+                    {
+                        return "该用户名已存在,请重新输入";
+                    }
+                    if (checks)
+                    {
+                        return "该用户已存在运营中心,请重新输入";
+                    }
+                    Fields.Add("CreateMan", SysUserName + "_" + SysRealName); //创建人
+                    Fields.Add("RealName", data.RealName); //运营中心名称
+                    Fields.Add("MakerCode", data.MakerCode); //创客编号
+                    Fields.Add("MakerMobile", data.MakerMobile); //手机号
+                    Fields.Add("UserId", userInfo.Id); //创客Id
+                    Fields.Add("MakerName", userInfo.RealName); //创客真实姓名
+                    Fields.Add("AdminName", data.AdminName); //用户名
+                    Fields.Add("Password", function.MD5_32(data.Password)); //密码
+                    Fields.Add("FilePath", data.FilePath); //附件
+                    Fields.Add("QueryCount", 1); //是否为主账号(1是,0否)
+
+                    int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("SysAdmin", Fields, 0);
+                    SysAdmin edit = opdb.SysAdmin.FirstOrDefault(m => m.Id == Id);
+                    if (edit != null)
+                    {
+                        string No = Id.ToString();
+                        for (int i = 0; i < 7 - Id.ToString().Length; i++)
+                        {
+                            No = "0" + No;
+                        }
+                        No = "YZ" + No;
+                        edit.OpCode = No;
+                        edit.Sort = Id;
+                        AddSysLog(data.Id.ToString(), "SysAdmin", "add");
+                        var query = opdb.OperateForCode.Add(new OperateForCode()
+                        {
+                            OpCode = No,
+                            OpId = Id,
+
+                        }).Entity;
+                        opdb.SaveChanges();
+                    }
+
+                    var info = opdb.SysAdmin.FirstOrDefault(m => m.Id == Id);
+                    if (info != null)
+                    {
+                        Field.Add("TotalAmt", userAccount.TotalAmt); //初始额度
+                        // Field.Add("ValidAmount", userAccount.TotalAmt); //可用额度
+                        Field.Add("Sort", Id); //运营中心Id
+                        Field.Add("Id", edit.UserId); //创客Id
+                        Field.Add("UserId", edit.UserId); //创客Id
+                        int Ids = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("UserAccount", Field, 0);
+                        AddSysLog(userAccount.Id.ToString(), "UserAccount", "add");
+                        var query = opdb.SysAdminRole.Add(new SysAdminRole()
+                        {
+                            CreateDate = DateTime.Now, //创建时间
+                            Sort = edit.Id,//所属运营中心
+                            CreateMan = SysUserName + "_" + SysRealName,
+                            Details = "运营中心管理员,可以操作运营中心所有权限",
+                            RightInfo = ",1_1,1_1_1,1_1_1_edit,1_2,1_2_1,1_2_1_export,1_2_2,1_3,1_3_1,1_3_1_import,1_4,1_4_1,1_4_1_add,1_4_2,1_4_2_add,1_4_3,1_4_3_edit,1_4_3_base,1_4_3_audit,1_6,1_6_1,1_6_1_add,1_6_1_delete,1_6_1_edit,1_6_2,1_6_2_add,1_6_2_delete,1_6_2_edit,",
+                            Name = "运营中心管理员",
+
+                        }).Entity;
+                        opdb.SaveChanges();
+                        var role = opdb.SysAdminRole.FirstOrDefault(m => m.Sort == edit.Id);
+                        if (role != null)
+                        {
+                            edit.Role = role.Id.ToString();
+                            opdb.SaveChanges();
+                        }
+                    }
+                    userInfo.UserType = 1;//设置创客为运营中心
+                    db.SaveChanges();
+
+                    var kqProduct = db.KqProducts.ToList();
+                    foreach (var item in kqProduct)
+                    {
+                        string Nos = "YC000" + item.Id + info.Id;
+                        var query = db.StoreHouse.Add(new Models.StoreHouse()
+                        {
+                            CreateDate = DateTime.Now, //创建时间
+                            CreateMan = SysUserName + "_" + SysRealName,
+                            ManageMobile = data.MakerMobile, //手机号
+                            UserId = info.UserId, //运营中心创客Id
+                            OpId = info.UserId, //运营中心创客Id
+                            Address = Address,//仓库地址
+                            Areas = Areas,//所属地区
+                            ManageUserId = info.UserId,//仓库管理员
+                            StoreName = item.Name + "运营分仓", //仓库名称
+                            StoreNo = Nos, //仓库编号
+                            Sort = info.Id,//运营中心Id
+                            Status = 1,
+                            BrandId = item.Id.ToString(),
+                            StoreKind = 2,//运营仓
+
+                        }).Entity;
+                        db.SaveChanges();
+
+                        var querys = opdb.StoreForOperate.Add(new OpModels.StoreForOperate()
+                        {
+                            CreateDate = DateTime.Now, //创建时间
+                            CreateMan = SysUserName + "_" + SysRealName,
+                            Sort = info.UserId,
+                            OpId = info.UserId,
+                            StoreId = query.Id,
+                            SeoKeyword = query.StoreNo,
+                            SeoDescription = query.StoreName,
+                        }).Entity;
+                        opdb.SaveChanges();
+                    }
+                }
+                else
+                {
+                    return "创客编号和手机号不匹配";
+                }
+            }
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改运营中心
+
+        /// <summary>
+        /// 增加或修改运营中心信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            SysAdmin editData = opdb.SysAdmin.FirstOrDefault(m => m.Id == Id) ?? new SysAdmin();
+            UserAccount editDatas = opdb.UserAccount.FirstOrDefault(m => m.Sort == Id) ?? new UserAccount();
+            ViewBag.data = editData;
+            ViewBag.datas = editDatas;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改运营中心
+
+        /// <summary>
+        /// 增加或修改运营中心信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(SysAdmin data, UserAccount userAccount, string Areas, string Address)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("UpdateMan", SysUserName + "_" + SysRealName); //修改人
+            Fields.Add("RealName", data.RealName); //运营中心名称
+            Fields.Add("FilePath", data.FilePath); //附件
+            Fields.Add("AdminName", data.AdminName); //用户名
+            if (!string.IsNullOrEmpty(data.Password)) //密码不为空就修改密码,否则不操作
+            {
+                var sys = opdb.SysAdmin.FirstOrDefault(m => m.Id == data.Id);
+                if (data.Password != sys.Password)
+                {
+                    Fields.Add("Password", function.MD5_32(data.Password)); //密码
+                }
+            }
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdmin", Fields, data.Id);
+            SysAdmin edit = opdb.SysAdmin.FirstOrDefault(m => m.Id == data.Id);
+            edit.CreateDate = edit.CreateDate;
+            AddSysLog(data.Id.ToString(), "SysAdmin", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除运营中心信息
+
+        /// <summary>
+        /// 删除运营中心信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SysAdmin", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == id) ?? new OpModels.SysAdmin();
+                if (sysAdmin.Id > 0)
+                {
+                    var userAccount = opdb.UserAccount.FirstOrDefault(m => m.Status > -1 && m.Sort == id && m.UserId == sysAdmin.UserId) ?? new OpModels.UserAccount();
+                    if (userAccount.Id > 0)
+                    {
+                        userAccount.Status = -1;
+                    }
+                    var operateForCode = opdb.OperateForCode.FirstOrDefault(m => m.OpId == id) ?? new OpModels.OperateForCode();
+                    if (operateForCode.OpId > 0)
+                    {
+                        new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Delete("UserAccount", operateForCode.OpId);
+                    }
+                    //修改运营中心仓
+                    var storeHouse = db.StoreHouse.Where(m => m.Sort == id && m.Status == 1 && m.UserId == sysAdmin.UserId && m.OpId == sysAdmin.UserId).ToList();
+                    foreach (var item in storeHouse)
+                    {
+                        var list = storeHouse.FirstOrDefault(m => m.Id == item.Id) ?? new Models.StoreHouse();
+                        if (list.Id > 0)
+                        {
+                            list.Status = -1;
+                            list.UpdateDate = DateTime.Now;
+                            list.UpdateMan = SysUserName + "-" + SysRealName;
+                            db.SaveChanges();
+                        }
+                    }
+                    //修改运营中心关联分仓
+                    var storeHouses = db.StoreHouse.Where(m => m.Sort == id && m.Status == 1).ToList();
+                    foreach (var item in storeHouses)
+                    {
+                        var list = storeHouses.FirstOrDefault(m => m.Id == item.Id) ?? new Models.StoreHouse();
+                        if (list.Id > 0)
+                        {
+                            list.Sort = 0;
+                            list.OpId = 0;
+                            list.UpdateDate = DateTime.Now;
+                            list.UpdateMan = SysUserName + "-" + SysRealName;
+                            db.SaveChanges();
+                        }
+                    }
+                    //修改关联运营中心仓
+                    var storeForOperate = opdb.StoreForOperate.Where(m => m.Status == 0 && m.OpId == sysAdmin.UserId && m.Sort == sysAdmin.UserId && m.QueryCount == 0).ToList();
+                    foreach (var items in storeForOperate)
+                    {
+                        var lists = storeForOperate.FirstOrDefault(m => m.Id == items.Id) ?? new OpModels.StoreForOperate();
+                        if (lists.Id > 0)
+                        {
+                            lists.Status = -1;
+                            lists.UpdateDate = DateTime.Now;
+                            lists.UpdateMan = SysUserName + "-" + SysRealName;
+                            opdb.SaveChanges();
+                        }
+                    }
+                    //修改运营中心关联分仓
+                    var storeForOperates = opdb.StoreForOperate.Where(m => m.Status == 0 && m.OpId == sysAdmin.UserId && m.Sort == 0 && m.QueryCount == sysAdmin.UserId).ToList();
+                    foreach (var items in storeForOperates)
+                    {
+                        var lists = storeForOperates.FirstOrDefault(m => m.Id == items.Id) ?? new OpModels.StoreForOperate();
+                        if (lists.Id > 0)
+                        {
+                            lists.Status = -1;
+                            lists.UpdateDate = DateTime.Now;
+                            lists.UpdateMan = SysUserName + "-" + SysRealName;
+                            opdb.SaveChanges();
+                        }
+                    }
+                    opdb.SaveChanges();
+                }
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdmin", Fields, id);
+            }
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SysAdmin", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdmin", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SysAdmin", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdmin", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("SysAdmin", Sort, Id);
+
+            AddSysLog(Id.ToString(), "SysAdmin", "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];
+
+                opdb.SysAdmin.Add(new SysAdmin()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                opdb.SaveChanges();
+            }
+            AddSysLog("0", "SysAdmin", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(SysAdmin data)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("AdminName", "2"); //用户名
+            Fields.Add("RealName", "2"); //名称
+            Fields.Add("Role", "1"); //角色
+            Fields.Add("LastLoginDate", "3"); //最后登录时间
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("SysAdmin", Fields, "Id desc", "0", 1, 20000, "", "", 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", "SysAdmin", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+        #region 修改运营中心未使用额度
+
+        public IActionResult EditAmt(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            SysAdmin editData = opdb.SysAdmin.FirstOrDefault(m => m.Id == Id) ?? new SysAdmin();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+
+        #region 修改运营中心未使用额度
+
+        [HttpPost]
+        public string EditAmt(SysAdmin data, string OperationAmount, string Note, int Kind)
+        {
+            var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == data.Id);
+            var account = opdb.UserAccount.FirstOrDefault(m => m.UserId == sysAdmin.UserId);
+            decimal BeforeAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更前总金额
+
+            //扣减
+            
+            // if (Kind == 1 && decimal.Parse(OperationAmount) > account.TotalAmt)
+            // {
+            //     return "未使用额度不足";
+            // }
+            int OperateType = 0;
+            var description = "";
+            // if (Kind == 1 && decimal.Parse(OperationAmount) <= account.TotalAmt)
+            // {
+            //     account.TotalAmt -= decimal.Parse(OperationAmount);
+            //     OperateType = 2;//系统扣减
+            //     description ="系统扣减";
+            // }
+            // else if (Kind == 1 && decimal.Parse(OperationAmount) > account.TotalAmt)
+            // {
+            //     return "扣减金额大于未使用额度";
+            // }
+            if (Kind == 1)
+            {
+                account.TotalAmt -= decimal.Parse(OperationAmount);
+                OperateType = 2;//系统扣减
+                description = "系统扣减";
+            }
+
+            //增加
+            else if (Kind == 2)
+            {
+                account.TotalAmt += decimal.Parse(OperationAmount);
+                OperateType = 1;//系统增加
+                description = "系统增加";
+            }
+            decimal AfterAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更后总金额
+
+            AmountRecord amountRecord = opdb.AmountRecord.Add(new AmountRecord()
+            {
+                CreateDate = DateTime.Now,
+                SeoDescription = description,
+                UserId = sysAdmin.UserId, //运营中心Id
+                CreateMan = SysUserName + "-" + SysRealName,
+                UseAmount = decimal.Parse(OperationAmount),//操作金额
+                BeforeAmount = BeforeAmount,//使用前剩余额度
+                AfterAmount = AfterAmount,//使用后剩余额度
+                OperateType = OperateType,//操作类别
+            }).Entity;
+            opdb.SaveChanges();
+            AddSysLog(data.Id.ToString(), "SysAdmin", "EditAmt");
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 修改运营中心可提现额度
+
+        public IActionResult EditBalance(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            SysAdmin editData = opdb.SysAdmin.FirstOrDefault(m => m.Id == Id) ?? new SysAdmin();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改运营中心可提现额度
+
+        [HttpPost]
+        public string EditBalance(SysAdmin data, string OperationAmount, string Note, int Kind)
+        {
+            var sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == data.Id);
+            var account = opdb.UserAccount.FirstOrDefault(m => m.UserId == sysAdmin.UserId);
+            if ((Kind == 1) && decimal.Parse(OperationAmount) > account.ValidForGetAmount)
+            {
+                return "账号余额不足";
+            }
+            decimal BeforeAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更前总金额
+            int OperateType = 0;
+            var description = "";
+            if (Kind == 1 && decimal.Parse(OperationAmount) <= account.ValidForGetAmount)
+            {
+                account.ValidForGetAmount -= decimal.Parse(OperationAmount);
+                OperateType = 2;
+                description = "系统扣减";
+            }
+            else if (Kind == 1 && decimal.Parse(OperationAmount) > account.ValidForGetAmount)
+            {
+                return "扣减金额大于可提现额度";
+            }
+            else if (Kind == 2)
+            {
+                account.ValidForGetAmount += decimal.Parse(OperationAmount);
+                OperateType = 1;
+                description = "系统增加";
+            }
+            decimal AfterAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更后总金额
+            AmountRecord amountRecord = opdb.AmountRecord.Add(new AmountRecord()
+            {
+                CreateDate = DateTime.Now,
+                SeoDescription = description,
+                UserId = sysAdmin.UserId, //运营中心Id
+                CreateMan = SysUserName + "-" + SysRealName,
+                UseAmount = decimal.Parse(OperationAmount),//操作金额
+                BeforeAmount = BeforeAmount,//使用前剩余额度
+                AfterAmount = AfterAmount,//使用后剩余额度
+                OperateType = OperateType,//操作类别
+            }).Entity;
+            opdb.SaveChanges();
+            AddSysLog(data.Id.ToString(), "SysAdmin", "EditBalance");
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+
+    }
+}

+ 311 - 0
Areas/Admin/Controllers/OperateServer/SysAdminRoleOperateController.cs

@@ -0,0 +1,311 @@
+/*
+ * 运营中心角色
+ */
+
+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.OpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class SysAdminRoleOperateController : BaseController
+    {
+        public SysAdminRoleOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+        }
+
+        #region 运营中心角色列表
+
+        /// <summary>
+        /// 根据条件查询运营中心角色列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(SysAdminRole data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            string Condition = "";
+            Condition += "Name:\"" + data.Name + "\",";
+
+            if (!string.IsNullOrEmpty(Condition))
+            {
+                Condition = Condition.TrimEnd(',');
+                Condition = ", where: {" + Condition + "}";
+            }
+            ViewBag.Condition = Condition;
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询运营中心角色列表
+
+        /// <summary>
+        /// 运营中心角色列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(SysAdminRole data, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("Name", "2"); //名称
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("SysAdminRole", Fields, "Id desc", "0", page, limit, " and Status>-1");
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+
+            }
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加运营中心角色
+
+        /// <summary>
+        /// 增加或修改运营中心角色信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加运营中心角色
+
+        /// <summary>
+        /// 增加或修改运营中心角色信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(SysAdminRole data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("Name", data.Name); //名称
+            Fields.Add("Details", data.Details); //描述
+            Fields.Add("RightInfo", "," + data.RightInfo + ","); //权限设置
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("SysAdminRole", Fields, 0);
+            AddSysLog(data.Id.ToString(), "SysAdminRole", "add");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改运营中心角色
+
+        /// <summary>
+        /// 增加或修改运营中心角色信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            SysAdminRole editData = opdb.SysAdminRole.FirstOrDefault(m => m.Id == Id) ?? new SysAdminRole();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改运营中心角色
+
+        /// <summary>
+        /// 增加或修改运营中心角色信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(SysAdminRole data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("Name", data.Name); //名称
+            Fields.Add("Details", data.Details); //描述
+            Fields.Add("RightInfo", "," + data.RightInfo + ","); //权限设置
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdminRole", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "SysAdminRole", "update");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除运营中心角色信息
+
+        /// <summary>
+        /// 删除运营中心角色信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SysAdminRole", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdminRole", Fields, id);
+            }
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SysAdminRole", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdminRole", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SysAdminRole", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SysAdminRole", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("SysAdminRole", Sort, Id);
+
+            AddSysLog(Id.ToString(), "SysAdminRole", "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];
+
+                opdb.SysAdminRole.Add(new SysAdminRole()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                opdb.SaveChanges();
+            }
+            AddSysLog("0", "SysAdminRole", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(SysAdminRole data)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("Name", "2"); //名称
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("SysAdminRole", Fields, "Id desc", "0", 1, 20000, "", "", 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", "SysAdminRole", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 383 - 0
Areas/Admin/Controllers/OperateServer/SystemSetOperateController.cs

@@ -0,0 +1,383 @@
+/*
+ * 运营中心系统设置
+ */
+
+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.OpModels;
+using Library;
+using LitJson;
+using MySystemLib;
+
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class SystemSetOperateController : BaseController
+    {
+        public SystemSetOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+        }
+
+        #region 运营中心系统设置列表
+
+        /// <summary>
+        /// 根据条件查询运营中心系统设置列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(SystemSet data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            string Condition = "";
+            Condition += "WebUrl:\"" + data.WebUrl + "\",";
+            Condition += "WebName:\"" + data.WebName + "\",";
+
+            if (!string.IsNullOrEmpty(Condition))
+            {
+                Condition = Condition.TrimEnd(',');
+                Condition = ", where: {" + Condition + "}";
+            }
+            ViewBag.Condition = Condition;
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询运营中心系统设置列表
+
+        /// <summary>
+        /// 运营中心系统设置列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(SystemSet data, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("WebUrl", "2"); //网站地址
+            Fields.Add("WebName", "2"); //网站名称
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("SystemSet", Fields, "Id desc", "False", page, limit);
+            //List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            //foreach (Dictionary<string, object> dic in diclist)
+            //{
+
+            //}
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加运营中心系统设置
+
+        /// <summary>
+        /// 增加或修改运营中心系统设置信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add()
+        {
+            ViewBag.right = _accessor.HttpContext.Request.Query["right"];
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加运营中心系统设置
+
+        /// <summary>
+        /// 增加或修改运营中心系统设置信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(SystemSet data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("WebUrl", data.WebUrl); //网站地址
+            Fields.Add("WebName", data.WebName); //网站名称
+            Fields.Add("IndexKeyword", data.IndexKeyword); //首页关键词
+            Fields.Add("IndexDescription", data.IndexDescription); //首页简介
+            Fields.Add("UploadExt", data.UploadExt); //允许上传类型
+            Fields.Add("UploadMaxSize", data.UploadMaxSize); //允许最大上传
+            Fields.Add("UploadAutoZoom", data.UploadAutoZoom); //自动缩略图
+            Fields.Add("UploadAutoZoomWidth", data.UploadAutoZoomWidth); //自动缩略图宽
+            Fields.Add("UploadAutoZoomHeight", data.UploadAutoZoomHeight); //自动缩略图高
+            Fields.Add("UploadAutoWater", data.UploadAutoWater); //自动水印
+            Fields.Add("UploadWaterPosition", data.UploadWaterPosition); //水印位置
+            Fields.Add("UploadWaterPath", data.UploadWaterPath); //水印图片
+            Fields.Add("RightInfo", data.RightInfo); //版权信息
+            Fields.Add("Address", data.Address); //企业地址
+            Fields.Add("Phone", data.Phone); //联系电话
+            Fields.Add("WebStatCode", data.WebStatCode); //网站统计代码
+            Fields.Add("Logo", data.Logo); //Logo图片
+
+            int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("SystemSet", Fields, 0);
+            AddSysLog(data.Id.ToString(), "SystemSet", "add");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 修改运营中心系统设置
+
+        /// <summary>
+        /// 增加或修改运营中心系统设置信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Edit(int Id = 0)
+        {
+            ViewBag.right = _accessor.HttpContext.Request.Query["right"];
+
+            SystemSet editData = opdb.SystemSet.FirstOrDefault() ?? new SystemSet();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改运营中心系统设置
+
+        /// <summary>
+        /// 增加或修改运营中心系统设置信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(SystemSet data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+            Fields.Add("WebUrl", data.WebUrl); //网站地址
+            Fields.Add("WebName", data.WebName); //网站名称
+            Fields.Add("IndexKeyword", data.IndexKeyword); //首页关键词
+            Fields.Add("IndexDescription", data.IndexDescription); //首页简介
+            Fields.Add("UploadExt", data.UploadExt); //允许上传类型
+            Fields.Add("UploadMaxSize", data.UploadMaxSize); //允许最大上传
+            Fields.Add("UploadAutoZoom", data.UploadAutoZoom); //自动缩略图
+            Fields.Add("UploadAutoZoomWidth", data.UploadAutoZoomWidth); //自动缩略图宽
+            Fields.Add("UploadAutoZoomHeight", data.UploadAutoZoomHeight); //自动缩略图高
+            Fields.Add("UploadAutoZoomQuality", data.UploadAutoZoomQuality); //自动缩略图质量
+            Fields.Add("UploadAutoWater", data.UploadAutoWater); //自动水印
+            Fields.Add("UploadWaterPosition", data.UploadWaterPosition); //水印位置
+            Fields.Add("UploadWaterPath", data.UploadWaterPath); //水印图片
+            Fields.Add("RightInfo", data.RightInfo); //版权信息
+            Fields.Add("Address", data.Address); //企业地址
+            Fields.Add("Phone", data.Phone); //联系电话
+            Fields.Add("WebStatCode", data.WebStatCode); //网站统计代码
+            Fields.Add("Logo", data.Logo); //Logo图片
+            Fields.Add("StartAdPhoto", data.StartAdPhoto); //App启动图片
+            Fields.Add("UploadOss", data.UploadOss);
+
+            SystemSet check = opdb.SystemSet.FirstOrDefault();
+            if (check == null)
+            {
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("SystemSet", Fields, 0);
+            }
+            else
+            {
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SystemSet", Fields, data.Id);
+            }
+            AddSysLog(data.Id.ToString(), "SystemSet", "update");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+        public IActionResult AppStart()
+        {
+            ViewBag.right = _accessor.HttpContext.Request.Query["right"];
+            return View();
+        }
+        [HttpPost]
+        public string AppStart(SystemSet data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();            
+            Fields.Add("StartAdPhoto", data.StartAdPhoto); //App启动图片
+            SystemSet check = opdb.SystemSet.FirstOrDefault();
+            if (check == null)
+            {
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("SystemSet", Fields, 0);
+            }
+            else
+            {
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SystemSet", Fields, data.Id);
+            }
+            AddSysLog(data.Id.ToString(), "SystemSet", "AppStart");
+
+            Models.FileUpdateInfo fileUpdateInfo = db.FileUpdateInfo.FirstOrDefault(m => m.FileName == data.StartAdPhoto);
+            if (fileUpdateInfo == null)
+            {
+                string Path = data.StartAdPhoto.Substring(0, data.StartAdPhoto.LastIndexOf("/") + 1);
+                if (Path.Contains("static"))
+                {
+                    Path = Path.Substring(Path.IndexOf("static"));
+                }
+                string FileName = data.StartAdPhoto.Substring(data.StartAdPhoto.LastIndexOf("/") + 1);
+                db.FileUpdateInfo.Add(new Models.FileUpdateInfo()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+                    FileName = FileName,
+                    Path = Path,
+                    VersionNum = 1,
+                });
+            }
+            opdb.SaveChanges();
+
+            return "success";
+        }
+        public JsonResult UploadPhoto([FromForm] IFormCollection rf)
+        {
+            IFormFile imgFile = rf.Files[0];
+            SystemSet set = opdb.SystemSet.FirstOrDefault() ?? new SystemSet();
+            string path = MySystemLib.SystemPublicFuction.GetPicPath(imgFile, "skin/app/default/static/images/", function.ReadInstance("/WebRootPath.txt"), "startadphoto" + DateTime.Now.ToString("yyMMddHHmm"));
+            return Json(new AppResultJson() { Status = "1", Info = "", Data = path.Replace("wwwroot/", "") });
+        }
+        #endregion
+
+        #region 删除运营中心系统设置信息
+
+        /// <summary>
+        /// 删除运营中心系统设置信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SystemSet", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Delete("SystemSet", id);
+            }
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SystemSet", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SystemSet", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "SystemSet", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("SystemSet", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("SystemSet", Sort, Id);
+
+            AddSysLog(Id.ToString(), "SystemSet", "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];
+
+                opdb.SystemSet.Add(new SystemSet()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                opdb.SaveChanges();
+            }
+            AddSysLog("0", "SystemSet", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(SystemSet data)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("WebUrl", "2"); //网站地址
+            Fields.Add("WebName", "2"); //网站名称
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("SystemSet", Fields, "Id desc", "False", 1, 20000, "", "", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+
+            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", "SystemSet", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 481 - 0
Areas/Admin/Controllers/OperateServer/UserAccountRecordOperateController.cs

@@ -0,0 +1,481 @@
+/*
+ * 创客账户变动记录
+ */
+
+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 UserAccountRecordOperateController : BaseController
+    {
+        public UserAccountRecordOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+        }
+
+        #region 创客账户变动记录列表
+
+        /// <summary>
+        /// 根据条件查询创客账户变动记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(UserAccountRecord data, string right, int UserId = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            ViewBag.UserId = UserId.ToString();
+
+            // List<Users> TopUsers = db.Users.Where(m => m.ParentUserId == 0).ToList();
+            // ViewBag.TopUsers = TopUsers;
+            var Brands = db.KqProducts.OrderBy(m => m.Id).ToList();
+            ViewBag.Brands = Brands;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询创客账户变动记录列表
+
+        /// <summary>
+        /// 创客账户变动记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(UserAccountRecord data, string MakerCode, string OpCode, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("ChangeType", "1"); //交易类型
+            Fields.Add("ProductType", "1"); //产品类型
+            Fields.Add("TransRecordNo", "3"); //交易流水编号
+
+            string condition = condition = " and Status>-1";
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
+            }
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                condition += " and UserId in (select Id 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 = db.UserAccountRecord.Any(m => m.CreateDate >= start);
+                var checks = db.UserAccountRecord.Any(m => m.CreateDate <= end);
+                if (check)
+                {
+                    var sId = db.UserAccountRecord.Where(m => m.CreateDate >= start).Min(m => m.Id);
+                    condition += "  and Id >=" + sId;
+                }
+                if (checks)
+                {
+                    var eId = db.UserAccountRecord.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 = db.UserAccountRecord.Any(m => m.CreateDate >= start);
+                if (check)
+                {
+                    var minId = db.UserAccountRecord.Where(m => m.CreateDate >= start).Min(m => m.Id);
+                    var Info = function.ReadInstance("/WritePage/UsersAccountRecord/UsersAccountRecord.txt");
+                    if (string.IsNullOrEmpty(Info.ToString()))
+                    {
+                        function.WritePage("/WritePage/UsersAccountRecord/", "UsersAccountRecord.txt", minId.ToString());
+                        condition += " and Id >=" + minId;
+                    }
+                    else
+                    {
+                        condition += " and Id >=" + Convert.ToInt32(Info);
+                    }
+                }
+                else
+                {
+                    condition += " and Id =0";
+                }
+                
+            }
+            if (data.ChangeType > 0)
+            {
+                condition += " and ChangeType=" + data.ChangeType;
+            }
+            if (data.ProductType > 0)
+            {
+                condition += " and ProductType=" + data.ProductType;
+            }
+            if (!string.IsNullOrEmpty(data.TransRecordNo))
+            {
+                condition += " and TransRecordNo='" + data.TransRecordNo + "'";
+            }
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("UserAccountRecord", 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 UId = int.Parse(dic["UserId"].ToString());
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == UId) ?? new SysAdmin();
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["MakerName"] = sysAdmin.MakerName;
+                int ProductType = int.Parse(dic["ProductType"].ToString());
+                dic["ProductTypeName"] = RelationClass.GetKqProductBrandInfo(ProductType);
+                int ChangeType = int.Parse(dic["ChangeType"].ToString());
+                dic["ChangeTypeName"] = RelationClassForConst.GetChangeTypeInfo(ChangeType);
+
+                //获得盟主5元奖励的机具Sn
+                int SnId = int.Parse(dic["QueryCount"].ToString());
+                var pos = db.PosMachinesTwo.FirstOrDefault(m => m.Id == SnId) ?? new Models.PosMachinesTwo();
+                dic["PosSn"] = pos.PosSn;
+            }
+            Dictionary<string, object> other = new Dictionary<string, object>();
+
+            string ChangeTypeAmount0 = "0.00", ChangeTypeAmount1 = "0.00", ChangeTypeAmount2 = "0.00", ChangeTypeAmount3 = "0.00", ChangeTypeAmount4 = "0.00", ChangeTypeAmount5 = "0.00", ChangeTypeAmount6 = "0.00", ChangeTypeAmount61 = "0.00", ChangeTypeAmount62 = "0.00", ChangeTypeAmount63 = "0.00", ChangeTypeAmount64 = "0.00", ChangeTypeAmount50 = "0.00", ChangeTypeAmount111 = "0.00", ChangeTypeAmount112 = "0.00", ChangeTypeAmount60 = "0.00", ChangeTypeAmount31 = "0.00";
+            DataTable dt = OtherMySqlConn.dtable("select sum(if(ChangeType=0, ChangeAmount, 0)),sum(if(ChangeType=1, ChangeAmount, 0)),sum(if(ChangeType=2, ChangeAmount, 0)),sum(if(ChangeType=6, ChangeAmount, 0)),sum(if(ChangeType=61, ChangeAmount, 0)),sum(if(ChangeType=62, ChangeAmount, 0)),sum(if(ChangeType=63, ChangeAmount, 0)),sum(if(ChangeType=64, ChangeAmount, 0)),sum(if(ChangeType=50, ChangeAmount, 0)),sum(if(ChangeType=111, ChangeAmount, 0)),sum(if(ChangeType=112, ChangeAmount, 0)),sum(if(ChangeType=60, ChangeAmount, 0)),sum(if(ChangeType=31, ChangeAmount, 0)),sum(if(ChangeType=3, ChangeAmount, 0)),sum(if(ChangeType=4, ChangeAmount, 0)),sum(if(ChangeType=5, ChangeAmount, 0)) from UserAccountRecord where 1=1" + condition);
+            DataTable dts = OtherMySqlConn.dtable("select SUM(FluxProfitAmt) from FluxProfitDetail where ");
+            if (dt.Rows.Count > 0)
+            {
+                ChangeTypeAmount0 = dt.Rows[0][0].ToString();
+                ChangeTypeAmount1 = dt.Rows[0][1].ToString();
+                ChangeTypeAmount2 = dt.Rows[0][2].ToString();
+                ChangeTypeAmount3 = dt.Rows[0][13].ToString();
+                ChangeTypeAmount4 = dt.Rows[0][14].ToString();
+                ChangeTypeAmount5 = dt.Rows[0][15].ToString();
+                ChangeTypeAmount6 = dt.Rows[0][3].ToString();
+                ChangeTypeAmount61 = dt.Rows[0][4].ToString();
+                ChangeTypeAmount62 = dt.Rows[0][5].ToString();
+                ChangeTypeAmount63 = dt.Rows[0][6].ToString();
+                ChangeTypeAmount64 = dt.Rows[0][7].ToString();
+                ChangeTypeAmount50 = dt.Rows[0][8].ToString();
+                ChangeTypeAmount111 = dt.Rows[0][9].ToString();
+                ChangeTypeAmount112 = dt.Rows[0][10].ToString();
+                ChangeTypeAmount60 = dt.Rows[0][11].ToString();
+                ChangeTypeAmount31 = dt.Rows[0][12].ToString();
+            }
+            other.Add("ChangeTypeAmount0", ChangeTypeAmount0); //激活奖励
+            other.Add("ChangeTypeAmount1", ChangeTypeAmount1); //交易分润
+            other.Add("ChangeTypeAmount2", ChangeTypeAmount2); //提现申请
+            other.Add("ChangeTypeAmount3", ChangeTypeAmount3); //提现税点扣除
+            other.Add("ChangeTypeAmount4", ChangeTypeAmount4); //提现税点扣除
+            other.Add("ChangeTypeAmount5", ChangeTypeAmount5); //提现税点扣
+            other.Add("ChangeTypeAmount6", ChangeTypeAmount6); //提现失败,解冻
+            other.Add("ChangeTypeAmount61", ChangeTypeAmount61); //人工冻结
+            other.Add("ChangeTypeAmount62", ChangeTypeAmount62); //人工解冻
+            other.Add("ChangeTypeAmount63", ChangeTypeAmount63); //人工扣减
+            other.Add("ChangeTypeAmount64", ChangeTypeAmount64); //人工增加
+            other.Add("ChangeTypeAmount50", ChangeTypeAmount50); //开机奖励
+            other.Add("ChangeTypeAmount111", ChangeTypeAmount111); //分润补贴
+            other.Add("ChangeTypeAmount112", ChangeTypeAmount112); //推荐奖励
+            other.Add("ChangeTypeAmount60", ChangeTypeAmount60); //流量卡分佣
+            other.Add("ChangeTypeAmount31", ChangeTypeAmount31); //红包奖励
+            obj.Add("other", other);
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加创客账户变动记录
+
+        /// <summary>
+        /// 增加或修改创客账户变动记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加创客账户变动记录
+
+        /// <summary>
+        /// 增加或修改创客账户变动记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(UserAccountRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("UserAccountRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "UserAccountRecord", "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;
+
+
+            UserAccountRecord editData = opdb.UserAccountRecord.FirstOrDefault(m => m.Id == Id) ?? new UserAccountRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改创客账户变动记录
+
+        /// <summary>
+        /// 增加或修改创客账户变动记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(UserAccountRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserAccountRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "UserAccountRecord", "update");
+            db.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除创客账户变动记录信息
+
+        /// <summary>
+        /// 删除创客账户变动记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UserAccountRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserAccountRecord", 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, "UserAccountRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserAccountRecord", 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, "UserAccountRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserAccountRecord", Fields, id);
+            }
+            db.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("UserAccountRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "UserAccountRecord", "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];
+
+                opdb.UserAccountRecord.Add(new UserAccountRecord()
+                {
+                    CreateDate = DateTime.Now,
+                    UpdateDate = DateTime.Now,
+
+                });
+                db.SaveChanges();
+            }
+            AddSysLog("0", "UserAccountRecord", "Import");
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(UserAccountRecord data, string MakerCode, string OpCode, string RealName, int TopUserId, int UserId)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("ChangeType", "1"); //交易类型
+            Fields.Add("ProductType", "1"); //产品类型
+            Fields.Add("TransRecordNo", "3"); //交易流水编号
+            Fields.Add("CreateDate", "3"); //交易时间
+
+            string condition = " and Status>-1";
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
+            }
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                condition += " and UserId in (select Id from SysAdmin where OpCode='" + OpCode + "')";
+            }
+            //创客名称
+            if (!string.IsNullOrEmpty(RealName))
+            {
+                condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
+            }
+            //顶级创客
+            if (TopUserId > 0)
+            {
+                condition += " and UserId in (select Id from Users where ParentNav like '," + TopUserId + ",%')";
+            }
+            if (UserId > 0)
+            {
+                condition += " and UserId=" + UserId;
+            }
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("UserAccountRecord", Fields, "Id desc", "0", 1, 20000, condition, "UserId,ProductType,TransRecordNo,ChangeType,ChangeAmount,Remark,BeforeTotalAmount,AfterTotalAmount,BeforeFreezeAmount,AfterFreezeAmount,BeforeBalanceAmount,AfterBalanceAmount,CreateDate", false);
+            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
+            foreach (Dictionary<string, object> dic in diclist)
+            {
+                int UId = int.Parse(dic["UserId"].ToString());
+                SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == UId) ?? new SysAdmin();
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["MakerName"] = sysAdmin.MakerName;
+                int ProductType = int.Parse(dic["ProductType"].ToString());
+                dic["ProductTypeName"] = RelationClass.GetKqProductBrandInfo(ProductType);
+                int ChangeType = int.Parse(dic["ChangeType"].ToString());
+                dic["ChangeTypeName"] = RelationClassForConst.GetChangeTypeInfo(ChangeType);
+                dic.Remove("UserId");
+                dic.Remove("ChangeType");
+                dic.Remove("ProductType");
+            }
+
+            Dictionary<string, object> result = new Dictionary<string, object>();
+            result.Add("Status", "1");
+            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
+            result.Add("Obj", diclist);
+            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
+
+            ReturnFields.Add("OpCode", "运营中心编号");
+            ReturnFields.Add("MakerCode", "创客编号");
+            ReturnFields.Add("RealName", "创客姓名");
+            ReturnFields.Add("ProductTypeName", "产品类型");
+            ReturnFields.Add("TransRecordNo", "交易流水编号");
+            ReturnFields.Add("ChangeTypeName", "交易类型");
+            ReturnFields.Add("ChangeAmount", "交易金额");
+            ReturnFields.Add("Remark", "备注");
+            ReturnFields.Add("BeforeTotalAmount", "交易前总金额");
+            ReturnFields.Add("AfterTotalAmount", "交易后总金额");
+            ReturnFields.Add("BeforeFreezeAmount", "交易前冻结金额");
+            ReturnFields.Add("AfterFreezeAmount", "交易后冻结金额");
+            ReturnFields.Add("BeforeBalanceAmount", "交易前余额");
+            ReturnFields.Add("AfterBalanceAmount", "交易后余额");
+            ReturnFields.Add("CreateDate", "交易时间");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "UserAccountRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+    }
+}

+ 598 - 0
Areas/Admin/Controllers/OperateServer/UserCashRecordOperateController.cs

@@ -0,0 +1,598 @@
+/*
+ * 提现记录
+ */
+
+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 UserCashRecordOperateController : BaseController
+    {
+        public UserCashRecordOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+        }
+
+        #region 提现记录列表
+
+        /// <summary>
+        /// 根据条件查询提现记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(UserCashRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            string Condition = "";
+            Condition += "CashOrderNo:\"" + data.CashOrderNo + "\",";
+            Condition += "TradeType:\"" + data.TradeType + "\",";
+
+            if (!string.IsNullOrEmpty(Condition))
+            {
+                Condition = Condition.TrimEnd(',');
+                Condition = ", where: {" + Condition + "}";
+            }
+            ViewBag.Condition = Condition;
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询提现记录列表
+
+        /// <summary>
+        /// 提现记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(UserCashRecord data, string OpCode, string StatusSelect, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CashOrderNo", "1"); //提现单号
+            Fields.Add("TradeType", "0"); //交易类型
+
+            string condition = " and Status>-1 and TradeType<3";
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                condition += " and UserId in (select UserId from SysAdmin where OpCode='" + OpCode + "')";
+            }
+            //提现状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+            if (!string.IsNullOrEmpty(data.CashOrderNo))
+            {
+                condition += " and CashOrderNo='" + data.CashOrderNo + "'";
+            }
+            if (data.TradeType > 0)
+            {
+                condition += " and TradeType=" + data.TradeType;
+            }
+
+            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.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
+                var checks = opdb.UserCashRecord.Any(m => m.CreateDate <= end && m.TradeType < 3);
+                if (check)
+                {
+                    var sId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
+                    condition += "  and Id >=" + sId;
+                }
+                if (checks)
+                {
+                    var eId = opdb.UserCashRecord.Where(m => m.CreateDate <= end && m.TradeType < 3).Max(m => m.Id);
+                    condition += " and Id <=" + eId;
+                }
+            }
+            else
+            {
+                var start = Convert.ToDateTime(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01");
+                var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
+                if (check)
+                {
+                    var minId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
+                    var Info = function.ReadInstance("/WritePage/OpUserCashRecord/OpUserCashRecord.txt");
+                    if (string.IsNullOrEmpty(Info.ToString()))
+                    {
+                        function.WritePage("/WritePage/OpUserCashRecord/", "OpUserCashRecord.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("UserCashRecord", 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["RealName"] = sysAdmin.MakerName;
+                dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["StatusName"] = "处理中";
+                if (Status == 1) dic["StatusName"] = "成功";
+                if (Status == 2) dic["StatusName"] = "失败";
+
+                int QueryCount = int.Parse(dic["QueryCount"].ToString());
+                if (QueryCount == 0) dic["LockName"] = "待提交";
+                if (QueryCount == 1) dic["LockName"] = "已提交";
+            }
+            Dictionary<string, object> other = new Dictionary<string, object>();
+
+            string WaitAmount = "0.00";//待处理总金额
+            string SuccessAmount = "0.00";//提现成功总金额
+            string FailAmount = "0.00";//提现失败总金额
+            DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(Status=0,TradeAmount,0)),SUM(if(Status=1,TradeAmount,0)),SUM(if(Status=2,TradeAmount,0)) FROM UserCashRecord where 1=1 " + condition);
+            if (dt.Rows.Count > 0)
+            {
+                WaitAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
+                SuccessAmount = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
+                FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
+            }
+            other.Add("WaitAmount", WaitAmount);
+            other.Add("SuccessAmount", SuccessAmount);
+            other.Add("FailAmount", FailAmount);
+            obj.Add("other", other);
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加提现记录
+
+        /// <summary>
+        /// 增加或修改提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加提现记录
+
+        /// <summary>
+        /// 增加或修改提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(UserCashRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("Remark", data.Remark); //备注
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("UserCashRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "UserCashRecord", "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;
+
+            UserCashRecord editData = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id) ?? new UserCashRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改提现记录
+
+        /// <summary>
+        /// 增加或修改提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(UserCashRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("Remark", data.Remark); //备注
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "UserCashRecord", "update");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除提现记录信息
+
+        /// <summary>
+        /// 删除提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UserCashRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
+            }
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UserCashRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UserCashRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 批量设置成功
+
+        /// <summary>
+        /// 批量设置成功
+        /// </summary>
+        /// <returns></returns>
+        public string BatchSetting(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "OpUserCashRecord", "BatchSetting");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);//设置提现记录为成功
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);                
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("UserCashRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "UserCashRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+
+        public IActionResult Import(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            return View();
+        }
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        [HttpPost]
+        public string ImportPost(string ExcelPath)
+        {
+            string key = function.MD5_16(Guid.NewGuid().ToString());
+            RedisDbconn.Instance.AddList("ExcelImportV3", ExcelPath + "#cut#OpUserCashRecord#cut#" + key + "#cut#" + SysUserName);
+            return "success|" + key;
+        }
+        public string CheckImport(string key)
+        {
+            string result = RedisDbconn.Instance.Get<string>("OpCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    return result;
+                }
+                return datalist[0];
+            }
+            return "0";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(UserCashRecord data, string OpCode, string StatusSelect, string PayStatus)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CashOrderNo", "1"); //提现单号
+            Fields.Add("CreateDate", "3"); //创建时间
+            Fields.Add("TradeType", "0"); //交易类型
+
+            string condition = " and Status>-1 and TradeType<3";
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                var sysUser = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == OpCode) ?? new OpModels.SysAdmin();
+                if (sysUser.Id > 0)
+                {
+                    condition += " and OpId=" + sysUser.UserId;
+                }
+            }
+            //提现状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+            //提交到代付状态
+            if (!string.IsNullOrEmpty(PayStatus))
+            {
+                int QueryCount = int.Parse(function.CheckInt(PayStatus));
+                if (QueryCount == 2)
+                {
+                    QueryCount = 0;
+                }
+                condition += " and QueryCount=" + QueryCount;
+            }
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("UserCashRecord", Fields, "Id desc", "0", 1, 20000, condition, "CashOrderNo,UserId,IdCardNo,ActualTradeAmount,Remark,Status,QueryCount,CreateDate", false);
+            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();
+                var user = db.Users.FirstOrDefault(m => m.Id == sysAdmin.UserId) ?? new Models.Users();
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["MakerName"] = sysAdmin.MakerName;
+                dic["RealName"] = sysAdmin.RealName;
+                dic["Mobile"] = sysAdmin.MakerMobile;
+                dic["SettleBankName"] = user.SettleBankName;
+                dic["SettleBankCardNo"] = user.SettleBankCardNo;
+                dic.Remove("UserId");
+                // dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["StatusName"] = "处理中";
+                if (Status == 1) dic["StatusName"] = "成功";
+                if (Status == 2) dic["StatusName"] = "失败";
+                dic.Remove("Status");
+
+                int QueryCount = int.Parse(dic["QueryCount"].ToString());
+                if (QueryCount == 0) dic["LockName"] = "待提交";
+                if (QueryCount == 1) dic["LockName"] = "已提交";
+                dic.Remove("QueryCount");
+            }
+
+            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("CashOrderNo", "提现单号");
+            ReturnFields.Add("OpCode", "运营中心编号");
+            ReturnFields.Add("MakerCode", "创客编号");
+            ReturnFields.Add("MakerName", "创客姓名");
+            ReturnFields.Add("Mobile", "手机号");
+            ReturnFields.Add("IdCardNo", "身份证号");
+            ReturnFields.Add("SettleBankName", "开户行名称");
+            ReturnFields.Add("SettleBankCardNo", "开户行卡号");
+            ReturnFields.Add("ActualTradeAmount", "发佣金额(单位:元)");
+            ReturnFields.Add("LockName", "代付标记");
+            ReturnFields.Add("StatusName", "状态");
+            ReturnFields.Add("Remark", "备注");
+            ReturnFields.Add("CreateDate", "创建时间");
+
+            // ReturnFields.Add("CashOrderNo", "提现单号");
+            // ReturnFields.Add("MakerCode", "创客编码");
+            // ReturnFields.Add("RealName", "创客名称");
+            // ReturnFields.Add("IdCardNo", "身份证号");
+            // ReturnFields.Add("SettleBankCardNo", "提现卡号");
+            // ReturnFields.Add("SettleBankName", "银行名称");
+            // ReturnFields.Add("TradeType", "交易类型");
+            // ReturnFields.Add("TradeAmount", "交易金额(元)");
+            // ReturnFields.Add("Status", "订单状态");
+            // ReturnFields.Add("ReturnCode", "提现服务返回编码");
+            // ReturnFields.Add("ReturnMsg", "提现服务返回信息");
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "OpUserCashRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+        #region 拒绝
+
+        /// <summary>
+        /// 拒绝
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Reduce(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            UserCashRecord editData = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id) ?? new UserCashRecord();
+            ViewBag.data = editData;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 拒绝
+
+        /// <summary>
+        /// 拒绝
+        /// </summary>
+        /// <returns></returns>
+        public string ReduceDo(int Id, string Remark)
+        {
+            AddSysLog(Id, "UserCashRecord", "Reduce");
+            UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id);
+            if (edit != null)
+            {
+                edit.Status = 2;
+                edit.Remark = Remark;
+                edit.UpdateMan = SysUserName;
+                UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
+                if (account != null)
+                {
+                    decimal TradeAmount = edit.TradeAmount;
+                    decimal BeforeAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount; //变更前总金额
+                    decimal AfterAmount = account.TotalAmt + account.ValidAmount + account.ValidForGetAmount + TradeAmount; //变更后总金额
+                    account.ValidForGetAmount += TradeAmount;//返回可提现余额
+                    opdb.AmountRecord.Add(new AmountRecord()
+                    {
+                        CreateDate = DateTime.Now,
+                        UserId = edit.UserId, //创客
+                        SeoDescription = "提现驳回",
+                        UseAmount = TradeAmount, //变更金额
+                        BeforeAmount = BeforeAmount, //变更前总金额
+                        AfterAmount = AfterAmount, //变更后总金额
+                        OperateType = 1,
+                    });
+                    opdb.SaveChanges();
+                }
+
+                opdb.SaveChanges();
+            }
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 解除
+
+        /// <summary>
+        /// 解除
+        /// </summary>
+        /// <returns></returns>
+        public string Cancel(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "WithdrawRecord", "Cancel");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id);
+                if (edit != null)
+                {
+                    edit.QueryCount = 0;
+                    opdb.SaveChanges();
+                }
+            }
+
+            return "success";
+        }
+
+        #endregion
+
+    }
+}

+ 657 - 0
Areas/Admin/Controllers/OperateServer/UserCashRecordOperatesController.cs

@@ -0,0 +1,657 @@
+/*
+ * 提现记录
+ */
+
+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 UserCashRecordOperatesController : BaseController
+    {
+        public UserCashRecordOperatesController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
+        {
+        }
+
+        #region 提现记录列表
+
+        /// <summary>
+        /// 根据条件查询提现记录列表
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Index(UserCashRecord data, string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            string Condition = "";
+            Condition += "CashOrderNo:\"" + data.CashOrderNo + "\",";
+            Condition += "TradeType:\"" + data.TradeType + "\",";
+
+            if (!string.IsNullOrEmpty(Condition))
+            {
+                Condition = Condition.TrimEnd(',');
+                Condition = ", where: {" + Condition + "}";
+            }
+            ViewBag.Condition = Condition;
+            return View();
+        }
+
+        #endregion
+
+        #region 根据条件查询提现记录列表
+
+        /// <summary>
+        /// 提现记录列表
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult IndexData(UserCashRecord data, string OpCode, string StatusSelect, string CreateDateData, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CashOrderNo", "1"); //提现单号
+            Fields.Add("TradeType", "0"); //交易类型
+
+            string condition = " and Status>-1 and TradeType=3";
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                condition += " and UserId in (select UserId from SysAdmin where OpCode='" + OpCode + "')";
+            }
+            //提现状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+            if (!string.IsNullOrEmpty(data.CashOrderNo))
+            {
+                condition += " and CashOrderNo='" + data.CashOrderNo + "'";
+            }
+            if (data.TradeType > 0)
+            {
+                condition += " and TradeType=" + data.TradeType;
+            }
+
+            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.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
+                var checks = opdb.UserCashRecord.Any(m => m.CreateDate <= end && m.TradeType < 3);
+                if (check)
+                {
+                    var sId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
+                    condition += "  and Id >=" + sId;
+                }
+                if (checks)
+                {
+                    var eId = opdb.UserCashRecord.Where(m => m.CreateDate <= end && m.TradeType < 3).Max(m => m.Id);
+                    condition += " and Id <=" + eId;
+                }
+            }
+            else
+            {
+                var start = Convert.ToDateTime(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01");
+                var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
+                if (check)
+                {
+                    var minId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
+                    var Info = function.ReadInstance("/WritePage/OpUserCashRecord/OpUserCashRecord.txt");
+                    if (string.IsNullOrEmpty(Info.ToString()))
+                    {
+                        function.WritePage("/WritePage/OpUserCashRecord/", "OpUserCashRecord.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("UserCashRecord", 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["RealName"] = sysAdmin.MakerName;
+                dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["StatusName"] = "处理中";
+                if (Status == 1) dic["StatusName"] = "成功";
+                if (Status == 2) dic["StatusName"] = "失败";
+
+                int QueryCount = int.Parse(dic["QueryCount"].ToString());
+                if (QueryCount == 0) dic["LockName"] = "待提交";
+                if (QueryCount == 1) dic["LockName"] = "已提交";
+            }
+            Dictionary<string, object> other = new Dictionary<string, object>();
+
+            string WaitAmount = "0.00";//待处理总金额
+            string SuccessAmount = "0.00";//提现成功总金额
+            string FailAmount = "0.00";//提现失败总金额
+            DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(Status=0,TradeAmount,0)),SUM(if(Status=1,TradeAmount,0)),SUM(if(Status=2,TradeAmount,0)) FROM UserCashRecord where 1=1 " + condition);
+            if (dt.Rows.Count > 0)
+            {
+                WaitAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
+                SuccessAmount = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
+                FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
+            }
+            other.Add("WaitAmount", WaitAmount);
+            other.Add("SuccessAmount", SuccessAmount);
+            other.Add("FailAmount", FailAmount);
+            obj.Add("other", other);
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加提现记录
+
+        /// <summary>
+        /// 增加或修改提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加提现记录
+
+        /// <summary>
+        /// 增加或修改提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(UserCashRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("Remark", data.Remark); //备注
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("UserCashRecord", Fields, 0);
+            AddSysLog(data.Id.ToString(), "UserCashRecord", "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;
+
+            UserCashRecord editData = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id) ?? new UserCashRecord();
+            ViewBag.data = editData;
+            return View();
+        }
+
+        #endregion
+
+        #region 修改提现记录
+
+        /// <summary>
+        /// 增加或修改提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(UserCashRecord data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("Remark", data.Remark); //备注
+
+            Fields.Add("SeoTitle", data.SeoTitle);
+            Fields.Add("SeoKeyword", data.SeoKeyword);
+            Fields.Add("SeoDescription", data.SeoDescription);
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "UserCashRecord", "update");
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 删除提现记录信息
+
+        /// <summary>
+        /// 删除提现记录信息
+        /// </summary>
+        /// <returns></returns>
+        public string Delete(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UserCashRecord", "del");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", -1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
+            }
+            opdb.SaveChanges();
+
+            return "success";
+        }
+
+        #endregion
+
+        #region 开启
+
+        /// <summary>
+        /// 开启
+        /// </summary>
+        /// <returns></returns>
+        public string Open(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UserCashRecord", "open");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 关闭
+
+        /// <summary>
+        /// 关闭
+        /// </summary>
+        /// <returns></returns>
+        public string Close(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "UserCashRecord", "close");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 0);
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 批量设置成功
+
+        /// <summary>
+        /// 批量设置成功
+        /// </summary>
+        /// <returns></returns>
+        public string BatchSetting(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "OpUserCashRecord", "BatchSetting");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                Dictionary<string, object> Fields = new Dictionary<string, object>();
+                Fields.Add("Status", 1);//设置提现记录为成功
+                new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
+                var userCashRecord = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id) ?? new UserCashRecord();
+                if (userCashRecord.Id > 0)
+                {
+                    UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.UserId == Convert.ToInt32(userCashRecord.UserId));
+                    if (account != null)
+                    {
+                        account.QueryCount = 1;
+                        decimal TradeAmount = userCashRecord.TradeAmount;
+                        decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
+                        decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
+                        decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
+                        decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
+                        decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
+                        decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
+                        opdb.UserAccountRecord.Add(new UserAccountRecord()
+                        {
+                            CreateDate = DateTime.Now,
+                            UserId = userCashRecord.UserId, //运营中心
+                            ChangeType = 3, //变动类型
+                            ProductType = 99, //产品类型
+                            ChangeAmount = userCashRecord.ActualTradeAmount, //变更金额
+                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                        });
+                        opdb.UserAccountRecord.Add(new UserAccountRecord()
+                        {
+                            CreateDate = DateTime.Now,
+                            UserId = userCashRecord.UserId, //运营中心
+                            ChangeType = 4, //变动类型
+                            ProductType = 99, //产品类型
+                            ChangeAmount = userCashRecord.TradeFee, //变更金额
+                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                        });
+                        opdb.UserAccountRecord.Add(new UserAccountRecord()
+                        {
+                            CreateDate = DateTime.Now,
+                            UserId = userCashRecord.UserId, //运营中心
+                            ChangeType = 5, //变动类型
+                            ProductType = 99, //产品类型
+                            ChangeAmount = userCashRecord.ManageFee, //变更金额
+                            BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
+                            AfterTotalAmount = AfterTotalAmount, //变更后总金额
+                            BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
+                            AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
+                            BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
+                            AfterBalanceAmount = AfterBalanceAmount, //变更后余额
+                        });
+                        opdb.SaveChanges();
+                        RedisDbconn.Instance.Set("OpUserAccount:" + userCashRecord.UserId, account);
+                    }
+                }
+            }
+            opdb.SaveChanges();
+            return "success";
+        }
+
+        #endregion
+
+        #region 排序
+        /// <summary>
+        /// 排序
+        /// </summary>
+        /// <param name="Id"></param>
+        public string Sort(int Id, int Sort)
+        {
+            new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("UserCashRecord", Sort, Id);
+
+            AddSysLog(Id.ToString(), "UserCashRecord", "sort");
+            return "success";
+        }
+        #endregion
+
+        #region 导入数据
+
+        public IActionResult Import(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+            return View();
+        }
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="ExcelData"></param>
+        [HttpPost]
+        public string ImportPost(string ExcelPath)
+        {
+            string key = function.MD5_16(Guid.NewGuid().ToString());
+            RedisDbconn.Instance.AddList("ExcelImportV3", ExcelPath + "#cut#OpUserCashRecord#cut#" + key + "#cut#" + SysUserName);
+            return "success|" + key;
+        }
+        public string CheckImport(string key)
+        {
+            string result = RedisDbconn.Instance.Get<string>("OpCheckImport:" + key);
+            if (!string.IsNullOrEmpty(result))
+            {
+                string[] datalist = result.Split('|');
+                if (datalist[0] == "success")
+                {
+                    return result;
+                }
+                return datalist[0];
+            }
+            return "0";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(UserCashRecord data, string OpCode, string StatusSelect, string PayStatus)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+            Fields.Add("CashOrderNo", "1"); //提现单号
+            Fields.Add("CreateDate", "3"); //创建时间
+            Fields.Add("TradeType", "0"); //交易类型
+
+            string condition = " and Status>-1 and TradeType=3";
+            //运营中心编号
+            if (!string.IsNullOrEmpty(OpCode))
+            {
+                var sysUser = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == OpCode) ?? new OpModels.SysAdmin();
+                if (sysUser.Id > 0)
+                {
+                    condition += " and OpId=" + sysUser.UserId;
+                }
+            }
+            //提现状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+            //提交到代付状态
+            if (!string.IsNullOrEmpty(PayStatus))
+            {
+                int QueryCount = int.Parse(function.CheckInt(PayStatus));
+                if (QueryCount == 2)
+                {
+                    QueryCount = 0;
+                }
+                condition += " and QueryCount=" + QueryCount;
+            }
+
+            Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("UserCashRecord", Fields, "Id desc", "0", 1, 20000, condition, "CashOrderNo,UserId,IdCardNo,ActualTradeAmount,Remark,Status,QueryCount,CreateDate", false);
+            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();
+                var user = db.Users.FirstOrDefault(m => m.Id == sysAdmin.UserId) ?? new Models.Users();
+                dic["OpCode"] = sysAdmin.OpCode;
+                dic["MakerCode"] = sysAdmin.MakerCode;
+                dic["MakerName"] = sysAdmin.MakerName;
+                dic["RealName"] = sysAdmin.RealName;
+                dic["Mobile"] = sysAdmin.MakerMobile;
+                dic["SettleBankName"] = user.SettleBankName;
+                dic["SettleBankCardNo"] = user.SettleBankCardNo;
+                dic.Remove("UserId");
+                // dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["StatusName"] = "处理中";
+                if (Status == 1) dic["StatusName"] = "成功";
+                if (Status == 2) dic["StatusName"] = "失败";
+                dic.Remove("Status");
+
+                int QueryCount = int.Parse(dic["QueryCount"].ToString());
+                if (QueryCount == 0) dic["LockName"] = "待提交";
+                if (QueryCount == 1) dic["LockName"] = "已提交";
+                dic.Remove("QueryCount");
+            }
+
+            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("CashOrderNo", "提现单号");
+            ReturnFields.Add("OpCode", "运营中心编号");
+            ReturnFields.Add("MakerCode", "创客编号");
+            ReturnFields.Add("MakerName", "创客姓名");
+            ReturnFields.Add("Mobile", "手机号");
+            ReturnFields.Add("IdCardNo", "身份证号");
+            ReturnFields.Add("SettleBankName", "开户行名称");
+            ReturnFields.Add("SettleBankCardNo", "开户行卡号");
+            ReturnFields.Add("ActualTradeAmount", "发佣金额(单位:元)");
+            ReturnFields.Add("LockName", "代付标记");
+            ReturnFields.Add("StatusName", "状态");
+            ReturnFields.Add("Remark", "备注");
+            ReturnFields.Add("CreateDate", "创建时间");
+
+            // ReturnFields.Add("CashOrderNo", "提现单号");
+            // ReturnFields.Add("MakerCode", "创客编码");
+            // ReturnFields.Add("RealName", "创客名称");
+            // ReturnFields.Add("IdCardNo", "身份证号");
+            // ReturnFields.Add("SettleBankCardNo", "提现卡号");
+            // ReturnFields.Add("SettleBankName", "银行名称");
+            // ReturnFields.Add("TradeType", "交易类型");
+            // ReturnFields.Add("TradeAmount", "交易金额(元)");
+            // ReturnFields.Add("Status", "订单状态");
+            // ReturnFields.Add("ReturnCode", "提现服务返回编码");
+            // ReturnFields.Add("ReturnMsg", "提现服务返回信息");
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "OpUserCashRecord", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+        #region 拒绝
+
+        /// <summary>
+        /// 拒绝
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Reduce(string right, int Id = 0)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+            UserCashRecord editData = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id) ?? new UserCashRecord();
+            ViewBag.data = editData;
+
+            return View();
+        }
+
+        #endregion
+
+        #region 拒绝
+
+        /// <summary>
+        /// 拒绝
+        /// </summary>
+        /// <returns></returns>
+        public string ReduceDo(int Id, string Remark)
+        {
+            AddSysLog(Id, "UserCashRecord", "Reduce");
+            UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id);
+            if (edit != null)
+            {
+                edit.Status = 2;
+                edit.Remark = Remark;
+                edit.UpdateMan = SysUserName;
+                UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
+                if (account != null)
+                {
+                    decimal TradeAmount = edit.TradeAmount;
+                    decimal BeforeTotalAmount = account.ValidForGetAmount; //变更前总金额
+                    account.ValidForGetAmount += TradeAmount;//返回可提现余额
+                    decimal AfterTotalAmount = account.ValidForGetAmount; //变更后总金额
+                    opdb.AmountRecord.Add(new AmountRecord()
+                    {
+                        CreateDate = DateTime.Now,
+                        SeoDescription = "提现驳回",
+                        UserId = edit.UserId, //创客
+                        UseAmount = TradeAmount, //变更金额
+                        BeforeAmount = BeforeTotalAmount, //变更前总金额
+                        AfterAmount = AfterTotalAmount, //变更后总金额
+                    });
+                    opdb.SaveChanges();
+                }
+
+                opdb.SaveChanges();
+            }
+            return "success";
+        }
+
+        #endregion
+
+
+        #region 解除
+
+        /// <summary>
+        /// 解除
+        /// </summary>
+        /// <returns></returns>
+        public string Cancel(string Id)
+        {
+            string[] idlist = Id.Split(new char[] { ',' });
+            AddSysLog(Id, "WithdrawRecord", "Cancel");
+            foreach (string subid in idlist)
+            {
+                int id = int.Parse(subid);
+                UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id);
+                if (edit != null)
+                {
+                    edit.QueryCount = 0;
+                    opdb.SaveChanges();
+                }
+            }
+
+            return "success";
+        }
+
+        #endregion
+
+    }
+}

+ 112 - 87
Areas/Admin/Views/MainServer/Consumers/Edit.cshtml

@@ -1,115 +1,139 @@
 @using MySystem.Models;
-@{Consumers editData = ViewBag.data as Consumers;}
+@{
+    Consumers editData = ViewBag.data as Consumers;
+}
 @{
     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">
-<div class="layui-form-item">
-<label class="layui-form-label">昵称</label>
-<div class="layui-input-inline">
-<input class="layui-input" type="text" id="NickName" name="NickName" value="@editData.NickName" maxlength="50" lay-verify="required|" autocomplete="off" placeholder="请输入昵称">
-</div>
-</div>
-<div class="layui-form-item">
-<label class="layui-form-label">头像</label>
-<div class="layui-input-block">
-<div class="layui-upload">
-<input type="hidden" id="HeadPhoto" name="HeadPhoto" value="@editData.HeadPhoto">
-<button class="layui-btn" type="button" id="HeadPhotoBtn">选择图片</button>
-<div class="layui-inline layui-word-aux">@(new MySystem.PublicFunction().GetUploadHint("ConsumersHeadPhoto"))</div>
-</div>
-<div style="margin-top:10px;" id="HeadPhotoImage">
-@if (!string.IsNullOrEmpty(editData.HeadPhoto))
-{
-<img src="@(MySystem.OssHelper.Instance.SourceHost)@editData.HeadPhoto" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic('@(MySystem.OssHelper.Instance.SourceHost)@editData.HeadPhoto')">
-}
-</div>
-</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="Mobile" name="Mobile" value="@editData.Mobile" maxlength="11" 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="TotalDividend" name="TotalDividend" value="@editData.TotalDividend" 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="TotalIntegral" name="TotalIntegral" value="@editData.TotalIntegral" 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="CurIntgegral" name="CurIntgegral" value="@editData.CurIntgegral" maxlength="20" lay-verify="" autocomplete="off" placeholder="请输入当前积分">
-</div>
-</div>
-<div class="layui-form-item">
-<label class="layui-form-label">微信Unionid</label>
-<div class="layui-input-inline">
-<input class="layui-input" type="text" id="WechatUnionid" name="WechatUnionid" value="@editData.WechatUnionid" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入微信Unionid">
-</div>
-</div>
-<div class="layui-form-item">
-<label class="layui-form-label">支付宝UserId</label>
-<div class="layui-input-inline">
-<input class="layui-input" type="text" id="AlipayUserId" name="AlipayUserId" value="@editData.AlipayUserId" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入支付宝UserId">
-</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="NickName" name="NickName"
+                                        value="@editData.NickName" maxlength="50" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入昵称">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">头像</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="HeadPhoto" name="HeadPhoto"
+                                            value="@editData.HeadPhoto">
+                                        <button class="layui-btn" type="button" id="HeadPhotoBtn">选择图片</button>
+                                        <div class="layui-inline layui-word-aux">@(new MySystem.PublicFunction().GetUploadHint("ConsumersHeadPhoto"))</div>
+                                    </div>
+                                    <div style="margin-top:10px;" id="HeadPhotoImage">
+                                        @if (!string.IsNullOrEmpty(editData.HeadPhoto))
+                                        {
+                                            <img src="@(MySystem.OssHelper.Instance.SourceHost)@editData.HeadPhoto"
+                                            class="layui-upload-img" style="max-width:85px; max-height:85px;"
+                                            onclick="showBigPic('@(MySystem.OssHelper.Instance.SourceHost)@editData.HeadPhoto')">
+                                        }
+                                    </div>
+                                </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="Mobile" name="Mobile"
+                                        value="@editData.Mobile" maxlength="11" 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="TotalDividend" name="TotalDividend"
+                                        value="@editData.TotalDividend" 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="TotalIntegral" name="TotalIntegral"
+                                        value="@editData.TotalIntegral" 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="CurIntgegral" name="CurIntgegral"
+                                        value="@editData.CurIntgegral" maxlength="20" lay-verify="" autocomplete="off"
+                                        placeholder="请输入当前积分">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">微信Unionid</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="WechatUnionid" name="WechatUnionid"
+                                        value="@editData.WechatUnionid" maxlength="50" lay-verify="" autocomplete="off"
+                                        placeholder="请输入微信Unionid">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">支付宝UserId</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="AlipayUserId" name="AlipayUserId"
+                                        value="@editData.AlipayUserId" maxlength="50" lay-verify="" autocomplete="off"
+                                        placeholder="请输入支付宝UserId">
+                                </div>
+                            </div>
 
-</div>
+                        </div>
 
+                    </div>
+                </div>
+                <div class="layui-form-item layui-hide">
+                    <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                        value="确认">
                 </div>
             </div>
-            <div class="layui-form-item layui-hide">
-                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
-            </div>
-          </div>
         </div>
     </div>
 
     <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/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
     <script src="/other/mybjq/kindeditor-min.js"></script>
     <script src="/other/mybjq/lang/zh_CN.js"></script>
     <script>
-        
-        
+
+
         //编辑器
         KindEditor.ready(function (K) {
-            
+
         });
 
         var ids = "";
@@ -234,34 +258,35 @@
             tree = layui.tree;
             element = layui.element;
             upload = layui.upload;
-        
+
             //Hash地址的定位
             var layid = location.hash.replace(/^#test=/, '');
             element.tabChange('test', layid);
             element.on('tab(test)', function (elem) {
                 location.hash = 'test=' + $(this).attr('lay-id');
             });
-    
+
             //日期
-            
+
 
             //上传文件
             WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("ConsumersHeadPhoto"))), function (filename) {
-$('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
-$('#HeadPhoto').val(filename);
-});
+                $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#HeadPhoto').val(filename);
+            });
 
 
             //穿梭框
-            
+
 
             //TreeView,比如权限管理
-            
+
 
             //省市区
-            
+
         })
 
     </script>
 </body>
+
 </html>

+ 148 - 0
Areas/Admin/Views/MainServer/LeaderReserveRecord/Index.cshtml

@@ -0,0 +1,148 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>盟主金兑换机具券</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline {
+            width: 175px !important;
+        }
+
+        .layui-form-label {
+            width: 85px !important;
+        }
+
+        .layui-inline {
+            margin-right: 0px !important;
+        }
+
+        .w100 {
+            width: 100px !important;
+        }
+
+        .ml50 {
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创客编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="UserIdMakerCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">订单编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="SeoKeyword" 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>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i
+                            class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>新增</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i
+                            class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <button class="layui-btn" data-type="ExportExcel"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @* @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+
+                    } *@
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_main/LeaderReserveRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 257 - 0
Areas/Admin/Views/MainServer/Leaders/Add.cshtml

@@ -0,0 +1,257 @@
+@{
+    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="50" lay-verify="" autocomplete="off" placeholder="请输入创客编号">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">盟主等级</label>
+                                <div class="layui-input-inline">
+                                    <select id="LeaderLevel" name="LeaderLevel" lay-search="">
+                                        <option value="">请选择</option>
+                                        <option value="1">小盟主</option>
+                                        <option value="2">大盟主</option>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">附件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="SeoKeyword" name="SeoKeyword" value=""
+                                            lay-verify="required|">
+                                        <button class="layui-btn" type="button" id="SeoKeywordBtn">选择文件</button>
+                                        <div class="layui-inline layui-word-aux">
+                                            @(new MySystem.PublicFunction().GetUploadHint("LeadersSeoKeyword"))</div>
+                                    </div>
+                                    <div style="margin-top:10px;" id="SeoKeywordFile">
+                                    </div>
+                                    <div style="width: 50%; margin-top:20px; display:none;" id="SeoKeywordProgressBar">
+                                        <div class="layui-progress" lay-showpercent="true"
+                                            lay-filter="SeoKeywordProgress">
+                                            <div class="layui-progress-bar" lay-percent="0%"></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item layui-hide">
+                    <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                        value="确认">
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(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');
+            });
+
+            //日期
+
+
+            //上传文件
+            WebUploadJs('SeoKeywordBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("LeadersSeoKeyword"))), function (filename) {
+                $('#SeoKeywordFile').html(filename + '<a style="margin-left:20px;text-decoration:underline;color:cornflowerblue;" href="' + osshost + filename + '" target="_blank">点击查看附件</a>');
+                $('#SeoKeyword').val(filename);
+                setTimeout(function () {
+                    $("#SeoKeywordProgressBar").css("display", "none");
+                }, 1000);
+            }, function (file) {
+                $("#SeoKeywordProgressBar").css("display", "block");
+                element.progress('SeoKeywordProgress', file.percent + '%');
+            });
+            WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminHeadPhoto"))), function (filename) {
+                $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#HeadPhoto').val(filename);
+            });
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 263 - 0
Areas/Admin/Views/MainServer/Leaders/Edit.cshtml

@@ -0,0 +1,263 @@
+@using MySystem.Models;
+@{
+    Leaders editData = ViewBag.data as Leaders;
+    Users editDatas = ViewBag.datas as Users;
+}
+@{
+    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="MakerCode" name="MakerCode" value="@editDatas.MakerCode"
+                                        maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入创客编号">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">盟主等级</label>
+                                <div class="layui-input-inline">
+                                    <select id="LeaderLevel" name="LeaderLevel" lay-search="">
+                                        <option value="">请选择</option>
+                                        <option value="1">小盟主</option>
+                                        <option value="2">大盟主</option>
+                                    </select>
+                                    <script>$("#LeaderLevel").val("@editData.LeaderLevel");</script>
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">附件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="SeoKeyword" name="SeoKeyword"
+                                            value="@editData.SeoKeyword">
+                                        <button class="layui-btn" type="button" id="FilePathBtn">选择文件</button>
+                                        <div class="layui-inline layui-word-aux">@(new MySystem.PublicFunction().GetUploadHint("LeadersSeoKeyword"))</div>
+                                    </div>
+                                    <div style="margin-top:10px;" id="FilePathFile">
+                                        @if (!string.IsNullOrEmpty(editData.SeoKeyword))
+                                        {
+                                            @editData.SeoKeyword<a
+                                            style="margin-left:20px;text-decoration:underline;color:cornflowerblue;"
+                                            href="@(MySystem.OssHelper.Instance.SourceHost)@editData.SeoKeyword"
+                                            target="_blank">点击查看附件</a>
+                                        }
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item layui-hide">
+                    <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                        value="确认">
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(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');
+            });
+
+            //日期
+
+
+            //上传文件
+            WebUploadJs('SeoKeywordBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("LeadersSeoKeyword"))), function (filename) {
+                $('#SeoKeywordFile').html(filename + '<a style="margin-left:20px;text-decoration:underline;color:cornflowerblue;" href="' + osshost + filename + '" target="_blank">点击查看附件</a>');
+                $('#SeoKeyword').val(filename);
+                setTimeout(function () {
+                    $("#SeoKeywordProgressBar").css("display", "none");
+                }, 1000);
+            }, function (file) {
+                $("#SeoKeywordProgressBar").css("display", "block");
+                element.progress('SeoKeywordProgress', file.percent + '%');
+            });
+            WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminHeadPhoto"))), function (filename) {
+                $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#HeadPhoto').val(filename);
+            });
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 152 - 0
Areas/Admin/Views/MainServer/Leaders/Index.cshtml

@@ -0,0 +1,152 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>盟主管理</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <style>
+        .layui-input-inline {
+            width: 175px !important;
+        }
+
+        .layui-form-label {
+            width: 85px !important;
+        }
+
+        .layui-inline {
+            margin-right: 0px !important;
+        }
+
+        .w100 {
+            width: 100px !important;
+        }
+
+        .ml50 {
+            margin-left: 50px !important;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="layui-fluid">
+        <div class="layui-card">
+            <div class="layui-form layui-card-header layuiadmin-card-header-auto">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创客编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="UserIdMakerCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">创建时间</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" 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="LeaderLevelSelect" name="LeaderLevelSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="1">小盟主</option>
+                                <option value="2">大盟主</option>
+                            </select>
+                        </div>
+                    </div>
+
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_add,"))
+                    {
+                        <button class="layui-btn" data-type="add"><i
+                            class="layui-icon layui-icon-add-1 layuiadmin-button-btn"></i>新增</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <button class="layui-btn" data-type="batchdel"><i
+                            class="layui-icon layui-icon-delete layuiadmin-button-btn"></i>删除</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <button class="layui-btn" data-type="ExportExcel"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+
+                    }
+                </script>
+            </div>
+        </div>
+    </div>
+    <div id="excelForm" style="display:none; padding:20px;">
+        <div class="layui-tab-item layui-show">
+            <div class="layui-form-item">
+                <label class="layui-form-label">模板下载</label>
+                <div class="layui-form-mid layui-word-aux" id="excelTemp">
+                </div>
+            </div>
+            <div class="layui-form-item">
+                <label class="layui-form-label">excel文件</label>
+                <div class="layui-form-mid layui-word-aux">
+                    <div class="layui-upload">
+                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                    </div>
+                    <div class="mt10" id="ExcelFileList">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item ml10">
+            <div class="layui-input-block">
+                <button type="button" class="layui-btn" onclick="ConfirmImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_main/Leaders_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 16 - 0
Areas/Admin/Views/MainServer/PosCoupons/Index.cshtml

@@ -51,6 +51,12 @@
                                 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="OpCode" autocomplete="off">
+                        </div>
+                    </div>
                     <div class="layui-inline">
                         <label class="layui-form-label">创客编号</label>
                         <div class="layui-input-inline">
@@ -63,6 +69,16 @@
                             <input class="layui-input" type="text" name="LeaderIdMakerCode" autocomplete="off">
                         </div>
                     </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">机具券类型</label>
+                        <div class="layui-input-inline">
+                            <select id="TypeSelect" name="TypeSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="1">电签</option>
+                                <option value="2">大POS</option>
+                            </select>
+                        </div>
+                    </div>
                     <div class="layui-inline">
                         <label class="layui-form-label">兑换码</label>
                         <div class="layui-input-inline">

+ 17 - 2
Areas/Admin/Views/MainServer/PosMachinesTwo/Index.cshtml

@@ -69,6 +69,22 @@
                             <input class="layui-input" type="text" name="StoreIdName" 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="OpCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否仓库机</label>
+                        <div class="layui-input-inline">
+                            <select id="IsStoreSelect" name="IsStoreSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">否</option>
+                                <option value="1">是</option>
+                            </select>
+                        </div>
+                    </div>
                     <div class="layui-inline">
                         <label class="layui-form-label">SN编号</label>
                         <div class="layui-input-inline">
@@ -110,8 +126,7 @@
                         </div>
                     </div>
                     @{
-                        Dictionary<string, string> ProfitObjectsActivesDic = new
-            MySystem.DictionaryClass().getKqProductBrandDic();
+                        Dictionary<string, string> ProfitObjectsActivesDic = new MySystem.DictionaryClass().getKqProductBrandDic();
                     }
                     <div class="layui-inline">
                         <label class="layui-form-label">品牌</label>

+ 1 - 2
Areas/Admin/Views/MainServer/PosMachinesTwoChange/Index.cshtml

@@ -119,8 +119,7 @@
                         </div>
                     </div>
                     @{
-                        Dictionary<string, string> ProfitObjectsActivesDic = new
-                    MySystem.DictionaryClass().getKqProductBrandDic();
+                        Dictionary<string, string> ProfitObjectsActivesDic = new MySystem.DictionaryClass().getKqProductBrandDic();
                     }
                     <div class="layui-inline">
                         <label class="layui-form-label">品牌</label>

+ 215 - 146
Areas/Admin/Views/MainServer/StoreHouse/Add.cshtml

@@ -1,160 +1,214 @@
 @{
     string RightInfo = ViewBag.RightInfo as string;
     string right = ViewBag.right as string;
-    
+
 }
 <!DOCTYPE html>
 <html>
+
 <head>
     <meta charset="utf-8">
     <title>仓库(增加)</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
     <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
     <script src="/admin/js/jquery-1.10.1.min.js"></script>
     <script src="/admin/js/LAreaData2.js"></script>
     <style>
-        .layui-form-label{
+        .layui-form-label {
             width: 135px !important;
         }
-        .layui-form-item .layui-input-block{
+
+        .layui-form-item .layui-input-block {
             margin-left: 165px !important;
         }
     </style>
 </head>
+
 <body>
 
     <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
-        
+
         <div class="layui-card">
-          <div class="layui-card-body">
-            <div class="layui-tab" lay-filter="mytabbar">
-                <div class="layui-tab-content mt20">
-                    <div class="layui-tab-item layui-show">
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库名称</label>
-                            <div class="layui-input-inline">
-                                <input class="layui-input" type="text" id="StoreName" name="StoreName" maxlength="32" lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库名称">
+            <div class="layui-card-body">
+                <div class="layui-tab" lay-filter="mytabbar">
+                    <div class="layui-tab-content mt20">
+                        <div class="layui-tab-item layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库名称</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="StoreName" name="StoreName"
+                                        maxlength="32" lay-verify="required|" autocomplete="off" placeholder="请输入仓库名称">
+                                </div>
                             </div>
-                        </div>
-                        @{Dictionary<string, string> KqProductBrandDic = new MySystem.DictionaryClass().getKqProductBrandDic();}
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*产品类型</label>
-                            <div class="layui-input-block">
-                                <input class="layui-input" type="hidden" id="BrandId" name="BrandId" value="" lay-verify="required|" />
-                                <div id="BrandIdTransfer" class="demo-transfer"></div>
-                                @{string KqProductBrandJson = "[";}
-                                @foreach (string key in KqProductBrandDic.Keys)
-                                {
-                                    KqProductBrandJson += "{\"value\": \"" + key + "\", \"title\": \"" + KqProductBrandDic[key] + "\" },";
-                                }
-                                @{KqProductBrandJson = KqProductBrandJson.TrimEnd(','); KqProductBrandJson += "]";}
+                            @{
+                                Dictionary<string, string> KqProductBrandDic = new MySystem.DictionaryClass().getKqProductBrandDic();
+                            }
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*产品类型</label>
+                                <div class="layui-input-block">
+                                    <input class="layui-input" type="hidden" id="BrandId" name="BrandId" value=""
+                                        lay-verify="required|" />
+                                    <div id="BrandIdTransfer" class="demo-transfer"></div>
+                                    @{
+                                        string KqProductBrandJson = "[";
+                                    }
+                                    @foreach (string key in KqProductBrandDic.Keys)
+                                    {
+                                        KqProductBrandJson += "{\"value\": \"" + key + "\", \"title\": \"" +
+                                        KqProductBrandDic[key] + "\" },";
+                                    }
+                                    @{
+                                        KqProductBrandJson = KqProductBrandJson.TrimEnd(','); KqProductBrandJson += "]";
+                                    }
+                                </div>
                             </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="ManageMakerCode" name="ManageMakerCode" maxlength="30" lay-verify="required|" autocomplete="off" placeholder="请输入仓库负责人编号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库负责人编号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManageMakerCode" name="ManageMakerCode"
+                                        maxlength="30" lay-verify="required|" autocomplete="off"
+                                        placeholder="请输入仓库负责人编号">
+                                </div>
                             </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="ManageRealName" name="ManageRealName" maxlength="20" lay-verify="required|" autocomplete="off" placeholder="请输入仓库管理员">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库管理员</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManageRealName" name="ManageRealName"
+                                        maxlength="20" lay-verify="required|" autocomplete="off" placeholder="请输入仓库管理员">
+                                </div>
                             </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="MakerCode" name="MakerCode" maxlength="30"  lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库归属创客编号(操作员)">
+                            <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="30" lay-verify="required|" autocomplete="off"
+                                        placeholder="请输入仓库归属创客编号(操作员)">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库归属类型</label>
-                            <div class="layui-input-inline">
-                                <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
-                                    <option value="">请选择</option>
-                                    <option value="0">分仓</option>
-                                    <option value="1">总仓</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库归属类型</label>
+                                <div class="layui-input-inline">
+                                    <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
+                                        <option value="">请选择</option>
+                                        <option value="0">分仓</option>
+                                        <option value="1">总仓</option>
+                                    </select>
+                                </div>
                             </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="ManagerEmail" name="ManagerEmail" maxlength="32" lay-verify="required|email|" autocomplete="off" placeholder="请输入管理者邮箱">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*管理者邮箱</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManagerEmail" name="ManagerEmail"
+                                        maxlength="32" lay-verify="required|email|" autocomplete="off"
+                                        placeholder="请输入管理者邮箱">
+                                </div>
                             </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="ManageMobile" name="ManageMobile" maxlength="11" lay-verify="required|phone|" autocomplete="off" placeholder="请输入管理者手机号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*管理者手机号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManageMobile" name="ManageMobile"
+                                        maxlength="11" lay-verify="required|phone|" autocomplete="off"
+                                        placeholder="请输入管理者手机号">
+                                </div>
                             </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="LimitTopUserId" name="LimitTopUserId" maxlength="100" lay-verify="" autocomplete="off" placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">限制创客编号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="LimitTopUserId" name="LimitTopUserId"
+                                        maxlength="100" lay-verify="" autocomplete="off"
+                                        placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库所属地区</label>
-                            <input type="hidden" id="Areas" name="Areas" />
-                            <div class="layui-input-inline">
-                                <select id="AreasProvince" lay-search="" lay-filter="AreasProvince" lay-verify="required|">
-                                    <option value="">省</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库所属地区</label>
+                                <input type="hidden" id="Areas" name="Areas" />
+                                <div class="layui-input-inline">
+                                    <select id="AreasProvince" lay-search="" lay-filter="AreasProvince"
+                                        lay-verify="required|">
+                                        <option value="">省</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
+                                        <option value="">市</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasArea" lay-search="" lay-filter="AreasArea">
+                                        <option value="">县/区</option>
+                                    </select>
+                                </div>
                             </div>
-                            <div class="layui-input-inline">
-                                <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
-                                    <option value="">市</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库地址</label>
+                                <div class="layui-input-block">
+                                    <input class="layui-input" type="text" id="Address" name="Address" maxlength="128"
+                                        lay-verify="required|" autocomplete="off" placeholder="请输入仓库地址">
+                                </div>
                             </div>
-                            <div class="layui-input-inline">
-                                <select id="AreasArea" lay-search="" lay-filter="AreasArea">
-                                    <option value="">县/区</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*押金</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="Deposit" name="Deposit"
+                                        value="" maxlength="32" lay-verify="required|" autocomplete="off"
+                                        placeholder="请输入押金">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库地址</label>
-                            <div class="layui-input-block">
-                                <input class="layui-input" type="text" id="Address" name="Address" maxlength="128" lay-verify="required|" autocomplete="off" placeholder="请输入仓库地址">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">附件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="FilePath" name="FilePath" value=""
+                                            lay-verify="required|">
+                                        <button class="layui-btn" type="button" id="FilePathBtn">选择文件</button>
+                                        <div class="layui-inline layui-word-aux">
+                                            @(new MySystem.PublicFunction().GetUploadHint("SysAdminFilePath"))</div>
+                                    </div>
+                                    <div style="margin-top:10px;" id="FilePathFile">
+                                    </div>
+                                    <div style="width: 50%; margin-top:20px; display:none;" id="FilePathProgressBar">
+                                        <div class="layui-progress" lay-showpercent="true"
+                                            lay-filter="FilePathProgress">
+                                            <div class="layui-progress-bar" lay-percent="0%"></div>
+                                        </div>
+                                    </div>
+                                </div>
                             </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="128"
-                                    lay-verify="" placeholder="请输入备注"></textarea>
+                            <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="128"
+                                        lay-verify="" placeholder="请输入备注"></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>
 
     <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/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
     <script src="/other/mybjq/kindeditor-min.js"></script>
     <script src="/other/mybjq/lang/zh_CN.js"></script>
     <script>
-        
-                    
+
+
         //编辑器
         KindEditor.ready(function (K) {
-            
+
         });
 
         var ids = "";
@@ -260,7 +314,7 @@
             });
         }
 
-        
+
         var tree;
         var element;
         var upload;
@@ -280,77 +334,92 @@
             tree = layui.tree;
             element = layui.element;
             upload = layui.upload;
-        
+
             //Hash地址的定位
             var layid = location.hash.replace(/^#test=/, '');
             element.tabChange('test', layid);
             element.on('tab(test)', function (elem) {
                 location.hash = 'test=' + $(this).attr('lay-id');
             });
-    
+
             //日期
-            
+
 
             //上传文件
-            
+            WebUploadJs('FilePathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminFilePath"))), function (filename) {
+                $('#FilePathFile').html(filename + '<a style="margin-left:20px;text-decoration:underline;color:cornflowerblue;" href="' + osshost + filename + '" target="_blank">点击查看附件</a>');
+                $('#FilePath').val(filename);
+                setTimeout(function () {
+                    $("#FilePathProgressBar").css("display", "none");
+                }, 1000);
+            }, function (file) {
+                $("#FilePathProgressBar").css("display", "block");
+                element.progress('FilePathProgress', file.percent + '%');
+            });
+            WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminHeadPhoto"))), function (filename) {
+                $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#HeadPhoto').val(filename);
+            });
+
 
             //穿梭框
             transfer.render({
-            elem: '#BrandIdTransfer'
-            , data: @Html.Raw(KqProductBrandJson)
+                elem: '#BrandIdTransfer'
+                , data: @Html.Raw(KqProductBrandJson)
             , title: ['待选项', '选中项']
 
-            , showSearch: true
-            , onchange: function (obj, index) {
-            if (index == 0) {
-            var source = $("#BrandId").val();
-            $.each(obj, function (index, value) {
-            var val = obj[index].value;
-            if (source != "") {
-            source += "," + val;
-            } else {
-            source += val;
-            }
-            });
-            $("#BrandId").val(source);
-            } else if (index == 1) {
-            var source = "," + $("#BrandId").val() + ",";
-            $.each(obj, function (index, value) {
-            var val = obj[index].value;
-            source = source.replace("," + val + ",", ",");
-            });
-            if (source != "") {
-            if (source == ",") {
-            source = "";
-            } else {
-            source = source.substring(1, source.length - 1);
-            }
-            }
-            $("#BrandId").val(source);
-            }
-            }
+                , showSearch: true
+                , onchange: function (obj, index) {
+                    if (index == 0) {
+                        var source = $("#BrandId").val();
+                        $.each(obj, function (index, value) {
+                            var val = obj[index].value;
+                            if (source != "") {
+                                source += "," + val;
+                            } else {
+                                source += val;
+                            }
+                        });
+                        $("#BrandId").val(source);
+                    } else if (index == 1) {
+                        var source = "," + $("#BrandId").val() + ",";
+                        $.each(obj, function (index, value) {
+                            var val = obj[index].value;
+                            source = source.replace("," + val + ",", ",");
+                        });
+                        if (source != "") {
+                            if (source == ",") {
+                                source = "";
+                            } else {
+                                source = source.substring(1, source.length - 1);
+                            }
+                        }
+                        $("#BrandId").val(source);
+                    }
+                }
             });
-            
+
 
             //TreeView,比如权限管理
-            
+
 
             //省市区
             form.on('select(AreasProvince)', function (data) {
-            AreasProvinceSelected("Areas", "", form, data.value);
+                AreasProvinceSelected("Areas", "", form, data.value);
             });
             form.on('select(AreasCity)', function (data) {
-            AreasCitySelected("Areas", "", form, data.value)
+                AreasCitySelected("Areas", "", form, data.value)
             });
             form.on('select(AreasArea)', function (data) {
-            AreasAreaSelected("Areas", form)
+                AreasAreaSelected("Areas", form)
             });
             setTimeout(function () {
-            AreasProvinceInit("Areas", "", form);
+                AreasProvinceInit("Areas", "", form);
             }, 1000);
 
         })
 
     </script>
 </body>
+
 </html>

+ 240 - 0
Areas/Admin/Views/MainServer/StoreHouse/BatchCancle.cshtml

@@ -0,0 +1,240 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string totalAmount = ViewBag.totalAmount as string;
+    string deposit = ViewBag.deposit 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">运营创客编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MakerCode" name="MakerCode"
+                                            maxlength="50" lay-verify="required|" autocomplete="off"
+                                            placeholder="请输入运营创客编号">
+                                        <div class="layui-inline layui-word-aux" style="color: #f00;" id="Reserve">
+                                        </div>
+                                        <div class="layui-input-inline">
+                                            @ViewBag.totalAmount
+                                        </div>
+                                        <div class="layui-input-inline">
+                                            @ViewBag.deposit
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item layui-hide">
+                        <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                            value="确认">
+                    </div>
+                </div>
+            </div>
+        </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>
+        var st;
+        function GetReserve(obj) {
+            clearTimeout(st);
+            setTimeout(function () {
+                $.ajax({
+                    url: "/Admin/StoreHouse/GetReserve?r=" + Math.random(1),
+                    data: "MakerCode=" + $(obj).val(),
+                    dataType: "text",
+                    success: function (data) {
+                        $('#Reserve').text('当前可用额度:' + data);
+                    }
+                });
+            }, 1000);
+
+        }
+
+
+        //编辑器
+        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>

+ 248 - 0
Areas/Admin/Views/MainServer/StoreHouse/BatchSetting.cshtml

@@ -0,0 +1,248 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string totalAmount = ViewBag.totalAmount as string;
+    string deposit = ViewBag.deposit 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">运营创客编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MakerCode" name="MakerCode"
+                                            maxlength="50" lay-verify="required|" autocomplete="off"
+                                            onkeyup="GetReserve(this)" placeholder="请输入运营创客编号">
+                                        <div class="layui-inline layui-word-aux" style="color: #f00;" id="Reserve">
+                                        </div>
+                                        <div class="layui-input-inline">
+                                            @ViewBag.totalAmount
+                                        </div>
+                                        <div class="layui-input-inline">
+                                            @ViewBag.deposit
+                                        </div>
+                                    </div>
+                                </div>
+                                @* <div class="layui-form-item">
+                                    <label class="layui-form-label">是否标记</label>
+                                    <div class="layui-input-block">
+                                        <input type="checkbox" id="IsOk" name="IsOk" value="1" lay-skin="switch"
+                                            lay-filter="switchTest" title="开关">
+                                    </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>
+        </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>
+        var st;
+        function GetReserve(obj) {
+            clearTimeout(st);
+            setTimeout(function () {
+                $.ajax({
+                    url: "/Admin/StoreHouse/GetReserve?r=" + Math.random(1),
+                    data: "MakerCode=" + $(obj).val(),
+                    dataType: "text",
+                    success: function (data) {
+                        $('#Reserve').text('当前可用额度:' + data);
+                    }
+                });
+            }, 1000);
+
+        }
+
+
+        //编辑器
+        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>

+ 193 - 141
Areas/Admin/Views/MainServer/StoreHouse/Edit.cshtml

@@ -1,179 +1,216 @@
 @using MySystem.Models;
-@{StoreHouse editData = ViewBag.data as StoreHouse;}
+@{
+    StoreHouse editData = ViewBag.data as StoreHouse;
+}
 @{
     string RightInfo = ViewBag.RightInfo as string;
     string right = ViewBag.right as string;
-    
+
 }
 <!DOCTYPE html>
 <html>
+
 <head>
     <meta charset="utf-8">
     <title>仓库(修改)</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
     <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
     <script src="/admin/js/jquery-1.10.1.min.js"></script>
     <script src="/admin/js/LAreaData2.js"></script>
     <style>
-        .layui-form-label{
+        .layui-form-label {
             width: 135px !important;
         }
-        .layui-form-item .layui-input-block{
+
+        .layui-form-item .layui-input-block {
             margin-left: 165px !important;
         }
     </style>
 </head>
+
 <body>
 
     <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
         <input type="hidden" name="Id" value="@editData.Id" />
-        
+
         <div class="layui-card">
-          <div class="layui-card-body">
-            <div class="layui-tab" lay-filter="mytabbar">
-                <div class="layui-tab-content mt20">
-                    <div class="layui-tab-item layui-show">
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库名称</label>
-                            <div class="layui-input-inline">
-                                <input class="layui-input" type="text" id="StoreName" name="StoreName"
-                                    value="@editData.StoreName" maxlength="32" lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库名称">
+            <div class="layui-card-body">
+                <div class="layui-tab" lay-filter="mytabbar">
+                    <div class="layui-tab-content mt20">
+                        <div class="layui-tab-item layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库名称</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="StoreName" name="StoreName"
+                                        value="@editData.StoreName" maxlength="32" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入仓库名称">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库状态</label>
-                            <div class="layui-input-inline">
-                                <select id="Status" name="Status" lay-search="" lay-verify="required|">
-                                    <option value="">请选择</option>
-                                    <option value="1">正常</option>
-                                    <option value="0">停用</option>
-                                </select>
-                                <script>
-                                    $("#Status").val("@editData.Status");
-                                </script>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库状态</label>
+                                <div class="layui-input-inline">
+                                    <select id="Status" name="Status" lay-search="" lay-verify="required|">
+                                        <option value="">请选择</option>
+                                        <option value="1">正常</option>
+                                        <option value="0">停用</option>
+                                    </select>
+                                    <script>
+                                        $("#Status").val("@editData.Status");
+                                    </script>
+                                </div>
                             </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="ManageMakerCode" name="ManageMakerCode"
-                                    value="@ViewBag.ManageMakerCode" maxlength="30" lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库负责人编号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库负责人编号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManageMakerCode" name="ManageMakerCode"
+                                        value="@ViewBag.ManageMakerCode" maxlength="30" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入仓库负责人编号">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库管理员</label>
-                            <div class="layui-input-inline">
-                                <input class="layui-input" type="text" readonly id="ManageRealName" name="ManageRealName"
-                                    value="@ViewBag.ManageRealName" maxlength="20" lay-verify="" autocomplete="off"
-                                    placeholder="请输入仓库负责人编号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库管理员</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" readonly id="ManageRealName"
+                                        name="ManageRealName" value="@ViewBag.ManageRealName" maxlength="20"
+                                        lay-verify="" autocomplete="off" placeholder="请输入仓库负责人编号">
+                                </div>
                             </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="MakerCode" name="MakerCode"
-                                    value="@ViewBag.MakerCode" maxlength="30" lay-verify="" autocomplete="off"
-                                    placeholder="请输入仓库归属创客编号(操作员)">
+                            <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"
+                                        value="@ViewBag.MakerCode" maxlength="30" lay-verify="" autocomplete="off"
+                                        placeholder="请输入仓库归属创客编号(操作员)">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库归属类型</label>
-                            <div class="layui-input-inline">
-                                <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
-                                    <option value="">请选择</option>
-                                    <option value="0">分仓</option>
-                                    <option value="1">总仓</option>
-                                </select>
-                                <script>
-                                    $("#StoreKind").val("@editData.StoreKind");
-                                </script>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库归属类型</label>
+                                <div class="layui-input-inline">
+                                    <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
+                                        <option value="">请选择</option>
+                                        <option value="0">分仓</option>
+                                        <option value="1">总仓</option>
+                                    </select>
+                                    <script>
+                                        $("#StoreKind").val("@editData.StoreKind");
+                                    </script>
+                                </div>
                             </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="ManagerEmail" name="ManagerEmail"
-                                    value="@editData.ManagerEmail" maxlength="32" lay-verify="required|email|"
-                                    autocomplete="off" placeholder="请输入管理者邮箱">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*管理者邮箱</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManagerEmail" name="ManagerEmail"
+                                        value="@editData.ManagerEmail" maxlength="32" lay-verify="required|email|"
+                                        autocomplete="off" placeholder="请输入管理者邮箱">
+                                </div>
                             </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="ManageMobile" name="ManageMobile"
-                                    value="@editData.ManageMobile" maxlength="11" lay-verify="required|phone|"
-                                    autocomplete="off" placeholder="请输入管理者手机号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*管理者手机号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManageMobile" name="ManageMobile"
+                                        value="@editData.ManageMobile" maxlength="11" lay-verify="required|phone|"
+                                        autocomplete="off" placeholder="请输入管理者手机号">
+                                </div>
                             </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="LimitTopUserId" name="LimitTopUserId"
-                                    value="@editData.LimitTopUserId" maxlength="100" lay-verify="" autocomplete="off"
-                                    placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">限制创客编号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="LimitTopUserId" name="LimitTopUserId"
+                                        value="@editData.LimitTopUserId" maxlength="100" lay-verify=""
+                                        autocomplete="off" placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库所属地区</label>
-                            <input type="hidden" id="Areas" name="Areas" value="@editData.Areas" />
-                            <div class="layui-input-inline">
-                                <select id="AreasProvince" lay-search="" lay-filter="AreasProvince" lay-verify="required|">
-                                    <option value="">省</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库所属地区</label>
+                                <input type="hidden" id="Areas" name="Areas" value="@editData.Areas" />
+                                <div class="layui-input-inline">
+                                    <select id="AreasProvince" lay-search="" lay-filter="AreasProvince"
+                                        lay-verify="required|">
+                                        <option value="">省</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
+                                        <option value="">市</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasArea" lay-search="" lay-filter="AreasArea">
+                                        <option value="">县/区</option>
+                                    </select>
+                                </div>
                             </div>
-                            <div class="layui-input-inline">
-                                <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
-                                    <option value="">市</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库地址</label>
+                                <div class="layui-input-block">
+                                    <input class="layui-input" type="text" id="Address" name="Address"
+                                        value="@editData.Address" maxlength="128" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入仓库地址">
+                                </div>
                             </div>
-                            <div class="layui-input-inline">
-                                <select id="AreasArea" lay-search="" lay-filter="AreasArea">
-                                    <option value="">县/区</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*押金</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="Deposit" name="Deposit"
+                                        value="@editData.Deposit" maxlength="32" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入押金">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库地址</label>
-                            <div class="layui-input-block">
-                                <input class="layui-input" type="text" id="Address" name="Address"
-                                    value="@editData.Address" maxlength="128" lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库地址">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">附件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="FilePath" name="FilePath"
+                                            value="@editData.FilePath">
+                                        <button class="layui-btn" type="button" id="FilePathBtn">选择文件</button>
+                                        <div class="layui-inline layui-word-aux">@(new MySystem.PublicFunction().GetUploadHint("SysAdminFilePath"))</div>
+                                    </div>
+                                    <div style="margin-top:10px;" id="FilePathFile">
+                                        @if (!string.IsNullOrEmpty(editData.FilePath))
+                                        {
+                                            @editData.FilePath<a
+                                            style="margin-left:20px;text-decoration:underline;color:cornflowerblue;"
+                                            href="@(MySystem.OssHelper.Instance.SourceHost)@editData.FilePath"
+                                            target="_blank">点击查看附件</a>
+                                        }
+                                    </div>
+                                </div>
                             </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="128"
-                                    lay-verify="" placeholder="请输入备注">@editData.Remark</textarea>
+                            <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="128"
+                                        lay-verify="" placeholder="请输入备注">@editData.Remark</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>
 
     <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/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
     <script src="/other/mybjq/kindeditor-min.js"></script>
     <script src="/other/mybjq/lang/zh_CN.js"></script>
     <script>
-        
-        
+
+
         //编辑器
         KindEditor.ready(function (K) {
-            
+
         });
 
         var ids = "";
@@ -298,45 +335,60 @@
             tree = layui.tree;
             element = layui.element;
             upload = layui.upload;
-        
+
             //Hash地址的定位
             var layid = location.hash.replace(/^#test=/, '');
             element.tabChange('test', layid);
             element.on('tab(test)', function (elem) {
                 location.hash = 'test=' + $(this).attr('lay-id');
             });
-    
+
             //日期
-            
+
 
             //上传文件
-            
+            WebUploadJs('FilePathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminFilePath"))), function (filename) {
+                $('#FilePathFile').html(filename + '<a style="margin-left:20px;text-decoration:underline;color:cornflowerblue;" href="' + osshost + filename + '" target="_blank">点击查看附件</a>');
+                $('#FilePath').val(filename);
+                setTimeout(function () {
+                    $("#FilePathProgressBar").css("display", "none");
+                }, 1000);
+            }, function (file) {
+                $("#FilePathProgressBar").css("display", "block");
+                element.progress('FilePathProgress', file.percent + '%');
+            });
+            WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminHeadPhoto"))), function (filename) {
+                $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#HeadPhoto').val(filename);
+            });
+
 
             //穿梭框
-            
+
 
             //TreeView,比如权限管理
-            
+
 
             //省市区
             form.on('select(AreasProvince)', function (data) {
-AreasProvinceSelected("Areas", "@editData.Areas", form, data.value);
-});
-form.on('select(AreasCity)', function (data) {
-AreasCitySelected("Areas", "@editData.Areas", form, data.value)
-});
-form.on('select(AreasArea)', function (data) {
-AreasAreaSelected("Areas", form)
-});
-setTimeout(function () {
-AreasProvinceInit("Areas", "@(Html.Raw(editData.Areas))", form);
-AreasProvinceSelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasProvince").val());
-AreasCitySelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasCity").val());
-AreasAreaSelected("Areas", form);
-}, 1000);
+                AreasProvinceSelected("Areas", "@editData.Areas", form, data.value);
+            });
+            form.on('select(AreasCity)', function (data) {
+                AreasCitySelected("Areas", "@editData.Areas", form, data.value)
+            });
+            form.on('select(AreasArea)', function (data) {
+                AreasAreaSelected("Areas", form)
+            });
+            setTimeout(function () {
+                AreasProvinceInit("Areas", "@(Html.Raw(editData.Areas))", form);
+                AreasProvinceSelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasProvince").val());
+                AreasCitySelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasCity").val());
+                AreasAreaSelected("Areas", form);
+            }, 1000);
 
         })
 
     </script>
 </body>
+
 </html>

+ 206 - 153
Areas/Admin/Views/MainServer/StoreHouse/Edits.cshtml

@@ -1,192 +1,230 @@
 @using MySystem.Models;
-@{StoreHouse editData = ViewBag.data as StoreHouse;}
+@{
+    StoreHouse editData = ViewBag.data as StoreHouse;
+}
 @{
     string RightInfo = ViewBag.RightInfo as string;
     string right = ViewBag.right as string;
-    
+
 }
 <!DOCTYPE html>
 <html>
+
 <head>
     <meta charset="utf-8">
     <title>一键新建仓库</title>
     <meta name="renderer" content="webkit">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
     <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
     <script src="/admin/js/jquery-1.10.1.min.js"></script>
     <script src="/admin/js/LAreaData2.js"></script>
     <style>
-        .layui-form-label{
+        .layui-form-label {
             width: 135px !important;
         }
-        .layui-form-item .layui-input-block{
+
+        .layui-form-item .layui-input-block {
             margin-left: 165px !important;
         }
     </style>
 </head>
+
 <body>
 
     <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
         <input type="hidden" name="Id" value="@editData.Id" />
-        
+
         <div class="layui-card">
-          <div class="layui-card-body">
-            <div class="layui-tab" lay-filter="mytabbar">
-                <div class="layui-tab-content mt20">
-                    <div class="layui-tab-item layui-show">
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库名称</label>
-                            <div class="layui-input-inline">
-                                <input class="layui-input" type="text" id="StoreName" name="StoreName"
-                                    value="@editData.StoreName" maxlength="32" lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库名称">
+            <div class="layui-card-body">
+                <div class="layui-tab" lay-filter="mytabbar">
+                    <div class="layui-tab-content mt20">
+                        <div class="layui-tab-item layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库名称</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="StoreName" name="StoreName"
+                                        value="@editData.StoreName" maxlength="32" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入仓库名称">
+                                </div>
                             </div>
-                        </div>
-                        @{Dictionary<string, string> KqProductsDic = new MySystem.DictionaryClass().getKqProductBrandDic();}
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">产品类型</label>
-                            <div class="layui-input-inline">
-                                <select id="BrandId" name="BrandId" lay-search="">
-                                    <option value="">全部...</option>
-                                    @foreach (string key in KqProductsDic.Keys)
-                                    {
-                                    <option value="@key" @(editData.BrandId.ToString() == key ? "selected" : "")>@KqProductsDic[key]</option>
-                                    }
-                                </select>
+                            @{
+                                Dictionary<string, string> KqProductsDic = new MySystem.DictionaryClass().getKqProductBrandDic();
+                            }
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">产品类型</label>
+                                <div class="layui-input-inline">
+                                    <select id="BrandId" name="BrandId" lay-search="">
+                                        <option value="">全部...</option>
+                                        @foreach (string key in KqProductsDic.Keys)
+                                        {
+                                            <option value="@key" @(editData.BrandId.ToString() == key ? "selected" : "")>@KqProductsDic[key]</option>
+                                        }
+                                    </select>
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库状态</label>
-                            <div class="layui-input-inline">
-                                <select id="Status" name="Status" lay-search="" lay-verify="required|">
-                                    <option value="">请选择</option>
-                                    <option value="1">正常</option>
-                                    <option value="0">停用</option>
-                                </select>
-                                <script>
-                                    $("#Status").val("@editData.Status");
-                                </script>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库状态</label>
+                                <div class="layui-input-inline">
+                                    <select id="Status" name="Status" lay-search="" lay-verify="required|">
+                                        <option value="">请选择</option>
+                                        <option value="1">正常</option>
+                                        <option value="0">停用</option>
+                                    </select>
+                                    <script>
+                                        $("#Status").val("@editData.Status");
+                                    </script>
+                                </div>
                             </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="ManageMakerCode" name="ManageMakerCode"
-                                    value="@ViewBag.ManageMakerCode" maxlength="30" lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库负责人编号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库负责人编号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManageMakerCode" name="ManageMakerCode"
+                                        value="@ViewBag.ManageMakerCode" maxlength="30" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入仓库负责人编号">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库管理员</label>
-                            <div class="layui-input-inline">
-                                <input class="layui-input" type="text" readonly id="ManageRealName" name="ManageRealName"
-                                    value="@ViewBag.ManageRealName" maxlength="20" lay-verify="" autocomplete="off"
-                                    placeholder="请输入仓库负责人编号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库管理员</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" readonly id="ManageRealName"
+                                        name="ManageRealName" value="@ViewBag.ManageRealName" maxlength="20"
+                                        lay-verify="" autocomplete="off" placeholder="请输入仓库负责人编号">
+                                </div>
                             </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="MakerCode" name="MakerCode"
-                                    value="@ViewBag.MakerCode" maxlength="30" lay-verify="" autocomplete="off"
-                                    placeholder="请输入仓库归属创客编号(操作员)">
+                            <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"
+                                        value="@ViewBag.MakerCode" maxlength="30" lay-verify="" autocomplete="off"
+                                        placeholder="请输入仓库归属创客编号(操作员)">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库归属类型</label>
-                            <div class="layui-input-inline">
-                                <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
-                                    <option value="">请选择</option>
-                                    <option value="0">分仓</option>
-                                    <option value="1">总仓</option>
-                                </select>
-                                <script>
-                                    $("#StoreKind").val("@editData.StoreKind");
-                                </script>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库归属类型</label>
+                                <div class="layui-input-inline">
+                                    <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
+                                        <option value="">请选择</option>
+                                        <option value="0">分仓</option>
+                                        <option value="1">总仓</option>
+                                    </select>
+                                    <script>
+                                        $("#StoreKind").val("@editData.StoreKind");
+                                    </script>
+                                </div>
                             </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="ManagerEmail" name="ManagerEmail"
-                                    value="@editData.ManagerEmail" maxlength="32" lay-verify="required|email|"
-                                    autocomplete="off" placeholder="请输入管理者邮箱">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*管理者邮箱</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManagerEmail" name="ManagerEmail"
+                                        value="@editData.ManagerEmail" maxlength="32" lay-verify="required|email|"
+                                        autocomplete="off" placeholder="请输入管理者邮箱">
+                                </div>
                             </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="ManageMobile" name="ManageMobile"
-                                    value="@editData.ManageMobile" maxlength="11" lay-verify="required|phone|"
-                                    autocomplete="off" placeholder="请输入管理者手机号">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*管理者手机号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="ManageMobile" name="ManageMobile"
+                                        value="@editData.ManageMobile" maxlength="11" lay-verify="required|phone|"
+                                        autocomplete="off" placeholder="请输入管理者手机号">
+                                </div>
                             </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="LimitTopUserId" name="LimitTopUserId"
-                                    value="@editData.LimitTopUserId" maxlength="100" lay-verify="" autocomplete="off"
-                                    placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">限制创客编号</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="LimitTopUserId" name="LimitTopUserId"
+                                        value="@editData.LimitTopUserId" maxlength="100" lay-verify=""
+                                        autocomplete="off" placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库所属地区</label>
-                            <input type="hidden" id="Areas" name="Areas" value="@editData.Areas" />
-                            <div class="layui-input-inline">
-                                <select id="AreasProvince" lay-search="" lay-filter="AreasProvince" lay-verify="required|">
-                                    <option value="">省</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库所属地区</label>
+                                <input type="hidden" id="Areas" name="Areas" value="@editData.Areas" />
+                                <div class="layui-input-inline">
+                                    <select id="AreasProvince" lay-search="" lay-filter="AreasProvince"
+                                        lay-verify="required|">
+                                        <option value="">省</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
+                                        <option value="">市</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasArea" lay-search="" lay-filter="AreasArea">
+                                        <option value="">县/区</option>
+                                    </select>
+                                </div>
                             </div>
-                            <div class="layui-input-inline">
-                                <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
-                                    <option value="">市</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库地址</label>
+                                <div class="layui-input-block">
+                                    <input class="layui-input" type="text" id="Address" name="Address"
+                                        value="@editData.Address" maxlength="128" lay-verify="required|"
+                                        autocomplete="off" placeholder="请输入仓库地址">
+                                </div>
                             </div>
-                            <div class="layui-input-inline">
-                                <select id="AreasArea" lay-search="" lay-filter="AreasArea">
-                                    <option value="">县/区</option>
-                                </select>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*押金</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" id="Deposit" name="Deposit" value=""
+                                        maxlength="32" lay-verify="required|" autocomplete="off" placeholder="请输入押金">
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-form-item">
-                            <label class="layui-form-label">*仓库地址</label>
-                            <div class="layui-input-block">
-                                <input class="layui-input" type="text" id="Address" name="Address"
-                                    value="@editData.Address" maxlength="128" lay-verify="required|" autocomplete="off"
-                                    placeholder="请输入仓库地址">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">附件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="FilePath" name="FilePath" value=""
+                                            lay-verify="required|">
+                                        <button class="layui-btn" type="button" id="FilePathBtn">选择文件</button>
+                                        <div class="layui-inline layui-word-aux">
+                                            @(new MySystem.PublicFunction().GetUploadHint("SysAdminFilePath"))</div>
+                                    </div>
+                                    <div style="margin-top:10px;" id="FilePathFile">
+                                    </div>
+                                    <div style="width: 50%; margin-top:20px; display:none;" id="FilePathProgressBar">
+                                        <div class="layui-progress" lay-showpercent="true"
+                                            lay-filter="FilePathProgress">
+                                            <div class="layui-progress-bar" lay-percent="0%"></div>
+                                        </div>
+                                    </div>
+                                </div>
                             </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="128"
-                                    lay-verify="" placeholder="请输入备注">@editData.Remark</textarea>
+                            <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="128"
+                                        lay-verify="" placeholder="请输入备注">@editData.Remark</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>
 
     <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/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
     <script src="/other/mybjq/kindeditor-min.js"></script>
     <script src="/other/mybjq/lang/zh_CN.js"></script>
     <script>
-        
-        
+
+
         //编辑器
         KindEditor.ready(function (K) {
-            
+
         });
 
         var ids = "";
@@ -311,45 +349,60 @@
             tree = layui.tree;
             element = layui.element;
             upload = layui.upload;
-        
+
             //Hash地址的定位
             var layid = location.hash.replace(/^#test=/, '');
             element.tabChange('test', layid);
             element.on('tab(test)', function (elem) {
                 location.hash = 'test=' + $(this).attr('lay-id');
             });
-    
+
             //日期
-            
+
 
             //上传文件
-            
+            WebUploadJs('FilePathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminFilePath"))), function (filename) {
+                $('#FilePathFile').html(filename + '<a style="margin-left:20px;text-decoration:underline;color:cornflowerblue;" href="' + osshost + filename + '" target="_blank">点击查看附件</a>');
+                $('#FilePath').val(filename);
+                setTimeout(function () {
+                    $("#FilePathProgressBar").css("display", "none");
+                }, 1000);
+            }, function (file) {
+                $("#FilePathProgressBar").css("display", "block");
+                element.progress('FilePathProgress', file.percent + '%');
+            });
+            WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminHeadPhoto"))), function (filename) {
+                $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#HeadPhoto').val(filename);
+            });
+
 
             //穿梭框
-            
+
 
             //TreeView,比如权限管理
-            
+
 
             //省市区
             form.on('select(AreasProvince)', function (data) {
-AreasProvinceSelected("Areas", "@editData.Areas", form, data.value);
-});
-form.on('select(AreasCity)', function (data) {
-AreasCitySelected("Areas", "@editData.Areas", form, data.value)
-});
-form.on('select(AreasArea)', function (data) {
-AreasAreaSelected("Areas", form)
-});
-setTimeout(function () {
-AreasProvinceInit("Areas", "@(Html.Raw(editData.Areas))", form);
-AreasProvinceSelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasProvince").val());
-AreasCitySelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasCity").val());
-AreasAreaSelected("Areas", form);
-}, 1000);
+                AreasProvinceSelected("Areas", "@editData.Areas", form, data.value);
+            });
+            form.on('select(AreasCity)', function (data) {
+                AreasCitySelected("Areas", "@editData.Areas", form, data.value)
+            });
+            form.on('select(AreasArea)', function (data) {
+                AreasAreaSelected("Areas", form)
+            });
+            setTimeout(function () {
+                AreasProvinceInit("Areas", "@(Html.Raw(editData.Areas))", form);
+                AreasProvinceSelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasProvince").val());
+                AreasCitySelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasCity").val());
+                AreasAreaSelected("Areas", form);
+            }, 1000);
 
         })
 
     </script>
 </body>
+
 </html>

+ 45 - 3
Areas/Admin/Views/MainServer/StoreHouse/Index.cshtml

@@ -111,6 +111,38 @@
                                 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" 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="YZOpCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否关联</label>
+                        <div class="layui-input-inline">
+                            <select id="OpStatusSelect" name="OpStatusSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">否</option>
+                                <option value="1">是</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否运营仓</label>
+                        <div class="layui-input-inline">
+                            <select id="StoreKindSelect" name="StoreKindSelect" 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>查询
@@ -168,6 +200,16 @@
                         <button class="layui-btn" data-type="SycnData"><i
                             class="layui-icon layui-icon-export layuiadmin-button-btn"></i>同步库存</button>
                     }
+                    @if (RightInfo.Contains("," + right + "_batchset,"))
+                    {
+                        <button class="layui-btn layui-btn-danger" data-type="BatchSetting"><i
+                            class="layui-icon layui-icon-edit layuiadmin-button-btn"></i>关联分仓</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_batchcancle,"))
+                    {
+                        <button class="layui-btn layui-btn-danger" data-type="BatchCancle"><i
+                            class="layui-icon layui-icon-edit layuiadmin-button-btn"></i>取消关联</button>
+                    }
                 </div>
 
                 <script type="text/html" id="ManageTpl">
@@ -180,15 +222,15 @@
                 <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>
+                                    <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 + "_edits,"))
                     {
-                            <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edits"><i class="layui-icon layui-icon-add"></i>一键新建仓库</a>
+                                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edits"><i class="layui-icon layui-icon-add"></i>一键新建仓库</a>
                     }
                     @if (RightInfo.Contains("," + right + "_sycn,"))
                     {
-                            <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sycn"><i class="layui-icon layui-icon-edit"></i>同步库存</a>
+                                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sycn"><i class="layui-icon layui-icon-edit"></i>同步库存</a>
                     }
                 </script>
             </div>

+ 298 - 0
Areas/Admin/Views/MainServer/SysTools/AuthMaker.cshtml

@@ -0,0 +1,298 @@
+@{
+    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">创客编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MakerCode" name="MakerCode"
+                                            maxlength="50" 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="RealName" name="RealName"
+                                            maxlength="50" 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="CertId" name="CertId" maxlength="50"
+                                            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="BackCard" name="BackCard"
+                                            maxlength="50" 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="BackName" name="BackName"
+                                            maxlength="50" lay-verify="required|" autocomplete="off"
+                                            placeholder="请输入银行名称">
+                                    </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 MakerCode = $('#MakerCode').val();
+            var RealName = $('#RealName').val();
+            var CertId = $('#CertId').val();
+            var BackCard = $('#BackCard').val();
+            var BackName = $('#BackName').val();
+            if (MakerCode == '') {
+                layer.msg('请输入创客编号');
+            }
+            else if (RealName == '') {
+                layer.msg('请输入真实姓名');
+            }
+            else if (CertId == '') {
+                layer.msg('请输入身份证号');
+            }
+            else if (BackCard == '') {
+                layer.msg('请输入银行卡号');
+            }
+            else if (BackName == '') {
+                layer.msg('请输入银行名称');
+            }
+            else {
+                var index = layer.confirm('确定要为该创客进行认证吗?', function (index) {
+                    var indexs = layer.load(1, {
+                        shade: [0.5, '#000']
+                    });
+                    var userdata = $("#confirmFrm").serialize();
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/SysTools/AuthMakerDo?r=" + Math.random(1),
+                        data: userdata,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index); //关闭弹层
+                            if (data == "success") {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg('认证成功', {
+                                    time: 1000
+                                }, function () {
+                                    window.location.reload();
+                                });
+                            } else {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+
+
+        //编辑器
+        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>

+ 257 - 0
Areas/Admin/Views/MainServer/SysTools/PosRewardReissued.cshtml

@@ -0,0 +1,257 @@
+@{
+    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-block">
+                                        <textarea class="layui-textarea" lay-verify="required|" name="PosSn" id="PosSn"
+                                            placeholder="请输入机具SN,多个SN用回车隔开"></textarea>
+                                    </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 PosSn = $('#PosSn').val();
+            if (PosSn == '') {
+                layer.msg('请输入机具SN,多个SN用回车隔开');
+            }
+            else {
+                var index = layer.confirm('确定要补发开机奖励吗?', function (index) {
+                    var indexs = layer.load(1, {
+                        shade: [0.5, '#000']
+                    });
+                    var userdata = $("#confirmFrm").serialize();
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/SysTools/PosRewardReissuedDo?r=" + Math.random(1),
+                        data: userdata,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index); //关闭弹层}
+                            if (data == "success") {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg('补发成功', {
+                                    time: 1000
+                                }, function () {
+                                    window.location.reload();
+                                });
+                            } else if (data.indexOf("Warning") == 0) {
+                                layer.close(indexs); //关闭弹层
+                                var datalist = data.split('|');
+                                layer.alert(datalist[1], { time: 20000 }, function () {
+                                    window.location.reload();
+                                });
+                            } else {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+
+
+        //编辑器
+        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>

+ 274 - 0
Areas/Admin/Views/MainServer/SysTools/RelationPosAndMerchant.cshtml

@@ -0,0 +1,274 @@
+@{
+    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 class="layui-form-item">
+                                    <label class="layui-form-label">商户编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MerchantNo" name="MerchantNo"
+                                            maxlength="50" 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="MerchantName" name="MerchantName"
+                                            maxlength="50" lay-verify="required|" autocomplete="off"
+                                            placeholder="请输入商户姓名">
+                                    </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 PosSn = $('#PosSn').val();
+            var MerchantNo = $('#MerchantNo').val();
+            var MerchantName = $('#MerchantName').val();
+            if (PosSn == '') {
+                layer.msg('请输入机具SN');
+            }
+            else if (MerchantNo == '') {
+                layer.msg('请输入商户编号');
+            }
+            else if (MerchantName == '') {
+                layer.msg('请输入商户姓名');
+            }
+            else {
+                var index = layer.confirm('确定要关联吗?', function (index) {
+                    var indexs = layer.load(1, {
+                        shade: [0.5, '#000']
+                    });
+                    var userdata = $("#confirmFrm").serialize();
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/SysTools/RelationPosAndMerchantDo?r=" + Math.random(1),
+                        data: userdata,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index); //关闭弹层
+                            if (data == "success") {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg('关联成功', {
+                                    time: 1000
+                                }, function () {
+                                    window.location.reload();
+                                });
+                            } else {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+
+
+        //编辑器
+        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>

+ 257 - 0
Areas/Admin/Views/MainServer/SysTools/RestoreStatus.cshtml

@@ -0,0 +1,257 @@
+@{
+    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">提现订单号</label>
+                                    <div class="layui-input-block">
+                                        <textarea class="layui-textarea" lay-verify="required|" name="OrderNo" id="OrderNo"
+                                            placeholder="请输入提现订单号,多个订单号用回车隔开"></textarea>
+                                    </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 OrderNo = $('#OrderNo').val();
+            if (OrderNo == '') {
+                layer.msg('请输入提现订单号,多个订单号用回车隔开');
+            }
+            else {
+                var index = layer.confirm('确定要还原提现订单状态吗?', function (index) {
+                    var indexs = layer.load(1, {
+                        shade: [0.5, '#000']
+                    });
+                    var userdata = $("#confirmFrm").serialize();
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/SysTools/RestoreStatusDo?r=" + Math.random(1),
+                        data: userdata,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index); //关闭弹层}
+                            if (data == "success") {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg('还原成功', {
+                                    time: 1000
+                                }, function () {
+                                    window.location.reload();
+                                });
+                            } else if (data.indexOf("Warning") == 0) {
+                                layer.close(indexs); //关闭弹层
+                                var datalist = data.split('|');
+                                layer.alert(datalist[1], { time: 20000 }, function () {
+                                    window.location.reload();
+                                });
+                            } else {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+
+
+        //编辑器
+        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>

+ 260 - 0
Areas/Admin/Views/MainServer/SysTools/SetPosFee.cshtml

@@ -0,0 +1,260 @@
+@{
+    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-block">
+                                        <textarea class="layui-textarea" lay-verify="required|" name="PosSn" id="PosSn"
+                                            placeholder="请输入机具SN,多个SN用回车隔开"></textarea>
+                                    </div>
+                                </div>
+                                <div class="layui-form-item">
+                                    <label class="layui-form-label">费率类</label>
+                                    <div class="layui-input-inline">
+                                        <select id="FeeType" name="FeeType" lay-search="" lay-filter="FeeType">
+                                            <option value="0" selected="selected">0.6</option>
+                                            <option value="1">0.63</option>
+                                        </select>
+                                    </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 PosSn = $('#PosSn').val();
+            if (PosSn == '') {
+                layer.msg('请输入机具SN,多个SN用回车隔开');
+            }
+            else {
+                var index = layer.confirm('确定要设置该机具的费率吗?', function (index) {
+                    var indexs = layer.load(1, {
+                        shade: [0.5, '#000']
+                    });
+                    var userdata = $("#confirmFrm").serialize();
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/SysTools/SetPosFeeDo?r=" + Math.random(1),
+                        data: userdata,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index); //关闭弹层
+                            if (data == "success") {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg('设置成功', {
+                                    time: 1000
+                                }, function () {
+                                    window.location.reload();
+                                });
+                            } else {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+
+
+        //编辑器
+        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>

+ 251 - 0
Areas/Admin/Views/MainServer/SysTools/SyncMerchantStatus.cshtml

@@ -0,0 +1,251 @@
+@{
+    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 PosSn = $('#PosSn').val();
+            if (PosSn == '') {
+                layer.msg('请输入机具SN');
+            }
+            else {
+                var index = layer.confirm('确定要同步该机具绑定商户的激活状态吗?', function (index) {
+                    var indexs = layer.load(1, {
+                        shade: [0.5, '#000']
+                    });
+                    var userdata = $("#confirmFrm").serialize();
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/SysTools/SyncMerchantStatusDo?r=" + Math.random(1),
+                        data: userdata,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index); //关闭弹层
+                            if (data == "success") {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg('同步成功', {
+                                    time: 1000
+                                }, function () {
+                                    window.location.reload();
+                                });
+                            } else {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+
+
+        //编辑器
+        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>

+ 274 - 0
Areas/Admin/Views/MainServer/SysTools/TransferPos.cshtml

@@ -0,0 +1,274 @@
+@{
+    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 class="layui-form-item">
+                                    <label class="layui-form-label">来源创客编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="FromMakerCode" name="FromMakerCode"
+                                            maxlength="50" 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="ToMakerCode" name="ToMakerCode"
+                                            maxlength="50" lay-verify="required|" autocomplete="off"
+                                            placeholder="请输入划拨创客编号">
+                                    </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 PosSn = $('#PosSn').val();
+            var FromMakerCode = $('#FromMakerCode').val();
+            var ToMakerCode = $('#ToMakerCode').val();
+            if (PosSn == '') {
+                layer.msg('请输入机具SN');
+            }
+            else if (FromMakerCode == '') {
+                layer.msg('请输入来源创客编号');
+            }
+            else if (ToMakerCode == '') {
+                layer.msg('请输入划拨创客编号');
+            }
+            else {
+                var index = layer.confirm('确定要划拨吗?', function (index) {
+                    var index = layer.load(1, {
+                        shade: [0.5, '#000']
+                    });
+                    var userdata = $("#confirmFrm").serialize();
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/SysTools/TransferPosDo?r=" + Math.random(1),
+                        data: userdata,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index); //关闭弹层
+                            if (data == "success") {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg('划拨成功', {
+                                    time: 1000
+                                }, function () {
+                                    window.location.reload();
+                                });
+                            } else {
+                                layer.close(indexs); //关闭弹层
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+
+
+        //编辑器
+        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>

+ 2 - 1
Areas/Admin/Views/MainServer/TradeDaySummary/Index.cshtml

@@ -97,7 +97,8 @@
 
             <div class="layui-card-body">
                 <blockquote class="layui-elem-quote layui-text">
-                    扶持期直营商户交易总额(元):<span style="color: #f00;" id="HelpDirectTradeAmt">0.00</span> | 扶持期非直营商户交易总额(元):<span style="color: #f00;" id="HelpNonDirectTradeAmt">0.00</span> | 非扶持期直营商户交易总额(元):<span style="color: #f00;" id="NotHelpDirectTradeAmt">0.00</span> | 非扶持期非直营商户交易总额(元):<span style="color: #f00;" id="NotHelpNonDirectTradeAmt">0.00</span>
+                    扶持期直营商户交易总额(元):<span style="color: #f00;" id="HelpDirectTradeAmt">0.00</span> | 扶持期非直营商户交易总额(元):<span style="color: #f00;" id="ProfitDirectTradeAmt">0.00</span> | 盈利期非直营商户交易总额(元):<span style="color: #f00;" id="HelpNonDirectTradeAmt">0.00</span><br />
+                    非扶持期直营商户交易总额(元):<span style="color: #f00;" id="NotHelpDirectTradeAmt">0.00</span> | 非扶持期非直营商户交易总额(元):<span style="color: #f00;" id="ProfitNonDirectTradeAmt">0.00</span> | 盈利期期非直营商户交易总额(元):<span style="color: #f00;" id="NotHelpNonDirectTradeAmt">0.00</span>
                 </blockquote>
                 <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
                 <script type="text/html" id="table-list-tools">

+ 1 - 3
Areas/Admin/Views/MainServer/UserCashRecord/Index.cshtml

@@ -139,9 +139,7 @@
 
             <div class="layui-card-body">
                 <blockquote class="layui-elem-quote layui-text">
-                    待处理总金额(元):<span style="color: #f00;" id="WaitAmount">0.00</span> | 提现成功总金额(元):<span
-                        style="color: #f00;" id="SuccessAmount">0.00</span> | 提现失败总金额(元):<span style="color: #f00;"
-                        id="FailAmount">0.00</span>
+                    待处理总金额(元):<span style="color: #f00;" id="WaitAmount">0.00</span> | 提现成功总金额(元):<span style="color: #f00;" id="SuccessAmount">0.00</span> | 提现失败总金额(元):<span style="color: #f00;"id="FailAmount">0.00</span> | 税后待处理提现总金额(元):<span style="color: #f00;"id="WaitTaxAmount">0.00</span> | 税后提现成功总金额(元):<span style="color: #f00;"id="SuccessTaxAmount">0.00</span> | 税后提现失败总金额(元):<span style="color: #f00;"id="FailTaxAmount">0.00</span>
                 </blockquote>
                 <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
                 <script type="text/html" id="StatusTpl">

+ 6 - 2
Areas/Admin/Views/MainServer/UserTradeDaySummary/Index.cshtml

@@ -95,12 +95,16 @@
                 <blockquote class="layui-elem-quote layui-text">
                     扶持期直营贷记卡交易:<span style="color: #f00;" id="HelpDirectTradeAmt">0.00</span> | 
                     稳定期直营贷记卡交易:<span style="color: #f00;" id="NotHelpDirectTradeAmt">0.00</span> | 
+                    盈利期直营贷记卡交易<span style="color: #f00;" id="ProfitDirectCreditTradeAmt">0.00</span><br />
                     扶持期直营借记卡交易:<span style="color: #f00;" id="HelpDirectDebitTradeAmt">0.00</span> | 
-                    稳定期直营借记卡交易:<span style="color: #f00;" id="NotHelpDirectDebitTradeAmt">0.00</span><br />
+                    稳定期直营借记卡交易:<span style="color: #f00;" id="NotHelpDirectDebitTradeAmt">0.00</span> | 
+                    盈利期直营借记卡交易<span style="color: #f00;" id="ProfitDirectDebitTradeAmt">0.00</span><br />
                     扶持期非直营贷记卡交易:<span style="color: #f00;" id="HelpNonDirectTradeAmt">0.00</span> | 
                     稳定期非直营贷记卡交易:<span style="color: #f00;" id="NotHelpNonDirectTradeAmt">0.00</span> | 
+                    盈利期非直营贷记卡交易<span style="color: #f00;" id="ProfitNonDirectCreditTradeAmt">0.00</span><br />
                     扶持期非直营借记卡交易:<span style="color: #f00;" id="HelpNonDirectDebitTradeAmt">0.00</span> | 
-                    稳定期非直营借记卡交易:<span style="color: #f00;" id="NotHelpNonDirectDebitTradeAmt">0.00</span>
+                    稳定期非直营借记卡交易:<span style="color: #f00;" id="NotHelpNonDirectDebitTradeAmt">0.00</span> | 
+                    盈利期非直营借记卡交易<span style="color: #f00;" id="ProfitNonDirectDebitTradeAmt">0.00</span>
                 </blockquote>
                 <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
                 <script type="text/html" id="table-list-tools">

+ 117 - 0
Areas/Admin/Views/MainServer/Users/AuthIndex.cshtml

@@ -0,0 +1,117 @@
+@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">
+                    <input class="layui-input" type="hidden" name="ShowFlag" autocomplete="off">
+                    <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" 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>
+
+            <div class="layui-card-body">
+                <div style="padding-bottom: 10px;">
+                    @if (RightInfo.Contains("," + right + "_BatchAuth,"))
+                    {
+                        <button class="layui-btn" data-type="BatchAuth"><i
+                            class="layui-icon layui-icon-edit layuiadmin-button-btn"></i>批量认证</button>
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="imgTpl">
+                    <img style="display: inline-block; width: 50%; height: 100%;" src={{ d.avatar }}>
+                </script>
+                <script type="text/html" id="table-list-tools">
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="Auth"><i class="layui-icon layui-icon-edit"></i>认证</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/AuthUsers_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+    </script>
+</body>
+
+</html>

+ 4 - 0
Areas/Admin/Views/MainServer/Users/Children.cshtml

@@ -97,6 +97,8 @@
                     </br>
                     刷卡交易总额(稳)(元):<span style="color: #f00;" id="TotalAmtwd">0.00</span> | 贷记卡交易额(稳)(元):<span style="color: #f00;" id="DAmtwd">0.00</span> | 借记卡非封顶交易额(稳)(元):<span style="color: #f00;" id="JAmtwd">0.00</span> | 借记卡封顶交易额(稳)(元):<span style="color: #f00;" id="JfAmtwd">0.00</span> | 借记卡交易笔数(稳)(元):<span style="color: #f00;" id="JCountwd">0.00</span> | 云闪付小额交易额(稳)(元):<span style="color: #f00;" id="YAmtwd">0.00</span>
                     </br>
+                    刷卡交易总额(盈)(元):<span style="color: #f00;" id="TotalAmtyl">0.00</span> | 贷记卡交易额(盈)(元):<span style="color: #f00;" id="DAmtyl">0.00</span> | 借记卡非封顶交易额(盈)(元):<span style="color: #f00;" id="JAmtyl">0.00</span> | 借记卡封顶交易额(盈)(元):<span style="color: #f00;" id="JfAmtyl">0.00</span> | 借记卡交易笔数(盈)(元):<span style="color: #f00;" id="JCountyl">0.00</span> | 云闪付小额交易额(盈)(元):<span style="color: #f00;" id="YAmtyl">0.00</span>
+                    </br>
                     个人机具绑定总数:<span style="color: #f00;" id="PBCount">0</span> | 个人机具激活总数:<span style="color: #f00;" id="PACount">0</span> 
                     </br>
                     团队交易额:
@@ -105,6 +107,8 @@
                     </br>
                     刷卡交易总额(稳)(元):<span style="color: #f00;" id="TotalAmtwd1">0.00</span> | 贷记卡交易额(稳)(元):<span style="color: #f00;" id="DAmtwd1">0.00</span> | 借记卡非封顶交易额(稳)(元):<span style="color: #f00;" id="JAmtwd1">0.00</span> | 借记卡封顶交易额(稳)(元):<span style="color: #f00;" id="JfAmtwd1">0.00</span> | 借记卡交易笔数(稳)(元):<span style="color: #f00;" id="JCountwd1">0.00</span> | 云闪付小额交易额(稳)(元):<span style="color: #f00;" id="YAmtwd1">0.00</span>
                     </br>
+                    刷卡交易总额(盈)(元):<span style="color: #f00;" id="TotalAmtyl1">0.00</span> | 贷记卡交易额(盈)(元):<span style="color: #f00;" id="DAmtyl1">0.00</span> | 借记卡非封顶交易额(盈)(元):<span style="color: #f00;" id="JAmtyl1">0.00</span> | 借记卡封顶交易额(盈)(元):<span style="color: #f00;" id="JfAmtyl1">0.00</span> | 借记卡交易笔数(盈)(元):<span style="color: #f00;" id="JCountyl1">0.00</span> | 云闪付小额交易额(盈)(元):<span style="color: #f00;" id="YAmtyl1">0.00</span>
+                    </br>
                     团队机具绑定总数:<span style="color: #f00;" id="TBCount">0</span> | 团队机具激活总数:<span style="color: #f00;" id="TACount">0</span> 
                 
                 </blockquote>

+ 203 - 0
Areas/Admin/Views/OperateServer/PosCouponsLeader/Add.cshtml

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

+ 216 - 0
Areas/Admin/Views/OperateServer/PosCouponsLeader/BatchCancle.cshtml

@@ -0,0 +1,216 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>取消关联</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <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">盟主编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MakerCode" name="MakerCode"
+                                            maxlength="50" lay-verify="required|" 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>
+        </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>
+
+
+        //编辑器
+        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>

+ 216 - 0
Areas/Admin/Views/OperateServer/PosCouponsLeader/BatchSetting.cshtml

@@ -0,0 +1,216 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>关联分仓</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <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">盟主编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MakerCode" name="MakerCode"
+                                            maxlength="50" lay-verify="required|" 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>
+        </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>
+
+
+        //编辑器
+        KindEditor.ready(function (K) {
+
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+
+            //日期
+
+
+            //上传文件
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 205 - 0
Areas/Admin/Views/OperateServer/PosCouponsLeader/Edit.cshtml

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

+ 185 - 0
Areas/Admin/Views/OperateServer/PosCouponsLeader/Index.cshtml

@@ -0,0 +1,185 @@
+@{
+    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" readonly name="UseDateData" id="UseDate"
+                                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="UserIdMakerCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">盟主编号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="LeaderIdMakerCode" 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="ExchangeCode" id="ExchangeCode"
+                                autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">机具券类型</label>
+                        <div class="layui-input-inline">
+                            <select id="TypeSelect" name="TypeSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="1">电签</option>
+                                <option value="2">大POS</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否使用</label>
+                        <div class="layui-input-inline">
+                            <select id="ChangeKindSelect" name="IsUseSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">否</option>
+                                <option value="1">是</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否锁定</label>
+                        <div class="layui-input-inline">
+                            <select id="ChangeKindSelect" name="IsLockSelect" 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 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 + "_batchset,"))
+                    {
+                        <button class=" layui-btn layui-btn-danger" data-type="BatchSetting"><i
+                            class="layui-icon layui-icon-edit layuiadmin-button-btn"></i>设置盟主券</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_batchcancle,"))
+                    {
+                        <button class=" layui-btn layui-btn-danger" data-type="BatchCancle"><i
+                            class="layui-icon layui-icon-edit layuiadmin-button-btn"></i>取消盟主券</button>
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                </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_operate/PosCoupons_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 159 - 0
Areas/Admin/Views/OperateServer/PosCouponsLeader/SJQ.cshtml

@@ -0,0 +1,159 @@
+@{
+    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" readonly name="UseDateData" id="UseDate"
+                                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="UserIdMakerCode" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">兑换码</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="ExchangeCode" id="ExchangeCode"
+                                autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否使用</label>
+                        <div class="layui-input-inline">
+                            <select id="ChangeKindSelect" name="IsUseSelect" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">否</option>
+                                <option value="1">是</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">是否锁定</label>
+                        <div class="layui-input-inline">
+                            <select id="ChangeKindSelect" name="IsLockSelect" 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 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>
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                </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/PosCouponsSjq_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 356 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/Add.cshtml

@@ -0,0 +1,356 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>仓库(增加)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+    <style>
+        .layui-form-label{
+            width: 135px !important;
+        }
+        .layui-form-item .layui-input-block{
+            margin-left: 165px !important;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库名称</label>
+                            <div class="layui-input-inline">
+                                <input class="layui-input" type="text" id="StoreName" name="StoreName" maxlength="32" lay-verify="required|" autocomplete="off"
+                                    placeholder="请输入仓库名称">
+                            </div>
+                        </div>
+                        @{Dictionary<string, string> KqProductBrandDic = new MySystem.DictionaryClass().getKqProductBrandDic();}
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*产品类型</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="hidden" id="BrandId" name="BrandId" value="" lay-verify="required|" />
+                                <div id="BrandIdTransfer" class="demo-transfer"></div>
+                                @{string KqProductBrandJson = "[";}
+                                @foreach (string key in KqProductBrandDic.Keys)
+                                {
+                                    KqProductBrandJson += "{\"value\": \"" + key + "\", \"title\": \"" + KqProductBrandDic[key] + "\" },";
+                                }
+                                @{KqProductBrandJson = KqProductBrandJson.TrimEnd(','); KqProductBrandJson += "]";}
+                            </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="ManageMakerCode" name="ManageMakerCode" maxlength="30" 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="ManageRealName" name="ManageRealName" 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="MakerCode" name="MakerCode" maxlength="30"  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="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
+                                    <option value="">请选择</option>
+                                    <option value="0">分仓</option>
+                                    <option value="1">总仓</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="ManagerEmail" name="ManagerEmail" maxlength="32" lay-verify="required|email|" 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="ManageMobile" name="ManageMobile" maxlength="11" lay-verify="required|phone|" 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="LimitTopUserId" name="LimitTopUserId" maxlength="100" lay-verify="" autocomplete="off" placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库所属地区</label>
+                            <input type="hidden" id="Areas" name="Areas" />
+                            <div class="layui-input-inline">
+                                <select id="AreasProvince" lay-search="" lay-filter="AreasProvince" lay-verify="required|">
+                                    <option value="">省</option>
+                                </select>
+                            </div>
+                            <div class="layui-input-inline">
+                                <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
+                                    <option value="">市</option>
+                                </select>
+                            </div>
+                            <div class="layui-input-inline">
+                                <select id="AreasArea" lay-search="" lay-filter="AreasArea">
+                                    <option value="">县/区</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库地址</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="Address" name="Address" maxlength="128" 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="128"
+                                    lay-verify="" placeholder="请输入备注"></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>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            transfer.render({
+            elem: '#BrandIdTransfer'
+            , data: @Html.Raw(KqProductBrandJson)
+            , title: ['待选项', '选中项']
+
+            , showSearch: true
+            , onchange: function (obj, index) {
+            if (index == 0) {
+            var source = $("#BrandId").val();
+            $.each(obj, function (index, value) {
+            var val = obj[index].value;
+            if (source != "") {
+            source += "," + val;
+            } else {
+            source += val;
+            }
+            });
+            $("#BrandId").val(source);
+            } else if (index == 1) {
+            var source = "," + $("#BrandId").val() + ",";
+            $.each(obj, function (index, value) {
+            var val = obj[index].value;
+            source = source.replace("," + val + ",", ",");
+            });
+            if (source != "") {
+            if (source == ",") {
+            source = "";
+            } else {
+            source = source.substring(1, source.length - 1);
+            }
+            }
+            $("#BrandId").val(source);
+            }
+            }
+            });
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            form.on('select(AreasProvince)', function (data) {
+            AreasProvinceSelected("Areas", "", form, data.value);
+            });
+            form.on('select(AreasCity)', function (data) {
+            AreasCitySelected("Areas", "", form, data.value)
+            });
+            form.on('select(AreasArea)', function (data) {
+            AreasAreaSelected("Areas", form)
+            });
+            setTimeout(function () {
+            AreasProvinceInit("Areas", "", form);
+            }, 1000);
+
+        })
+
+    </script>
+</body>
+</html>

+ 216 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/BatchCancle.cshtml

@@ -0,0 +1,216 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>取消关联</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <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">运营创客编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MakerCode" name="MakerCode"
+                                            maxlength="50" lay-verify="required|" 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>
+        </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>
+
+
+        //编辑器
+        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>

+ 216 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/BatchSetting.cshtml

@@ -0,0 +1,216 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+
+}
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>关联分仓</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <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">运营创客编号</label>
+                                    <div class="layui-input-inline">
+                                        <input class="layui-input" type="text" id="MakerCode" name="MakerCode"
+                                            maxlength="50" lay-verify="required|" 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>
+        </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>
+
+
+        //编辑器
+        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>

+ 342 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/Edit.cshtml

@@ -0,0 +1,342 @@
+@using MySystem.Models;
+@{StoreHouse editData = ViewBag.data as StoreHouse;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>仓库(修改)</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+    <style>
+        .layui-form-label{
+            width: 135px !important;
+        }
+        .layui-form-item .layui-input-block{
+            margin-left: 165px !important;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库名称</label>
+                            <div class="layui-input-inline">
+                                <input class="layui-input" type="text" id="StoreName" name="StoreName"
+                                    value="@editData.StoreName" maxlength="32" 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="Status" name="Status" lay-search="" lay-verify="required|">
+                                    <option value="">请选择</option>
+                                    <option value="1">正常</option>
+                                    <option value="0">停用</option>
+                                </select>
+                                <script>
+                                    $("#Status").val("@editData.Status");
+                                </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="ManageMakerCode" name="ManageMakerCode"
+                                    value="@ViewBag.ManageMakerCode" maxlength="30" 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" readonly id="ManageRealName" name="ManageRealName"
+                                    value="@ViewBag.ManageRealName" 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="MakerCode" name="MakerCode"
+                                    value="@ViewBag.MakerCode" maxlength="30" lay-verify="" autocomplete="off"
+                                    placeholder="请输入仓库归属创客编号(操作员)">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库归属类型</label>
+                            <div class="layui-input-inline">
+                                <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
+                                    <option value="">请选择</option>
+                                    <option value="0">分仓</option>
+                                    <option value="1">总仓</option>
+                                </select>
+                                <script>
+                                    $("#StoreKind").val("@editData.StoreKind");
+                                </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="ManagerEmail" name="ManagerEmail"
+                                    value="@editData.ManagerEmail" maxlength="32" lay-verify="required|email|"
+                                    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="ManageMobile" name="ManageMobile"
+                                    value="@editData.ManageMobile" maxlength="11" lay-verify="required|phone|"
+                                    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="LimitTopUserId" name="LimitTopUserId"
+                                    value="@editData.LimitTopUserId" maxlength="100" lay-verify="" autocomplete="off"
+                                    placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库所属地区</label>
+                            <input type="hidden" id="Areas" name="Areas" value="@editData.Areas" />
+                            <div class="layui-input-inline">
+                                <select id="AreasProvince" lay-search="" lay-filter="AreasProvince" lay-verify="required|">
+                                    <option value="">省</option>
+                                </select>
+                            </div>
+                            <div class="layui-input-inline">
+                                <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
+                                    <option value="">市</option>
+                                </select>
+                            </div>
+                            <div class="layui-input-inline">
+                                <select id="AreasArea" lay-search="" lay-filter="AreasArea">
+                                    <option value="">县/区</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库地址</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="Address" name="Address"
+                                    value="@editData.Address" maxlength="128" 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="128"
+                                    lay-verify="" placeholder="请输入备注">@editData.Remark</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>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            form.on('select(AreasProvince)', function (data) {
+AreasProvinceSelected("Areas", "@editData.Areas", form, data.value);
+});
+form.on('select(AreasCity)', function (data) {
+AreasCitySelected("Areas", "@editData.Areas", form, data.value)
+});
+form.on('select(AreasArea)', function (data) {
+AreasAreaSelected("Areas", form)
+});
+setTimeout(function () {
+AreasProvinceInit("Areas", "@(Html.Raw(editData.Areas))", form);
+AreasProvinceSelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasProvince").val());
+AreasCitySelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasCity").val());
+AreasAreaSelected("Areas", form);
+}, 1000);
+
+        })
+
+    </script>
+</body>
+</html>

+ 355 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/Edits.cshtml

@@ -0,0 +1,355 @@
+@using MySystem.Models;
+@{StoreHouse editData = ViewBag.data as StoreHouse;}
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    
+}
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>一键新建仓库</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
+    <script src="/admin/js/jquery-1.10.1.min.js"></script>
+    <script src="/admin/js/LAreaData2.js"></script>
+    <style>
+        .layui-form-label{
+            width: 135px !important;
+        }
+        .layui-form-item .layui-input-block{
+            margin-left: 165px !important;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="layui-form" lay-filter="layuiadmin-form-useradmin" id="layuiadmin-form-useradmin">
+        <input type="hidden" name="Id" value="@editData.Id" />
+        
+        <div class="layui-card">
+          <div class="layui-card-body">
+            <div class="layui-tab" lay-filter="mytabbar">
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库名称</label>
+                            <div class="layui-input-inline">
+                                <input class="layui-input" type="text" id="StoreName" name="StoreName"
+                                    value="@editData.StoreName" maxlength="32" lay-verify="required|" autocomplete="off"
+                                    placeholder="请输入仓库名称">
+                            </div>
+                        </div>
+                        @{Dictionary<string, string> KqProductsDic = new MySystem.DictionaryClass().getKqProductBrandDic();}
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">产品类型</label>
+                            <div class="layui-input-inline">
+                                <select id="BrandId" name="BrandId" lay-search="">
+                                    <option value="">全部...</option>
+                                    @foreach (string key in KqProductsDic.Keys)
+                                    {
+                                    <option value="@key" @(editData.BrandId.ToString() == key ? "selected" : "")>@KqProductsDic[key]</option>
+                                    }
+                                </select>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库状态</label>
+                            <div class="layui-input-inline">
+                                <select id="Status" name="Status" lay-search="" lay-verify="required|">
+                                    <option value="">请选择</option>
+                                    <option value="1">正常</option>
+                                    <option value="0">停用</option>
+                                </select>
+                                <script>
+                                    $("#Status").val("@editData.Status");
+                                </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="ManageMakerCode" name="ManageMakerCode"
+                                    value="@ViewBag.ManageMakerCode" maxlength="30" 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" readonly id="ManageRealName" name="ManageRealName"
+                                    value="@ViewBag.ManageRealName" 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="MakerCode" name="MakerCode"
+                                    value="@ViewBag.MakerCode" maxlength="30" lay-verify="" autocomplete="off"
+                                    placeholder="请输入仓库归属创客编号(操作员)">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库归属类型</label>
+                            <div class="layui-input-inline">
+                                <select id="StoreKind" name="StoreKind" lay-search="" lay-verify="required|">
+                                    <option value="">请选择</option>
+                                    <option value="0">分仓</option>
+                                    <option value="1">总仓</option>
+                                </select>
+                                <script>
+                                    $("#StoreKind").val("@editData.StoreKind");
+                                </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="ManagerEmail" name="ManagerEmail"
+                                    value="@editData.ManagerEmail" maxlength="32" lay-verify="required|email|"
+                                    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="ManageMobile" name="ManageMobile"
+                                    value="@editData.ManageMobile" maxlength="11" lay-verify="required|phone|"
+                                    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="LimitTopUserId" name="LimitTopUserId"
+                                    value="@editData.LimitTopUserId" maxlength="100" lay-verify="" autocomplete="off"
+                                    placeholder="请输入特殊团队仓库专属-限制创客编号(多个用,隔开)">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库所属地区</label>
+                            <input type="hidden" id="Areas" name="Areas" value="@editData.Areas" />
+                            <div class="layui-input-inline">
+                                <select id="AreasProvince" lay-search="" lay-filter="AreasProvince" lay-verify="required|">
+                                    <option value="">省</option>
+                                </select>
+                            </div>
+                            <div class="layui-input-inline">
+                                <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
+                                    <option value="">市</option>
+                                </select>
+                            </div>
+                            <div class="layui-input-inline">
+                                <select id="AreasArea" lay-search="" lay-filter="AreasArea">
+                                    <option value="">县/区</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">*仓库地址</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="Address" name="Address"
+                                    value="@editData.Address" maxlength="128" 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="128"
+                                    lay-verify="" placeholder="请输入备注">@editData.Remark</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>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            form.on('select(AreasProvince)', function (data) {
+AreasProvinceSelected("Areas", "@editData.Areas", form, data.value);
+});
+form.on('select(AreasCity)', function (data) {
+AreasCitySelected("Areas", "@editData.Areas", form, data.value)
+});
+form.on('select(AreasArea)', function (data) {
+AreasAreaSelected("Areas", form)
+});
+setTimeout(function () {
+AreasProvinceInit("Areas", "@(Html.Raw(editData.Areas))", form);
+AreasProvinceSelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasProvince").val());
+AreasCitySelected("Areas", "@(Html.Raw(editData.Areas))", form, $("#AreasCity").val());
+AreasAreaSelected("Areas", form);
+}, 1000);
+
+        })
+
+    </script>
+</body>
+</html>

+ 144 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/Import.cshtml

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

+ 177 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/Index.cshtml

@@ -0,0 +1,177 @@
+@{
+    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: 128px !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">
+                <input class="layui-input" type="hidden" name="ShowFlag" autocomplete="off">
+                <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="StoreNo" 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="OpCode" 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" 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 + "_export,"))
+                    {
+                        <button class="layui-btn" data-type="ExportExcel"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+                    }
+                    @* @if (RightInfo.Contains("," + right + "_import1,") || RightInfo.Contains("," + right + "_import,"))
+                    {
+                        <button class="layui-btn" data-type="ImportMachine"><i
+                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>机具入库</button>
+                    } *@
+                    @* @if (RightInfo.Contains("," + right + "_import2,") || RightInfo.Contains("," + right + "_import,"))
+                    {
+                        <button class="layui-btn" data-type="ImportChange"><i
+                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>仓库调拨</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_import3,") || RightInfo.Contains("," + right + "_import,"))
+                    {
+                        <button class="layui-btn" data-type="ImportSend"><i
+                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>仓库发货至创客</button>
+
+                    }
+                    @if (RightInfo.Contains("," + right + "_import4,") || RightInfo.Contains("," + right + "_import,"))
+                    {
+                        <button class="layui-btn" data-type="ImportRejectStore"><i
+                            class="layui-icon layui-icon-upload layuiadmin-button-btn"></i>机具驳回仓库</button>
+
+                    }
+                    @if (RightInfo.Contains("," + right + "_sycn,"))
+                    {
+                        <button class="layui-btn" data-type="SycnData"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>同步库存</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_batchset,"))
+                    {
+                        <button class="layui-btn" data-type="BatchSetting"><i
+                            class="layui-icon layui-icon-edit layuiadmin-button-btn"></i>关联分仓</button>
+                    }
+                    @if (RightInfo.Contains("," + right + "_batchcancle,"))
+                    {
+                        <button class="layui-btn" data-type="BatchCancle"><i
+                            class="layui-icon layui-icon-edit 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">
+                </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="ConfirmRejectImport()">立即导入</button>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_operate/StoreHouse_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 99 - 0
Areas/Admin/Views/OperateServer/StoreHouseOperate/Stat.cshtml

@@ -0,0 +1,99 @@
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string MakerCode = ViewBag.MakerCode 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: 128px !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="MakerCode" value="@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" 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="StoreNo" 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="StoreName" 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 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;">
+                    <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>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/layuiadmin/modules_main/StoreHouseStat_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        var MakerCode = '@MakerCode';
+    </script>
+</body>
+</html>

+ 274 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Add.cshtml

@@ -0,0 +1,274 @@
+@{
+    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><li lay-id="8">发货SN</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+@{Dictionary<string, string> KqProductsDic = new MySystem.DictionaryClass().getKqProductsDic();}
+<div class="layui-form-item">
+<label class="layui-form-label">品牌</label>
+<div class="layui-input-inline">
+<select id="BrandId" name="BrandId" lay-search="">
+<option value="">请选择</option>
+@foreach (string key in KqProductsDic.Keys)
+{
+<option value="@key">@KqProductsDic[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="ApplyNo" name="ApplyNo" maxlength="50" 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="ApplyNum" name="ApplyNum" 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="SendNum" name="SendNum" 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="UseAmount" name="UseAmount" 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="SendMode" name="SendMode" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入发货方式">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">快递单号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="ErpCode" name="ErpCode" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入快递单号">
+</div>
+</div>
+@{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>
+<div class="layui-tab-item">
+<div class="layui-form-item layui-form-text">
+<label class="layui-form-label">发货SN数据</label>
+<div class="layui-input-block">
+<textarea class="layui-textarea" id="SendSn" name="SendSn" maxlength="" lay-verify="" placeholder="请输入发货SN数据"></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>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 217 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/AuditSend.cshtml

@@ -0,0 +1,217 @@
+@using MySystem.OpModels;
+@{
+    StoreMachineApply editData = ViewBag.data as StoreMachineApply;
+}
+@{
+    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" />
+        <input type="hidden" name="ExcelData" id="ExcelData" value="" />
+
+        <div class="layui-card">
+            <div class="layui-card-body">
+                <div class="layui-tab" lay-filter="mytabbar">
+                    <div class="layui-tab-content mt20">
+                        <div class="layui-tab-item layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">创客名称</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" readonly id="MakerName" name="MakerName"
+                                        value="@ViewBag.MakerName" maxlength="32" 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" readonly id="ApplyNo" name="ApplyNo"
+                                        value="@editData.ApplyNo" maxlength="32" 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" readonly id="ApplyNum" name="ApplyNum"
+                                        value="@editData.ApplyNum" maxlength="32" 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="SendNum" name="SendNum"
+                                        value="@editData.SendNum" maxlength="32" 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="ErpCode" name="ErpCode"
+                                        value="@editData.ErpCode" maxlength="32" 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="SendMode" name="SendMode"
+                                        value="@editData.SendMode" maxlength="32" 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="Status" name="Status" lay-verify="required|" lay-search="">
+                                        <option value="">请选择</option>
+                                        <option value="0">待审核</option>
+                                        <option value="1">审核通过</option>
+                                        <option value="2">审核不通过</option>
+                                    </select>
+                                    <script>
+                                        $("#Status").val("@editData.Status");
+                                    </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="SeoKeyword" name="SeoKeyword" maxlength="max"
+                                        lay-verify="required|" placeholder="请输入申请描述"></textarea>
+                                </div>
+                            </div>
+                            <div class="layui-form-item"">
+                            <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">
+                                        <a href="/users/批量添加机具SN模版.xlsx">点击下载批量添加机具SN模版</a>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-form-item"">
+                            <label class=" layui-form-label">导入机具SN</label>
+                                <div class=" layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                                        <div class="layui-inline layui-word-aux"></div>
+                                    </div>
+                                    <div class="mt10" id="ExcelPathFile">
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+                <div class="layui-form-item layui-hide">
+                    <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                        value="确认">
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+
+
+        //编辑器
+        KindEditor.ready(function (K) {
+
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        var excel;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util', 'excel'], 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');
+            });
+
+            //excel导入
+            excel = layui.excel;
+            $('#ExcelFile').change(function (e) {
+                var files = e.target.files;
+                excel.importExcel(files, {}, function (data) {
+                    $("#ExcelData").val(JSON.stringify(data[0].Sheet1));
+                });
+            });
+
+            //日期
+
+
+            //上传文件
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 257 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Edit.cshtml

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

+ 188 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Index.cshtml

@@ -0,0 +1,188 @@
+@{
+    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">
+                    @{
+                        Dictionary<string, string> KqProductsDic = new MySystem.DictionaryClass().getKqProductsDic();
+                    }
+                    @* <div class="layui-inline">
+                        <label class="layui-form-label">品牌</label>
+                        <div class="layui-input-inline">
+                            <select id="BrandIdSelect" name="BrandIdSelect" lay-search="">
+                                <option value="">全部...</option>
+                                @foreach (string key in KqProductsDic.Keys)
+                                {
+                                    <option value="@key">@KqProductsDic[key]</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">
+                        <label class="layui-form-label">申请单号</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="ApplyNo" 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="SendMode" 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" 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="OpCode" 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="1">已发货</option>
+                                <option value="2">已驳回</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="Open">开启</button>
+                        <button class="layui-btn" data-type="Close">关闭</button>
+                        <button class="layui-btn" data-type="ExportExcel"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>订单信息</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_audit,"))
+                    {
+                        @("{{# if(d.Status == 0 ) { }}")
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="audit"><i class="layui-icon layui-icon-edit"></i>审核发货</a>
+                        @("{{# } }}")
+                    }
+                    {{# if(d.Status == 0) { }}
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="Close"><i class="layui-icon layui-icon-edit"></i>驳回</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_operate/StoreMachineApply_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 173 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplyOperate/Indexs.cshtml

@@ -0,0 +1,173 @@
+@{
+    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" 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">
+                            <input class="layui-input" type="text" name="ApplyNo" 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="SendMode" 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" 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="OpCode" 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="1">已发货</option>
+                                <option value="2">已驳回</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="Open">开启</button>
+                        <button class="layui-btn" data-type="Close">关闭</button>
+                        <button class="layui-btn" data-type="ExportExcel"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @* @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>订单信息</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_audit,"))
+                    {
+                        @("{{# if(d.Status == 0 ) { }}")
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="audit"><i class="layui-icon layui-icon-edit"></i>审核发货</a>
+                        @("{{# } }}")
+                    }
+                    {{# if(d.Status == 0) { }}
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="Close"><i class="layui-icon layui-icon-edit"></i>驳回</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_operate/StoreMachineApplys_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 274 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/Add.cshtml

@@ -0,0 +1,274 @@
+@{
+    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><li lay-id="8">发货SN</li>
+                </ul>
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+@{Dictionary<string, string> KqProductsDic = new MySystem.DictionaryClass().getKqProductsDic();}
+<div class="layui-form-item">
+<label class="layui-form-label">品牌</label>
+<div class="layui-input-inline">
+<select id="BrandId" name="BrandId" lay-search="">
+<option value="">请选择</option>
+@foreach (string key in KqProductsDic.Keys)
+{
+<option value="@key">@KqProductsDic[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="ApplyNo" name="ApplyNo" maxlength="50" 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="ApplyNum" name="ApplyNum" 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="SendNum" name="SendNum" 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="UseAmount" name="UseAmount" 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="SendMode" name="SendMode" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入发货方式">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">快递单号</label>
+<div class="layui-input-inline">
+<input class="layui-input" type="text" id="ErpCode" name="ErpCode" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入快递单号">
+</div>
+</div>
+@{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>
+<div class="layui-tab-item">
+<div class="layui-form-item layui-form-text">
+<label class="layui-form-label">发货SN数据</label>
+<div class="layui-input-block">
+<textarea class="layui-textarea" id="SendSn" name="SendSn" maxlength="" lay-verify="" placeholder="请输入发货SN数据"></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>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 217 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/AuditSend.cshtml

@@ -0,0 +1,217 @@
+@using MySystem.Models;
+@{
+    StoreMachineApply editData = ViewBag.data as StoreMachineApply;
+}
+@{
+    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" />
+        <input type="hidden" name="ExcelData" id="ExcelData" value="" />
+
+        <div class="layui-card">
+            <div class="layui-card-body">
+                <div class="layui-tab" lay-filter="mytabbar">
+                    <div class="layui-tab-content mt20">
+                        <div class="layui-tab-item layui-show">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">创客名称</label>
+                                <div class="layui-input-inline">
+                                    <input class="layui-input" type="text" readonly id="MakerName" name="MakerName"
+                                        value="@ViewBag.MakerName" maxlength="32" 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" readonly id="ApplyNo" name="ApplyNo"
+                                        value="@editData.ApplyNo" maxlength="32" 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" readonly id="ApplyNum" name="ApplyNum"
+                                        value="@editData.ApplyNum" maxlength="32" 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="SendNum" name="SendNum"
+                                        value="@editData.SendNum" maxlength="32" 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="ErpCode" name="ErpCode"
+                                        value="@editData.ErpCode" maxlength="32" 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="SendMode" name="SendMode"
+                                        value="@editData.SendMode" maxlength="32" 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="Status" name="Status" lay-verify="required|" lay-search="">
+                                        <option value="">请选择</option>
+                                        <option value="0">待审核</option>
+                                        <option value="1">审核通过</option>
+                                        <option value="2">审核不通过</option>
+                                    </select>
+                                    <script>
+                                        $("#Status").val("@editData.Status");
+                                    </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="SeoKeyword" name="SeoKeyword" maxlength="max"
+                                        lay-verify="required|" placeholder="请输入申请描述"></textarea>
+                                </div>
+                            </div>
+                            <div class="layui-form-item"">
+                            <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">
+                                        <a href="/users/批量添加机具SN模版.xlsx">点击下载批量添加机具SN模版</a>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-form-item"">
+                            <label class=" layui-form-label">导入机具SN</label>
+                                <div class=" layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="file" id="ExcelFile" name="ExcelFile" value="">
+                                        <div class="layui-inline layui-word-aux"></div>
+                                    </div>
+                                    <div class="mt10" id="ExcelPathFile">
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                    </div>
+                </div>
+                <div class="layui-form-item layui-hide">
+                    <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit"
+                        value="确认">
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+
+
+        //编辑器
+        KindEditor.ready(function (K) {
+
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        var excel;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util', 'excel'], 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');
+            });
+
+            //excel导入
+            excel = layui.excel;
+            $('#ExcelFile').change(function (e) {
+                var files = e.target.files;
+                excel.importExcel(files, {}, function (data) {
+                    $("#ExcelData").val(JSON.stringify(data[0].Sheet1));
+                });
+            });
+
+            //日期
+
+
+            //上传文件
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 257 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/Edit.cshtml

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

+ 173 - 0
Areas/Admin/Views/OperateServer/StoreMachineApplysOperate/Indexs1.cshtml

@@ -0,0 +1,173 @@
+@{
+    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" 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">
+                            <input class="layui-input" type="text" name="ApplyNo" 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="SendMode" 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" 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="OpCode" 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="1">已发货</option>
+                                <option value="2">已驳回</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="Open">开启</button>
+                        <button class="layui-btn" data-type="Close">关闭</button>
+                        <button class="layui-btn" data-type="ExportExcel"><i
+                            class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>订单信息</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_audit,"))
+                    {
+                        @("{{# if(d.Status == 0 ) { }}")
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="audit"><i class="layui-icon layui-icon-edit"></i>审核发货</a>
+                        @("{{# } }}")
+                    }
+                    {{# if(d.Status == 0) { }}
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="Close"><i class="layui-icon layui-icon-edit"></i>驳回</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_operate/StoreMachineApplys1_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 322 - 0
Areas/Admin/Views/OperateServer/SysAdminOperate/Add.cshtml

@@ -0,0 +1,322 @@
+@{
+    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="RealName" name="RealName" maxlength="50"
+                                        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="MakerCode" name="MakerCode"
+                                        maxlength="50" 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="MakerMobile" name="MakerMobile"
+                                        maxlength="50" 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="TotalAmt" name="TotalAmt" maxlength="50"
+                                        lay-verify="required|" autocomplete="off" placeholder="请输入初始额度">
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">附件</label>
+                                <div class="layui-input-block">
+                                    <div class="layui-upload">
+                                        <input type="hidden" id="FilePath" name="FilePath" value=""
+                                            lay-verify="required|">
+                                        <button class="layui-btn" type="button" id="FilePathBtn">选择文件</button>
+                                        <div class="layui-inline layui-word-aux">
+                                            @(new MySystem.PublicFunction().GetUploadHint("SysAdminFilePath"))</div>
+                                    </div>
+                                    <div style="margin-top:10px;" id="FilePathFile">
+                                    </div>
+                                    <div style="width: 50%; margin-top:20px; display:none;" id="FilePathProgressBar">
+                                        <div class="layui-progress" lay-showpercent="true"
+                                            lay-filter="FilePathProgress">
+                                            <div class="layui-progress-bar" lay-percent="0%"></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库所属地区</label>
+                                <input type="hidden" id="Areas" name="Areas" />
+                                <div class="layui-input-inline">
+                                    <select id="AreasProvince" lay-search="" lay-filter="AreasProvince"
+                                        lay-verify="required|">
+                                        <option value="">省</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasCity" lay-search="" lay-filter="AreasCity" lay-verify="required|">
+                                        <option value="">市</option>
+                                    </select>
+                                </div>
+                                <div class="layui-input-inline">
+                                    <select id="AreasArea" lay-search="" lay-filter="AreasArea">
+                                        <option value="">县/区</option>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">*仓库地址</label>
+                                <div class="layui-input-block">
+                                    <input class="layui-input" type="text" id="Address" name="Address" maxlength="128"
+                                        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="AdminName" name="AdminName"
+                                        maxlength="50" 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="password" id="Password" name="Password"
+                                        lay-verify="required|" 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?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+
+
+        //编辑器
+        KindEditor.ready(function (K) {
+
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+
+            //日期
+
+
+            //上传文件
+            WebUploadJs('FilePathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminFilePath"))), function (filename) {
+                $('#FilePathFile').html(filename + '<a style="margin-left:20px;text-decoration:underline;color:cornflowerblue;" href="' + osshost + filename + '" target="_blank">点击查看附件</a>');
+                $('#FilePath').val(filename);
+                setTimeout(function () {
+                    $("#FilePathProgressBar").css("display", "none");
+                }, 1000);
+            }, function (file) {
+                $("#FilePathProgressBar").css("display", "block");
+                element.progress('FilePathProgress', file.percent + '%');
+            });
+            WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminHeadPhoto"))), function (filename) {
+                $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#HeadPhoto').val(filename);
+            });
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+            form.on('select(AreasProvince)', function (data) {
+            AreasProvinceSelected("Areas", "", form, data.value);
+            });
+            form.on('select(AreasCity)', function (data) {
+            AreasCitySelected("Areas", "", form, data.value)
+            });
+            form.on('select(AreasArea)', function (data) {
+            AreasAreaSelected("Areas", form)
+            });
+            setTimeout(function () {
+            AreasProvinceInit("Areas", "", form);
+            }, 1000);
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 289 - 0
Areas/Admin/Views/OperateServer/SysAdminOperate/Edit.cshtml

@@ -0,0 +1,289 @@
+@using MySystem.OpModels;
+@{
+    SysAdmin editData = ViewBag.data as SysAdmin;
+    UserAccount editDatas = ViewBag.datas as UserAccount;
+}
+@{
+    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-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="RealName" name="RealName" value="@editData.RealName"
+                                            maxlength="50" 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="MakerCode" name="MakerCode" value="@editData.MakerCode"
+                                            maxlength="50" lay-verify="required|" readonly 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="MakerMobile" name="MakerMobile" value="@editData.MakerMobile"
+                                            maxlength="50" lay-verify="required|" readonly 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" readonly id="TotalAmt" name="TotalAmt" value="@editDatas.TotalAmt"
+                                            maxlength="50" lay-verify="required|" readonly autocomplete="off" placeholder="请输入初始额度">
+                                    </div>
+                                </div>
+                                <div class="layui-form-item">
+                                    <label class="layui-form-label">附件</label>
+                                    <div class="layui-input-block">
+                                        <div class="layui-upload">
+                                            <input type="hidden" id="FilePath" name="FilePath" value="@editData.FilePath">
+                                            <button class="layui-btn" type="button" id="FilePathBtn">选择文件</button>
+                                            <div class="layui-inline layui-word-aux">@(new MySystem.PublicFunction().GetUploadHint("SysAdminFilePath"))</div>
+                                        </div>
+                                        <div style="margin-top:10px;" id="FilePathFile">
+                                            @if (!string.IsNullOrEmpty(editData.FilePath))
+                                            {
+                                                @editData.FilePath<a
+                                                style="margin-left:20px;text-decoration:underline;color:cornflowerblue;"
+                                                href="@(MySystem.OssHelper.Instance.SourceHost)@editData.FilePath"
+                                                target="_blank">点击查看附件</a>
+                                            }
+                                        </div>
+                                    </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="AdminName" name="AdminName" value="@editData.AdminName" maxlength="50"
+                                            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="password" id="Password" name="Password" value="@editData.Password" lay-verify="required|"
+                                            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?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+        <script src="/other/mybjq/kindeditor-min.js"></script>
+        <script src="/other/mybjq/lang/zh_CN.js"></script>
+        <script>
+
+
+            //编辑器
+            KindEditor.ready(function (K) {
+
+            });
+
+            var ids = "";
+            function getChildren(obj) {
+                $.each(obj, function (index, value) {
+                    var id = obj[index].id;
+                    ids += id + ",";
+                    var children = obj[index].children;
+                    if (children) {
+                        getChildren(children);
+                    }
+                });
+            }
+
+            function AreasProvinceInit(tagId, areasVal, form) {
+                for (var i = 0; i < provs_data.length; i++) {
+                    var sel = "";
+                    if (areasVal.indexOf(provs_data[i].text) > -1) {
+                        sel = " selected=selected";
+                    }
+                    $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+                }
+                form.render();
+            }
+
+            function AreasProvinceSelected(tagId, areasVal, form, value) {
+                $("#" + tagId + "City").html('<option value="">市</option>');
+                var list = citys_data[value];
+                for (var i = 0; i < list.length; i++) {
+                    var sel = "";
+                    if (areasVal.indexOf(list[i].text) > -1) {
+                        sel = " selected=selected";
+                    }
+                    $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+                }
+                $("#" + tagId + "Area").html('<option value="">县/区</option>');
+                form.render();
+                $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+            }
+
+            function AreasCitySelected(tagId, areasVal, form, value) {
+                $("#" + tagId + "Area").html('<option value="">县/区</option>');
+                var list = dists_data[value];
+                for (var i = 0; i < list.length; i++) {
+                    var sel = "";
+                    if (areasVal.indexOf(list[i].text) > -1) {
+                        sel = " selected=selected";
+                    }
+                    $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+                }
+                form.render();
+                $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+            }
+
+            function AreasAreaSelected(tagId, form) {
+                form.render();
+                $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+            }
+            function movePrev(obj, tagId) {
+                $(obj).parent().prev().insertAfter($(obj).parent());
+                checkPics(tagId);
+            }
+            function moveNext(obj, tagId) {
+                $(obj).parent().next().insertBefore($(obj).parent());
+                checkPics(tagId);
+            }
+            function deletePic(obj, tagId) {
+                $(obj).parent().remove();
+                checkPics(tagId);
+            }
+            function checkPics(tagId) {
+                var pics = "";
+                var texts = "";
+                $("#" + tagId + "Image div img").each(function (i) {
+                    pics += $(this).attr("src").replace(osshost, '') + "|";
+                });
+                $("#" + tagId + "Image div input").each(function (i) {
+                    texts += $(this).val() + "|";
+                });
+                if (pics == "") {
+                    $("#" + tagId).val("");
+                } else {
+                    pics = pics.substring(0, pics.length - 1);
+                    texts = texts.substring(0, pics.length - 1);
+                    $("#" + tagId).val(pics + "#cut#" + texts);
+                }
+            }
+            function checkBox(tagId) {
+                var text = "";
+                $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                    text += $(this).val() + ",";
+                });
+                $("#" + tagId).val(text);
+            }
+            function showBigPic(picpath) {
+                parent.layer.open({
+                    type: 1,
+                    title: false,
+                    closeBtn: 0,
+                    shadeClose: true,
+                    area: ['auto', 'auto'],
+                    content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+                });
+            }
+
+            var tree;
+            var element;
+            var upload;
+            layui.config({
+                base: '/layuiadmin/' //静态资源所在路径
+            }).extend({
+                index: 'lib/index' //主入口模块
+            }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+                var $ = layui.$
+                    , form = layui.form
+                    , layer = layui.layer
+                    , layedit = layui.layedit
+                    , laydate = layui.laydate
+                    , croppers = layui.croppers
+                    , transfer = layui.transfer
+                    , util = layui.util;
+                tree = layui.tree;
+                element = layui.element;
+                upload = layui.upload;
+
+                //Hash地址的定位
+                var layid = location.hash.replace(/^#test=/, '');
+                element.tabChange('test', layid);
+                element.on('tab(test)', function (elem) {
+                    location.hash = 'test=' + $(this).attr('lay-id');
+                });
+
+                //日期
+
+
+                //上传文件
+                WebUploadJs('FilePathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminFilePath"))), function (filename) {
+                    $('#FilePathFile').html(filename + '<a style="margin-left:20px;text-decoration:underline;color:cornflowerblue;" href="' + osshost + filename + '" target="_blank">点击查看附件</a>');
+                    $('#FilePath').val(filename);
+                    setTimeout(function () {
+                        $("#FilePathProgressBar").css("display", "none");
+                    }, 1000);
+                }, function (file) {
+                    $("#FilePathProgressBar").css("display", "block");
+                    element.progress('FilePathProgress', file.percent + '%');
+                });
+                WebUploadJs('HeadPhotoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', @(Html.Raw(new MySystem.PublicFunction().GetUploadParam("SysAdminHeadPhoto"))), function (filename) {
+                    $('#HeadPhotoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                    $('#HeadPhoto').val(filename);
+                });
+
+
+                //穿梭框
+
+
+                //TreeView,比如权限管理
+
+
+                //省市区
+
+            })
+
+        </script>
+</body>
+
+</html>

+ 115 - 0
Areas/Admin/Views/OperateServer/SysAdminOperate/EditAmt.cshtml

@@ -0,0 +1,115 @@
+@using MySystem.OpModels;
+@{
+    SysAdmin editData = ViewBag.data as SysAdmin;
+    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">
+            <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" readonly value="@editData.OpCode">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">运营中心名称</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" readonly value="@editData.RealName">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <div class="layui-inline">
+                            <label class="layui-form-label">*操作类别</label>
+                            <div class="layui-input-inline">
+                                <select id="Kind" name="Kind" lay-verify="required|">
+                                    <option value="">请选择</option>
+                                    <option value="1">扣减</option>
+                                    <option value="2">增加</option>
+                                </select>
+                            </div>
+                        </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="OperationAmount" name="OperationAmount" maxlength="20" lay-verify="required|number|" 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="Note" name="Note" lay-verify="required" placeholder="请输入备注"></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>
+    </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>
+        var element;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'layedit', 'laydate', 'element', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , util = layui.util;
+            element = layui.element;
+
+            //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>

+ 115 - 0
Areas/Admin/Views/OperateServer/SysAdminOperate/EditBalance.cshtml

@@ -0,0 +1,115 @@
+@using MySystem.OpModels;
+@{
+    SysAdmin editData = ViewBag.data as SysAdmin;
+    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">
+            <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" readonly value="@editData.OpCode">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">运营中心名称</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" readonly value="@editData.RealName">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <div class="layui-inline">
+                            <label class="layui-form-label">*操作类别</label>
+                            <div class="layui-input-inline">
+                                <select id="Kind" name="Kind" lay-verify="required|">
+                                    <option value="">请选择</option>
+                                    <option value="1">扣减</option>
+                                    <option value="2">增加</option>
+                                </select>
+                            </div>
+                        </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="OperationAmount" name="OperationAmount" maxlength="20" lay-verify="required|number|" 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="Note" name="Note" lay-verify="required" placeholder="请输入备注"></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>
+    </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>
+        var element;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'layedit', 'laydate', 'element', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , util = layui.util;
+            element = layui.element;
+
+            //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>

+ 149 - 0
Areas/Admin/Views/OperateServer/SysAdminOperate/Index.cshtml

@@ -0,0 +1,149 @@
+@{
+    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="AdminName" 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="RealName" 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="CreateDateData"
+                                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="Open">开启</button>
+                        <button class="layui-btn" data-type="Close">关闭</button>
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="imgTpl">
+                    <img style="display: inline-block; width: 50%; height: 100%;" src={{ d.avatar }}>
+                </script>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        @* <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a> *@
+                    }
+                    @if (RightInfo.Contains("," + right + "_EditAmt,"))
+                    {
+                            <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="EditAmt"><i class="layui-icon layui-icon-edit"></i>修改未使用额度</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_EditBalance,"))
+                    {
+                            <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="EditBalance"><i class="layui-icon layui-icon-edit"></i>修改可提现额度</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">excel文件</label>
+                <div class="layui-input-block">
+                    <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_operate/SysAdminOperate_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+
+    </script>
+</body>
+
+</html>

+ 229 - 0
Areas/Admin/Views/OperateServer/SysAdminOperateRole/Add.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">
+        
+        <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-block">
+<input class="layui-input" type="text" id="Name" name="Name" maxlength="50" 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="Details" name="Details" maxlength="max" lay-verify="required|" placeholder="请输入描述"></textarea>
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">权限设置</label>
+<div class="layui-input-block">
+<input type="hidden" id="RightInfo" name="RightInfo" value="" />
+<div id="RightInfoTree" class="demo-tree-more"><div style="padding-top: 8px;">加载中...</div></div>
+</div>
+</div>
+
+</div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            var RightInfoData = @(Html.Raw(new MySystem.PublicFunction().GetRightJson()));
+tree.render({
+elem: '#RightInfoTree'
+, data: RightInfoData
+, showCheckbox: true
+, id: 'RightInfoTreeID'
+});
+
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 236 - 0
Areas/Admin/Views/OperateServer/SysAdminOperateRole/Edit.cshtml

@@ -0,0 +1,236 @@
+@using MySystem.BsModels;
+@{SysAdminRole editData = ViewBag.data as SysAdminRole;}
+@{
+    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-block">
+                                <input class="layui-input" type="text" id="Name" name="Name" value="@editData.Name"
+                                    maxlength="50" 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="Details" name="Details" maxlength="max"
+                                    lay-verify="required|" placeholder="请输入描述">@editData.Details</textarea>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">权限设置</label>
+                            <div class="layui-input-block">
+                                <input type="hidden" id="RightInfo" name="RightInfo" value="@editData.RightInfo" />
+                                <div id="RightInfoTree" class="demo-tree-more">
+                                    <div style="padding-top: 8px;">加载中...</div>
+                                </div>
+                            </div>
+                        </div>
+
+                    </div>
+
+                </div>
+            </div>
+            <div class="layui-form-item layui-hide">
+                <input type="button" lay-submit lay-filter="LAY-list-front-submit" id="LAY-list-front-submit" value="确认">
+            </div>
+          </div>
+        </div>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            var RightInfoData = @(Html.Raw(new MySystem.PublicFunction().GetRightJson()));
+            tree.render({
+                elem: '#RightInfoTree'
+                , data: RightInfoData
+                , showCheckbox: true
+                , id: 'RightInfoTreeID'
+            });
+            tree.setChecked('RightInfoTreeID', ['@(Html.Raw(new MySystem.PublicFunction().TranslateRightString(editData.RightInfo).Replace(",","','")))']);
+
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 98 - 0
Areas/Admin/Views/OperateServer/SysAdminOperateRole/Index.cshtml

@@ -0,0 +1,98 @@
+@{
+    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>
+</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">
+<div class="layui-input-inline">
+<input class="layui-input" type="text" name="Name" placeholder="名称" autocomplete="off">
+</div>
+</div>
+                    <div class="layui-inline">
+                        <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,"))
+                    {
+                    
+                    }
+                </div>
+                
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="imgTpl">
+                    <img style="display: inline-block; width: 50%; height: 100%;" src={{ d.avatar }}>
+                </script>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                </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">excel文件</label>
+                <div class="layui-input-block">
+                    <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_operate/SysAdminRoleOperate_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        
+    </script>
+</body>
+</html>

+ 291 - 0
Areas/Admin/Views/OperateServer/SystemSetOperate/Add.cshtml

@@ -0,0 +1,291 @@
+@{
+    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">
+</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><li lay-id="5">上传</li><li lay-id="18">高级设置</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-block">
+<input class="layui-input" type="text" id="WebUrl" name="WebUrl" maxlength="200" lay-verify="" autocomplete="off" placeholder="请输入网站地址">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">网站名称</label>
+<div class="layui-input-block">
+<input class="layui-input" type="text" id="WebName" name="WebName" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入网站名称">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">首页关键词</label>
+<div class="layui-input-block">
+<input class="layui-input" type="text" id="IndexKeyword" name="IndexKeyword" maxlength="200" lay-verify="" 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="IndexDescription" name="IndexDescription" lay-verify="" placeholder="请输入首页简介"></textarea>
+</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="RightInfo" name="RightInfo" lay-verify="" placeholder="请输入版权信息"></textarea>
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">企业地址</label>
+<div class="layui-input-block">
+<input class="layui-input" type="text" id="Address" name="Address" maxlength="100" lay-verify="" autocomplete="off" placeholder="请输入企业地址">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">联系电话</label>
+<div class="layui-input-block">
+<input class="layui-input" type="text" id="Phone" name="Phone" maxlength="100" lay-verify="" 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="WebStatCode" name="WebStatCode" lay-verify="" placeholder="请输入网站统计代码"></textarea>
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">Logo图片</label>
+<div class="layui-input-block">
+<div class="layui-upload">
+<input type="hidden" id="Logo" name="Logo" value="">
+<button class="layui-btn" type="button" id="LogoBtn">选择图片</button>
+<div class="layui-inline layui-word-aux"></div>
+</div>
+<div class="mt10" id="LogoImage">
+</div>
+</div>
+</div>
+
+</div>
+<div class="layui-tab-item">
+<div class="layui-form-item">
+<label class="layui-form-label">允许上传类型</label>
+<div class="layui-input-block">
+<input class="layui-input" type="text" id="UploadExt" name="UploadExt" maxlength="100" 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="UploadMaxSize" name="UploadMaxSize" maxlength="20" lay-verify="integer;" autocomplete="off" placeholder="请输入允许最大上传">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">自动缩略图</label>
+<div class="layui-input-block">
+<input type="checkbox" id="UploadAutoZoom" name="UploadAutoZoom" value="True" lay-skin="switch" lay-filter="switchTest" title="开关">
+</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="UploadAutoZoomWidth" name="UploadAutoZoomWidth" maxlength="20" lay-verify="required;integer;" 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="UploadAutoZoomHeight" name="UploadAutoZoomHeight" maxlength="20" lay-verify="required;integer;" autocomplete="off" placeholder="请输入自动缩略图高">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">自动水印</label>
+<div class="layui-input-block">
+<input type="checkbox" id="UploadAutoWater" name="UploadAutoWater" value="True" lay-skin="switch" lay-filter="switchTest" title="开关">
+</div>
+</div>
+<div class="layui-form-item">
+<div class="layui-inline">
+<label class="layui-form-label">水印位置</label>
+<div class="layui-input-inline">
+<select id="UploadWaterPosition" name="UploadWaterPosition" lay-search="">
+<option value="">请选择</option>
+</select>
+</div>
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">水印图片</label>
+<div class="layui-input-block">
+<div class="layui-upload">
+<input type="hidden" id="UploadWaterPath" name="UploadWaterPath" value="">
+<button class="layui-btn" type="button" id="UploadWaterPathBtn">选择图片</button>
+<div class="layui-inline layui-word-aux"></div>
+</div>
+<div class="mt10" id="UploadWaterPathImage">
+</div>
+</div>
+</div>
+
+</div>
+<div class="layui-tab-item">
+<div class="layui-form-item">
+<label class="layui-form-label">网页标题</label>
+<div class="layui-input-block">
+<input class="layui-input" type="text" id="SeoTitle" name="SeoTitle" maxlength="50" autocomplete="off" placeholder="请输入网页标题">
+</div>
+</div>
+<div class="layui-form-item">
+<label class="layui-form-label">网页关键字</label>
+<div class="layui-input-block">
+<input class="layui-input" type="text" id="SeoKeyword" name="SeoKeyword" maxlength="50" 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" name="SeoDescription" id="SeoDescription" placeholder="请输入网页描述"></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>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+                    
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function 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") + "|";
+            });
+            $("#" + 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 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;" />'
+            });
+        }
+
+
+        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
+                , element = layui.element
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , upload = layui.upload
+                , transfer = layui.transfer
+                , util = layui.util
+                , tree = layui.tree;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            WebUploadJs('UploadWaterPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {}, {},  function (filename) {
+$('#UploadWaterPathImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+$('#UploadWaterPath').val(filename);
+});
+WebUploadJs('LogoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {}, {},  function (filename) {
+$('#LogoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+$('#Logo').val(filename);
+});
+
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+        })
+
+    </script>
+</body>
+</html>

+ 178 - 0
Areas/Admin/Views/OperateServer/SystemSetOperate/AppStart.cshtml

@@ -0,0 +1,178 @@
+@using MySystem.BsModels;
+@{SystemSet editData = ViewBag.data as SystemSet;}
+@{
+    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>
+</head>
+<body style="background-color:#fff;">
+
+    <div class="layui-form" style="padding: 20px 0 0 0;">
+        <form class="layui-form" id="confirmFrm">
+            <input type="hidden" name="Id" value="@editData.Id" />
+            <div class="layui-card">
+          <div class="layui-card-body">
+        <div class="layui-tab" lay-filter="mytabbar">
+                <div class="layui-tab-content mt20">
+                    <div class="layui-tab-item layui-show">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">App启动图片</label>
+                            <div class="layui-input-block">
+                                <div class="layui-upload">
+                                    <input type="hidden" id="StartAdPhoto" name="StartAdPhoto" value="@editData.StartAdPhoto">
+                                    <button class="layui-btn" type="button" id="StartAdPhotoBtn">选择图片</button>
+                                    <div class="layui-inline layui-word-aux"></div>
+                                </div>
+                                <div class="mt10" id="StartAdPhotoImage">
+                                    @if (!string.IsNullOrEmpty(editData.StartAdPhoto))
+                                    {
+                                        <img src="@editData.StartAdPhoto" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic('@editData.StartAdPhoto')">
+                                    }
+                                </div>
+                            </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>
+        </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/SystemSet/AppStart?r=" + Math.random(1),
+                data: userdata,
+                dataType: "text",
+                success: function (data) {
+                    layer.close(index); //关闭弹层
+                    if (data == "success") {
+                        layer.msg("修改成功");
+                    } else {
+                        layer.msg(data);
+                    }
+                }
+            });
+        }
+
+        //编辑器
+        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 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") + "|";
+            });
+            $("#" + 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 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 upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$;
+            var 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');
+            });
+
+            //日期
+
+
+            //上传文件
+            upload.render({
+                elem: '#StartAdPhotoBtn',
+                url: '/Admin/SystemSet/UploadPhoto',
+                multiple: false,
+                done: function (res) {
+                    $('#StartAdPhotoImage').html('<img src="' + res.obj + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(' + res.obj + ')">')
+                    $('#StartAdPhoto').val(res.obj);
+                }
+            });
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+        })</script>
+</body>
+</html>

+ 350 - 0
Areas/Admin/Views/OperateServer/SystemSetOperate/Edit.cshtml

@@ -0,0 +1,350 @@
+@using MySystem.BsModels;
+@{SystemSet editData = ViewBag.data as SystemSet;}
+@{
+    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>
+</head>
+<body style="background-color:#fff;">
+
+    <div class="layui-form" style="padding: 20px 0 0 0;">
+        <form class="layui-form" id="confirmFrm">
+            <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>
+                    <li lay-id="2">上传</li>
+                    <!-- <li lay-id="3">模板设置</li>
+                    <li lay-id="4">App设置</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-block">
+                                <input class="layui-input" type="text" id="WebUrl" name="WebUrl" value="@editData.WebUrl" maxlength="200" lay-verify="" autocomplete="off" placeholder="请输入网站地址">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">网站名称</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="WebName" name="WebName" value="@editData.WebName" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入网站名称">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">首页关键词</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="IndexKeyword" name="IndexKeyword" value="@editData.IndexKeyword" maxlength="200" lay-verify="" 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="IndexDescription" name="IndexDescription" lay-verify="" placeholder="请输入首页简介">@editData.IndexDescription</textarea>
+                            </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="RightInfo" name="RightInfo" lay-verify="" placeholder="请输入版权信息">@editData.RightInfo</textarea>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">企业地址</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="Address" name="Address" value="@editData.Address" maxlength="100" lay-verify="" autocomplete="off" placeholder="请输入企业地址">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">联系电话</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="Phone" name="Phone" value="@editData.Phone" maxlength="100" lay-verify="" 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="WebStatCode" name="WebStatCode" lay-verify="" placeholder="请输入网站统计代码">@editData.WebStatCode</textarea>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">Logo图片</label>
+                            <div class="layui-input-block">
+                                <div class="layui-upload">
+                                    <input type="hidden" id="Logo" name="Logo" value="@editData.Logo">
+                                    <button class="layui-btn" type="button" id="LogoBtn">选择图片</button>
+                                    <div class="layui-inline layui-word-aux"></div>
+                                </div>
+                                <div class="mt10" id="LogoImage">
+                                    @if (!string.IsNullOrEmpty(editData.Logo))
+                                    {
+                                        <img src="@(MySystem.OssHelper.Instance.SourceHost)@editData.Logo" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic('@(MySystem.OssHelper.Instance.SourceHost)@editData.Logo')">
+                                    }
+                                </div>
+                            </div>
+                        </div>
+
+                    </div>
+                    <div class="layui-tab-item">                        
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">是否上传到OSS</label>
+                            <div class="layui-input-block">
+                                <input type="checkbox" id="UploadOss" name="UploadOss" value="1" @(editData.UploadOss == 1 ? "checked=checked" : "") lay-skin="switch" lay-filter="switchTest" title="开关">
+                            </div>
+                        </div>
+                        <!-- <div class="layui-form-item">
+                            <label class="layui-form-label">允许上传类型</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="UploadExt" name="UploadExt" value="@editData.UploadExt" maxlength="100" 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="UploadMaxSize" name="UploadMaxSize" value="@editData.UploadMaxSize" maxlength="20" lay-verify="integer;" autocomplete="off" placeholder="请输入允许最大上传">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">自动缩略图</label>
+                            <div class="layui-input-block">
+                                <input type="checkbox" id="UploadAutoZoom" name="UploadAutoZoom" value="1" @(editData.UploadAutoZoom == 1 ? "checked=checked" : "") lay-skin="switch" lay-filter="switchTest" title="开关">
+                            </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="UploadAutoZoomWidth" name="UploadAutoZoomWidth" value="@editData.UploadAutoZoomWidth" maxlength="20" lay-verify="required;integer;" 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="UploadAutoZoomHeight" name="UploadAutoZoomHeight" value="@editData.UploadAutoZoomHeight" maxlength="20" lay-verify="required;integer;" 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="UploadAutoZoomQuality" name="UploadAutoZoomQuality" value="@editData.UploadAutoZoomQuality" maxlength="20" lay-verify="required;integer;" autocomplete="off" placeholder="自动缩略图质量">
+                            </div>
+                        </div>
+                        <!-- <div class="layui-form-item">
+                            <label class="layui-form-label">自动水印</label>
+                            <div class="layui-input-block">
+                                <input type="checkbox" id="UploadAutoWater" name="UploadAutoWater" value="1" @(editData.UploadAutoWater == 1 ? "checked=checked" : "") lay-skin="switch" lay-filter="switchTest" title="开关">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <div class="layui-inline">
+                                <label class="layui-form-label">水印位置</label>
+                                <div class="layui-input-inline">
+                                    <select id="UploadWaterPosition" name="UploadWaterPosition" lay-search="">
+                                        <option value="">请选择</option>
+                                    </select>
+                                    <script>$("#UploadWaterPosition").val("@editData.UploadWaterPosition");</script>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">水印图片</label>
+                            <div class="layui-input-block">
+                                <div class="layui-upload">
+                                    <input type="hidden" id="UploadWaterPath" name="UploadWaterPath" value="@editData.UploadWaterPath">
+                                    <button class="layui-btn" type="button" id="UploadWaterPathBtn">选择图片</button>
+                                    <div class="layui-inline layui-word-aux"></div>
+                                </div>
+                                <div class="mt10" id="UploadWaterPathImage">
+                                    @if (!string.IsNullOrEmpty(editData.UploadWaterPath))
+                                    {
+                                        <img src="@(MySystem.OssHelper.Instance.SourceHost)@editData.UploadWaterPath" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic('@(MySystem.OssHelper.Instance.SourceHost)@editData.UploadWaterPath')">
+                                    }
+                                </div>
+                            </div>
+                        </div> -->
+                    </div>
+                    @*<div class="layui-tab-item">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">主题目录</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="TempPath" name="TempPath" value="@editData.TempPath" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入主题目录">
+                            </div>
+                        </div>
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">主题目录(移动)</label>
+                            <div class="layui-input-block">
+                                <input class="layui-input" type="text" id="TempPathM" name="TempPathM" value="@editData.TempPathM" maxlength="50" lay-verify="" autocomplete="off" placeholder="请输入主题目录(移动)">
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-tab-item">
+                        <div class="layui-form-item">
+                            <label class="layui-form-label">App启动图片</label>
+                            <div class="layui-input-block">
+                                <div class="layui-upload">
+                                    <input type="hidden" id="StartAdPhoto" name="StartAdPhoto" value="@editData.StartAdPhoto">
+                                    <button class="layui-btn" type="button" id="StartAdPhotoBtn">选择图片</button>
+                                    <div class="layui-inline layui-word-aux"></div>
+                                </div>
+                                <div class="mt10" id="StartAdPhotoImage">
+                                    @if (!string.IsNullOrEmpty(editData.StartAdPhoto))
+                                    {
+                                        <img src="@editData.StartAdPhoto" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic('@editData.StartAdPhoto')">
+                                    }
+                                </div>
+                            </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>
+        </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/SystemSet/Edit?r=" + Math.random(1),
+                data: userdata,
+                dataType: "text",
+                success: function (data) {
+                    layer.close(index); //关闭弹层
+                    if (data == "success") {
+                        layer.msg("修改成功");
+                    } else {
+                        layer.msg(data);
+                    }
+                }
+            });
+        }
+
+        //编辑器
+        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 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") + "|";
+            });
+            $("#" + 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 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 upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$;
+            var element = layui.element;
+            upload = layui.upload;
+
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+
+            //日期
+
+
+            //上传文件
+            WebUploadJs('UploadWaterPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {}, {},  function (filename) {
+                $('#UploadWaterPathImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#UploadWaterPath').val(filename);
+            });
+            WebUploadJs('LogoBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload/v2', {}, {},  function (filename) {
+                $('#LogoImage').html('<img src="' + osshost + filename + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(\'' + osshost + filename + '\')">')
+                $('#Logo').val(filename);
+            });
+            upload.render({
+                elem: '#StartAdPhotoBtn',
+                url: '/Admin/SystemSet/UploadPhoto',
+                multiple: false,
+                done: function (res) {
+                    $('#StartAdPhotoImage').html('<img src="' + res.obj + '" class="layui-upload-img" style="max-width:85px; max-height:85px;" onclick="showBigPic(' + res.obj + ')">')
+                    $('#StartAdPhoto').val(res.obj);
+                }
+            });
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+        })</script>
+</body>
+</html>

+ 104 - 0
Areas/Admin/Views/OperateServer/SystemSetOperate/Index.cshtml

@@ -0,0 +1,104 @@
+@{
+    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">
+</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">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="WebUrl" placeholder="网站地址" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="WebName" placeholder="网站名称" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <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,"))
+                    {
+
+                    }
+                </div>
+
+                <table id="LAY-list-manage" lay-filter="LAY-list-manage"></table>
+                <script type="text/html" id="imgTpl">
+                    <img style="display: inline-block; width: 50%; height: 100%;" src={{ d.avatar }}>
+                </script>
+                <script type="text/html" id="table-list-tools">
+                    @if (RightInfo.Contains("," + right + "_edit,"))
+                    {
+                        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
+                    }
+                    @if (RightInfo.Contains("," + right + "_delete,"))
+                    {
+                        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
+                    }
+                </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">excel文件</label>
+                <div class="layui-input-block">
+                    <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_operate/SystemSetOperate_Admin.js"></script>
+</body>
+
+</html>

+ 203 - 0
Areas/Admin/Views/OperateServer/UserAccountRecordOperate/Add.cshtml

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

+ 205 - 0
Areas/Admin/Views/OperateServer/UserAccountRecordOperate/Edit.cshtml

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

+ 142 - 0
Areas/Admin/Views/OperateServer/UserAccountRecordOperate/Index.cshtml

@@ -0,0 +1,142 @@
+@using MySystem.Models;
+@{
+    string RightInfo = ViewBag.RightInfo as string;
+    string right = ViewBag.right as string;
+    string UserId = ViewBag.UserId as string;
+    List<Users> TopUsers = ViewBag.TopUsers as List<Users>;
+    List<KqProducts> Brands = ViewBag.Brands as List<KqProducts>;
+    
+}
+<!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">
+                        <label class="layui-form-label">交易类型</label>
+                        <div class="layui-input-inline">
+                            <select id="ChangeType" name="ChangeType" lay-search="">
+                                <option value="">全部...</option>
+                                <option value="0">激活奖励</option>
+                                <option value="1">交易分润</option>
+                                <option value="11">月月红</option>
+                                <option value="2">提现申请</option>
+                                <option value="3">提现代付</option>
+                                <option value="4">提现手续费</option>
+                                <option value="5">提现税点扣除</option>
+                                <option value="6">提现失败,解冻</option>
+                                <option value="61">人工冻结</option>
+                                <option value="62">人工解冻</option>
+                                <option value="63">人工扣减</option>
+                                <option value="64">人工增加</option>
+                                <option value="7">系统扣除</option>
+                                <option value="10">办卡奖励</option>
+                                <option value="20">余额支付</option>
+                                <option value="21">余额退款</option>
+                                <option value="22">余额退款手续费</option>
+                                <option value="30">红包奖励</option>
+                                <option value="31">活动奖励</option>
+                                <option value="40">商户达标返</option>
+                                <option value="50">开机奖励</option>
+                                <option value="60">流量卡分佣</option>
+                                <option value="111">分润补贴</option>
+                                <option value="112">直推奖励</option>
+                                <option value="116">大盟主奖励</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">产品类型</label>
+                        <div class="layui-input-inline">
+                            <select id="ProductType" name="ProductType" lay-search="">
+                                <option value="">全部...</option>
+                                @foreach(KqProducts Brand in Brands)
+                                {
+                                <option value="@Brand.Id">@Brand.Name</option>
+                                }
+                            </select>
+                        </div>
+                    </div>                    
+                    <div class="layui-inline ml50">
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-search">
+                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>查询
+                        </button>
+                        <button class="layui-btn" lay-submit lay-filter="LAY-list-front-searchall">
+                            <i class="layui-icon layui-icon-list layuiadmin-button-btn"></i>全部
+                        </button>
+                        @if (RightInfo.Contains("," + right + "_export,"))
+                        {
+                            <button class="layui-btn" data-type="ExportExcel"><i class="layui-icon layui-icon-export layuiadmin-button-btn"></i>导出</button>
+                        }
+                    </div>
+                </div>
+            </div>
+
+            <div class="layui-card-body">
+                <blockquote class="layui-elem-quote layui-text">
+                    激活奖励(元):<span style="color: #f00;" id="ChangeTypeAmount0">0.00</span> | 交易分润(元):<span style="color: #f00;" id="ChangeTypeAmount1">0.00</span> | 创客开机奖励(元):<span style="color: #f00;" id="ChangeTypeAmount50">0.00</span> | 分润补贴(元):<span style="color: #f00;" id="ChangeTypeAmount111">0.00</span> | 直推奖励(元):<span style="color: #f00;" id="ChangeTypeAmount112">0.00</span> | 流量卡分佣(元):<span style="color: #f00;" id="ChangeTypeAmount60">0.00</span> | 红包奖励(元):<span style="color: #f00;" id="ChangeTypeAmount31">0.00</span>
+                    <br />
+                    提现申请(元):<span style="color: #f00;" id="ChangeTypeAmount2">0.00</span> | 提现失败,解冻(元):<span style="color: #f00;" id="ChangeTypeAmount6">0.00</span> | 人工冻结(元):<span style="color: #f00;" id="ChangeTypeAmount61">0.00</span> | 人工解冻(元):<span style="color: #f00;" id="ChangeTypeAmount62">0.00</span> | 人工扣减(元):<span style="color: #f00;" id="ChangeTypeAmount63">0.00</span> | 人工增加(元):<span style="color: #f00;" id="ChangeTypeAmount64">0.00</span> | 提现代付(元):<span style="color: #f00;" id="ChangeTypeAmount3">0.00</span> | 提现手续费(元):<span style="color: #f00;" id="ChangeTypeAmount4">0.00</span> | 提现税点扣除(元):<span style="color: #f00;" id="ChangeTypeAmount5">0.00</span>
+                </blockquote>
+                <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_main/UserAccountRecord_Admin.js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script>
+        var UserId = '@UserId';
+    </script>
+</body>
+</html>

+ 209 - 0
Areas/Admin/Views/OperateServer/UserCashRecordOperate/Add.cshtml

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

+ 211 - 0
Areas/Admin/Views/OperateServer/UserCashRecordOperate/Edit.cshtml

@@ -0,0 +1,211 @@
+@using MySystem.Models;
+@{UserCashRecord editData = ViewBag.data as UserCashRecord;}
+@{
+    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 layui-form-text">
+<label class="layui-form-label">备注</label>
+<div class="layui-input-block">
+<textarea class="layui-textarea" id="Remark" name="Remark" maxlength="128" lay-verify="" placeholder="请输入备注">@editData.Remark</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>
+    </div>
+
+    <script src="/layuiadmin/layui/layui.js"></script>
+    <script src="/other/oss/upload-min@(MySystem.OssHelper.Instance.OssStatus ? "-oss" : "").js?r=@DateTime.Now.ToString("yyyyMMddHHmmss")"></script>
+    <script src="/other/mybjq/kindeditor-min.js"></script>
+    <script src="/other/mybjq/lang/zh_CN.js"></script>
+    <script>
+        
+        
+        //编辑器
+        KindEditor.ready(function (K) {
+            
+        });
+
+        var ids = "";
+        function getChildren(obj) {
+            $.each(obj, function (index, value) {
+                var id = obj[index].id;
+                ids += id + ",";
+                var children = obj[index].children;
+                if (children) {
+                    getChildren(children);
+                }
+            });
+        }
+
+        function AreasProvinceInit(tagId, areasVal, form) {
+            for (var i = 0; i < provs_data.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(provs_data[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Province").append('<option value="' + provs_data[i].value + '"' + sel + '>' + provs_data[i].text + '</option>');
+            }
+            form.render();
+        }
+
+        function AreasProvinceSelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "City").html('<option value="">市</option>');
+            var list = citys_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "City").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasCitySelected(tagId, areasVal, form, value) {
+            $("#" + tagId + "Area").html('<option value="">县/区</option>');
+            var list = dists_data[value];
+            for (var i = 0; i < list.length; i++) {
+                var sel = "";
+                if (areasVal.indexOf(list[i].text) > -1) {
+                    sel = " selected=selected";
+                }
+                $("#" + tagId + "Area").append('<option value="' + list[i].value + '"' + sel + '>' + list[i].text + '</option>');
+            }
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+
+        function AreasAreaSelected(tagId, form) {
+            form.render();
+            $("#" + tagId + "").val($("#" + tagId + "Province option:selected").text() + "," + $("#" + tagId + "City option:selected").text() + "," + $("#" + tagId + "Area option:selected").text());
+        }
+        function movePrev(obj, tagId) {
+            $(obj).parent().prev().insertAfter($(obj).parent());
+            checkPics(tagId);
+        }
+        function moveNext(obj, tagId) {
+            $(obj).parent().next().insertBefore($(obj).parent());
+            checkPics(tagId);
+        }
+        function deletePic(obj, tagId) {
+            $(obj).parent().remove();
+            checkPics(tagId);
+        }
+        function checkPics(tagId) {
+            var pics = "";
+            var texts = "";
+            $("#" + tagId + "Image div img").each(function (i) {
+                pics += $(this).attr("src").replace(osshost, '') + "|";
+            });
+            $("#" + tagId + "Image div input").each(function (i) {
+                texts += $(this).val() + "|";
+            });
+            if (pics == "") {
+                $("#" + tagId).val("");
+            } else {
+                pics = pics.substring(0, pics.length - 1);
+                texts = texts.substring(0, pics.length - 1);
+                $("#" + tagId).val(pics + "#cut#" + texts);
+            }
+        }
+        function checkBox(tagId) {
+            var text = "";
+            $("input[type=checkbox][name=" + tagId + "List]:checked").each(function (i) {
+                text += $(this).val() + ",";
+            });
+            $("#" + tagId).val(text);
+        }
+        function showBigPic(picpath) {
+            parent.layer.open({
+                type: 1,
+                title: false,
+                closeBtn: 0,
+                shadeClose: true,
+                area: ['auto', 'auto'],
+                content: '<img src="' + picpath + '" style="max-width:800px; max-height:800px;" />'
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'element', 'croppers', 'transfer', 'tree', 'util'], function () {
+            var $ = layui.$
+                , form = layui.form
+                , layer = layui.layer
+                , layedit = layui.layedit
+                , laydate = layui.laydate
+                , croppers = layui.croppers
+                , transfer = layui.transfer
+                , util = layui.util;
+            tree = layui.tree;
+            element = layui.element;
+            upload = layui.upload;
+        
+            //Hash地址的定位
+            var layid = location.hash.replace(/^#test=/, '');
+            element.tabChange('test', layid);
+            element.on('tab(test)', function (elem) {
+                location.hash = 'test=' + $(this).attr('lay-id');
+            });
+    
+            //日期
+            
+
+            //上传文件
+            
+
+            //穿梭框
+            
+
+            //TreeView,比如权限管理
+            
+
+            //省市区
+            
+        })
+
+    </script>
+</body>
+</html>

+ 134 - 0
Areas/Admin/Views/OperateServer/UserCashRecordOperate/Import.cshtml

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

Некоторые файлы не были показаны из-за большого количества измененных файлов