Jelajahi Sumber

合并代码

lichunlei 4 tahun lalu
induk
melakukan
cec18c1fba

+ 780 - 0
Areas/Admin/Controllers/MainServer/StoreMachineApplyController.cs

@@ -0,0 +1,780 @@
+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;
+
+/// <summary>
+/// 机具申请记录
+/// </summary>
+namespace MySystem.Areas.Admin.Controllers
+{
+    [Area("Admin")]
+    [Route("Admin/[controller]/[action]")]
+    public class StoreMachineApplyController : BaseController
+    {
+        public StoreMachineApplyController(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(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 RealName, string StoreNo, string StoreName, string StoreMakerCode, string StatusSelect, string SendStatusSelect, string StoreTypeSelect, int page = 1, int limit = 30)
+        {
+
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("ApplyNo", "1"); //申请单号
+            Fields.Add("BrandId", "1"); //品牌
+            Fields.Add("ApplyTime", "3"); //申请时间
+            Fields.Add("ExpressNo", "1"); //快递单号
+
+            string condition = " and Status>-1";
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
+            }
+            //创客名称
+            if (!string.IsNullOrEmpty(RealName))
+            {
+                condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
+            }
+            //仓库编号
+            if (!string.IsNullOrEmpty(StoreNo))
+            {
+                condition += " and StoreId in (select StoreId from StoreForCode where Code='" + StoreNo + "')";
+            }
+            //仓库名称
+            if (!string.IsNullOrEmpty(StoreName))
+            {
+                condition += " and StoreId in (select StoreId from StoreForName where Name='" + StoreName + "')";
+            }
+            //仓库归属创客编号
+            if (!string.IsNullOrEmpty(StoreMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + StoreMakerCode + "')";
+            }
+            //订单状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+            //发货状态
+            if (!string.IsNullOrEmpty(SendStatusSelect))
+            {
+                condition += " and SendStatus=" + SendStatusSelect;
+            }
+            //仓库类型
+            if (!string.IsNullOrEmpty(StoreTypeSelect))
+            {
+                condition += " and StoreType=" + StoreTypeSelect;
+            }
+
+            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 StoreId = int.Parse(dic["StoreId"].ToString());
+                StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
+                dic["StoreInfo"] = store.StoreNo + "<br />" + store.StoreName;
+
+                //仓库收货地址
+                dic["StoreAddressInfo"] = store.Areas + "<br />" + store.Address;
+
+                //仓库联系人信息
+                //dic["StoreContact"] = dic["StoreManagerMobile"].ToString() + "<br />" + dic["StoreManager"].ToString();
+
+                //仓库归属信息
+                // int StoreUserId = int.Parse(dic["StoreUserId"].ToString());
+                // Users storeUser = db.Users.FirstOrDefault(m => m.Id == StoreUserId) ?? new Users();
+                // int StoreType = int.Parse(dic["StoreType"].ToString());
+                // string StoreTypeName = "";
+                // if(StoreType == 0) StoreTypeName = "总仓";
+                // if(StoreType == 1) StoreTypeName = "分仓";
+                // dic["StoreUser"] = storeUser.MakerCode + "<br />" + StoreTypeName;
+
+                //创客信息
+                int UserId = int.Parse(dic["UserId"].ToString());
+                Users puser = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserInfo"] = puser.MakerCode + "<br />" + puser.RealName;
+
+                //顶级创客
+                // int TopUserId = int.Parse(dic["TopUserId"].ToString());
+                // Users tuser = db.Users.FirstOrDefault(m => m.Id == TopUserId) ?? new Users();
+                // dic["TopUserInfo"] = tuser.MakerCode + "<br />" + tuser.RealName;
+
+                //申请状态
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["Status"] = "待审核";
+                if (Status == 1) dic["Status"] = "申请成功";
+                if (Status == 2) dic["Status"] = "申请失败";
+            }
+            Dictionary<string, object> other = new Dictionary<string, object>();
+            other.Add("ApplyNum", 0);
+            other.Add("SendNum", 0);
+            obj.Add("other", other);
+            return Json(obj);
+        }
+
+        #endregion
+
+        #region 增加机具申请记录
+
+        /// <summary>
+        /// 增加或修改机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        public IActionResult Add(string right)
+        {
+            ViewBag.RightInfo = RightInfo;
+            ViewBag.right = right;
+
+
+            return View();
+        }
+
+        #endregion
+
+        #region 增加机具申请记录
+
+        /// <summary>
+        /// 增加或修改机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Add(StoreMachineApply 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("StoreMachineApply", Fields, 0);
+            AddSysLog(data.Id.ToString(), "StoreMachineApply", "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;
+
+            StoreMachineApply editData = db.StoreMachineApply.FirstOrDefault(m => m.Id == Id) ?? new StoreMachineApply();
+            ViewBag.data = editData;
+
+            KqProducts kqProducts = db.KqProducts.FirstOrDefault(m => m.Id == editData.BrandId);
+            ViewBag.BrandName = kqProducts.Name;
+
+            Users user = db.Users.FirstOrDefault(m => m.Id == editData.UserId) ?? new Users();
+            ViewBag.MakerCode = user.MakerCode;
+            ViewBag.RealName = user.RealName;
+
+            int Status = editData.Status;
+            if (Status == 0) ViewBag.Status = "待审核";
+            if (Status == 1) ViewBag.Status = "申请成功";
+            if (Status == 2) ViewBag.Status = "申请失败";
+            return View();
+        }
+
+        #endregion
+
+        #region 修改机具申请记录
+
+        /// <summary>
+        /// 增加或修改机具申请记录信息
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public string Edit(StoreMachineApply data)
+        {
+            Dictionary<string, object> Fields = new Dictionary<string, object>();
+
+            Fields.Add("ApplyNo", data.ApplyNo); //申请单号
+            // Fields.Add("BrandId", data.BrandId); //产品Id
+            Fields.Add("ApplyNum", data.ApplyNum); //申请箱数
+            Fields.Add("SendNum", data.SendNum); //发货箱数
+            // Fields.Add("UserId", data.UserId); //创客ID
+            Fields.Add("Status", data.Status); //申请状态
+            Fields.Add("SwapSnExpand", data.SwapSnExpand);//已发货机具SN
+            Fields.Add("SeoDescription", data.SeoDescription); //申请描述
+
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreMachineApply", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "StoreMachineApply", "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 Cancel(int Id)
+        {
+            StoreMachineApply storeMachineApply = db.StoreMachineApply.FirstOrDefault(m => m.Id == Id);
+            Orders order = db.Orders.FirstOrDefault(m => m.Id == storeMachineApply.OrderId);
+            if (storeMachineApply != null && order != null)
+            {
+                function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(storeMachineApply) + "#cut#" + Newtonsoft.Json.JsonConvert.SerializeObject(order) + "#cut#" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "机具申请订单取消日志");
+                db.StoreMachineApply.Remove(storeMachineApply);
+                db.Orders.Remove(order);
+                db.SaveChanges();
+            }
+            AddSysLog(Id, "StoreMachineApply", "cancel");
+            AddSysLog(Id, "Orders", "cancel");
+            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", 0);
+                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 导入数据
+
+        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 ExcelData)
+        {
+            // // RedisDbconn.Instance.AddList("ExcelImport", ExcelPath + "#cut#" + Kind);
+            // string key = function.MD5_16(Guid.NewGuid().ToString());
+            // RedisDbconn.Instance.AddList("ExcelImportV2", ExcelPath + "#cut#" + Kind + "#cut#" + key);
+            // return "success|" + key;
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+                // string SwapSnExpand = dr[0].ToString();
+                var temp = dr[0].ToString();
+                temp = temp.Substring(1);
+                temp = temp.Substring(0, temp.Length - 1);
+                var SwapSnExpand = temp.Split(",,");
+                // StoreMachineApply storeMachineApply = db.StoreMachineApply.FirstOrDefault(m => m.MakerCode == MakerCode);
+                // if (UserCode != null)
+                // {
+                //     Users User = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId);
+                //     if (User != null)
+                //     {
+                //         User.SettleAmount = decimal.Parse(function.CheckInt(SettleAmount));
+                //     }
+                // }
+            }
+            db.SaveChanges();
+            return "success";
+        }
+        #endregion
+
+        #region 导出Excel
+
+        /// <summary>
+        /// 导出Excel
+        /// </summary>
+        /// <returns></returns>
+        public JsonResult ExportExcel(StoreMachineApply data, string MakerCode, string RealName, string StoreNo, string StoreName, string StoreMakerCode, string StatusSelect, string SendStatusSelect, string StoreTypeSelect)
+        {
+            Dictionary<string, string> Fields = new Dictionary<string, string>();
+
+            Fields.Add("ApplyNo", "1"); //申请单号
+            Fields.Add("BrandId", "1"); //品牌
+            Fields.Add("ApplyTime", "3"); //申请时间
+            Fields.Add("ExpressNo", "1"); //快递单号
+
+            string condition = " and Status>-1";
+            //创客编号
+            if (!string.IsNullOrEmpty(MakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
+            }
+            //创客名称
+            if (!string.IsNullOrEmpty(RealName))
+            {
+                condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
+            }
+            //仓库编号
+            if (!string.IsNullOrEmpty(StoreNo))
+            {
+                condition += " and StoreId in (select StoreId from StoreForCode where Code='" + StoreNo + "')";
+            }
+            //仓库名称
+            if (!string.IsNullOrEmpty(RealName))
+            {
+                condition += " and StoreId in (select StoreId from StoreForName where Name='" + RealName + "')";
+            }
+            //仓库归属创客编号
+            if (!string.IsNullOrEmpty(StoreMakerCode))
+            {
+                condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + StoreMakerCode + "')";
+            }
+            //订单状态
+            if (!string.IsNullOrEmpty(StatusSelect))
+            {
+                condition += " and Status=" + StatusSelect;
+            }
+            //发货状态
+            if (!string.IsNullOrEmpty(SendStatusSelect))
+            {
+                condition += " and SendStatus=" + SendStatusSelect;
+            }
+            //仓库类型
+            if (!string.IsNullOrEmpty(StoreTypeSelect))
+            {
+                condition += " and StoreType=" + StoreTypeSelect;
+            }
+
+            Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("MachineApply", Fields, "Id desc", "0", 1, 20000, condition, "ApplyNo,UserId,TopUserId,BrandId,Areas,Address,RealName,Mobile,ApplyDeviceName,ApplyDeviceNum,ApplyTime,SendStatus,ExpressNo,ExpressName,DeliveryType,StoreId,StoreName,StoreManager,StoreManagerMobile,Remark,StoreUserId,SendDate,StoreType,Status", 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()));
+
+                //申请仓库信息
+                int StoreId = int.Parse(dic["StoreId"].ToString());
+                StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
+                dic["StoreInfo"] = store.StoreNo + "<br />" + store.StoreName;
+
+                //仓库联系人信息
+                //dic["StoreContact"] = dic["StoreManagerMobile"].ToString() + "<br />" + dic["StoreManager"].ToString();
+
+                //仓库归属信息
+                // int StoreUserId = int.Parse(dic["StoreUserId"].ToString());
+                // Users storeUser = db.Users.FirstOrDefault(m => m.Id == StoreUserId) ?? new Users();
+                // int StoreType = int.Parse(dic["StoreType"].ToString());
+                // string StoreTypeName = "";
+                // if(StoreType == 0) StoreTypeName = "总仓";
+                // if(StoreType == 1) StoreTypeName = "分仓";
+                // dic["StoreUser"] = storeUser.MakerCode + "<br />" + StoreTypeName;
+
+                //创客信息
+                int UserId = int.Parse(dic["UserId"].ToString());
+                Users puser = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
+                dic["UserInfo"] = puser.MakerCode + "<br />" + puser.RealName;
+
+                //顶级创客
+                // int TopUserId = int.Parse(dic["TopUserId"].ToString());
+                // Users tuser = db.Users.FirstOrDefault(m => m.Id == TopUserId) ?? new Users();
+                // dic["TopUserInfo"] = tuser.MakerCode + "<br />" + tuser.RealName;
+
+                //申请状态
+                int Status = int.Parse(dic["Status"].ToString());
+                if (Status == 0) dic["Status"] = "待审核";
+                if (Status == 1) dic["Status"] = "申请成功";
+                if (Status == 2) dic["Status"] = "申请失败";
+
+                dic.Remove("BrandId");
+                dic.Remove("StoreInfo");
+                dic.Remove("UserInfo");
+                dic.Remove("Status");
+            }
+
+            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("ApplyNo", "申请单号");
+            ReturnFields.Add("BrandId", "产品类型");
+            ReturnFields.Add("StoreId", "申请仓库");
+            ReturnFields.Add("StoreMakerCode", "仓库归属创客编号");
+            ReturnFields.Add("StoreRealName", "仓库归属创客名称");
+            ReturnFields.Add("MakerCode", "创客编号");
+            ReturnFields.Add("MakerName", "创客名称");
+            ReturnFields.Add("Status", "申请状态");
+            ReturnFields.Add("ApplyTime", "申请时间");
+            ReturnFields.Add("ApplyNum", "申请箱数");
+            ReturnFields.Add("SendNum", "发货箱数");
+            ReturnFields.Add("SwapSnExpand", "已发货SN号");
+            ReturnFields.Add("SeoDescription", "申请描述");
+
+            result.Add("Fields", ReturnFields);
+            AddSysLog("0", "StoreMachineApply", "ExportExcel");
+            return Json(result);
+        }
+
+        #endregion
+
+
+
+
+
+        #region 审核发货
+
+        public IActionResult AuditSend(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();
+            StoreHouse storeHouse = db.StoreHouse.FirstOrDefault(m => m.Id == editData.StoreId) ?? new StoreHouse();
+            ViewBag.MakerCode = users.MakerCode;
+            ViewBag.RealName = 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.SendNum); //发货箱数
+            Fields.Add("SeoDescription", data.SeoDescription); //申请描述
+            Fields.Add("Status", data.Status);
+            new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Edit("StoreMachineApply", Fields, data.Id);
+            AddSysLog(data.Id.ToString(), "StoreMachineApply", "AuditSend");
+            StoreMachineApply apply = db.StoreMachineApply.FirstOrDefault(m=>m.Id == data.Id) ?? new StoreMachineApply();
+            StoreHouse tostore = db.StoreHouse.FirstOrDefault(m=>m.Id == apply.StoreId) ?? new StoreHouse();
+            int BrandId = apply.BrandId.Value;
+            var FromStoreId = 0;
+            if (BrandId==1)
+            {
+                FromStoreId=7;
+            }
+            else if (BrandId==2)
+            {
+                FromStoreId=721;
+            }
+            else if (BrandId==3)
+            {
+                FromStoreId=697;
+            }
+            else if (BrandId==4)
+            {
+                FromStoreId=774;
+            }
+            else if (BrandId==5)
+            {
+                FromStoreId=775;
+            }
+            else if (BrandId==6)
+            {
+                FromStoreId=871;
+            }
+            else if (BrandId==7)
+            {
+                FromStoreId=0;
+            }
+            ExcelData = HttpUtility.UrlDecode(ExcelData);
+            JsonData list = JsonMapper.ToObject(ExcelData);            
+            Dictionary<string, int> storeData = new Dictionary<string, int>();
+            Dictionary<string, int> toStoreData = new Dictionary<string, int>();
+            for (int i = 1; i < list.Count; i++)
+            {
+                JsonData dr = list[i];
+                string itemJson = dr.ToJson();
+                string SnNo = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
+                string BatchNo = itemJson.Contains("\"B\"") ? dr["B"].ToString() : "";
+                string OutNote = itemJson.Contains("\"C\"") ? dr["B"].ToString() : "";
+                StoreMachineApply storeMachineApply = db.StoreMachineApply.FirstOrDefault(m=>m.Id == data.Id);
+                if (storeMachineApply != null)
+                {
+                    storeMachineApply.SwapSnExpand = function.CheckString(SnNo)+',';
+                }
+                MachineForSnNo machinefor = db.MachineForSnNo.FirstOrDefault(m => m.SnNo == SnNo) ?? new MachineForSnNo();
+                PosMachinesTwo machine = db.PosMachinesTwo.FirstOrDefault(m => m.Id == machinefor.SnId && m.StoreId != apply.StoreId && m.BuyUserId == 0 && m.UserId == 0) ?? new PosMachinesTwo();
+                if (machine.Id > 0)
+                {
+                    StoreStockChange stockchange = db.StoreStockChange.Add(new StoreStockChange()
+                    {
+                        CreateDate = DateTime.Now,
+                        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 = tostore.UserId, //出货人
+                        FromDate = DateTime.Now, //出库时间
+                        FromRemark = OutNote, //出库备注
+                        ToUserId = tostore.UserId, //收货人
+                        ToStoreId = tostore.Id, //退货收货仓库                        
+                        SourceStoreId = machine.SourceStoreId, //源仓库编号
+                        BrandType = machine.DeviceType, //品牌类型
+                    }).Entity;
+                    db.SaveChanges();
+                    string ChangeNo = "SC";
+                    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 = tostore.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 = tostore.UserId, //出货创客
+                        FromDate = DateTime.Now, //出库时间
+                        FromRemark = OutNote, //出库备注
+                        SourceStoreId = machine.SourceStoreId, //源仓库
+                        StoreId = tostore.Id, //仓库
+                    });
+
+                    db.StoreChangeHistory.Add(new StoreChangeHistory()
+                    {
+                        CreateDate = DateTime.Now,
+                        UserId = tostore.UserId, //创客
+                        BrandId = BrandId, //产品类型
+                        ChangeRecordNo = ChangeNo, //变更记录单号
+                        BizBatchNo = BatchNo, //业务批次号
+                        TransType = 1, //交易类型
+                        SnNo = SnNo, //SN编号
+                        SnType = machine.PosSnType, //SN机具类型
+                        StockOpDirect = 0, //库存操作方向
+                        DeviceVendor = machine.DeviceName, //设备厂商
+                        DeviceModel = machine.DeviceKind, //设备型号
+                        DeviceType = machine.DeviceType, //设备类型
+                        ToUserId = tostore.UserId, //收货创客
+                        ToStoreId = tostore.Id, //创客退货收货仓库
+                        ToDate = DateTime.Now, //入库时间
+                        ToRemark = OutNote, //入库备注
+                        SourceStoreId = machine.SourceStoreId, //源仓库
+                        StoreId = tostore.Id, //仓库
+                    });
+                    db.SaveChanges();
+                }
+            }
+            db.SaveChanges();
+
+            int StoreId = FromStoreId;
+            int OpStoreNum = list.Count - 1;
+            StoreHouse store = db.StoreHouse.FirstOrDefault(m => m.Id == StoreId) ?? new StoreHouse();
+            StoreBalance balance = db.StoreBalance.Add(new StoreBalance()
+            {
+                CreateDate = DateTime.Now,
+                StoreId = StoreId, //仓库
+                TransType = 1, //交易类型
+                BrandId = BrandId, //产品类型
+                OpStoreNum = OpStoreNum, //操作库存数
+                OpSymbol = "-", //操作符
+                BeforeTotalNum = store.TotalNum, //操作前总库存数
+                AfterTotalNum = store.TotalNum, //操作后总库存数
+                BeforeLaveNum = store.LaveNum, //操作前剩余库存数
+                AfterLaveNum = store.LaveNum - OpStoreNum, //操作后剩余库存数
+                BeforeOutNum = store.OutNum, //操作前出库数
+                AfterOutNum = store.OutNum + OpStoreNum, //操作后出库数
+            }).Entity;
+            db.SaveChanges();
+            string ChangeNo1 = "SC";
+            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; //交易流水编号
+            store.LaveNum -= OpStoreNum;
+            store.OutNum += OpStoreNum;
+            db.SaveChanges();
+            
+            StoreId = tostore.Id;
+            balance = db.StoreBalance.Add(new StoreBalance()
+            {
+                CreateDate = DateTime.Now,
+                StoreId = StoreId, //仓库
+                TransType = 0, //交易类型
+                BrandId = BrandId, //产品类型
+                OpStoreNum = OpStoreNum, //操作库存数
+                OpSymbol = "+", //操作符
+                BeforeTotalNum = store.TotalNum, //操作前总库存数
+                AfterTotalNum = store.TotalNum + OpStoreNum, //操作后总库存数
+                BeforeLaveNum = store.LaveNum, //操作前剩余库存数
+                AfterLaveNum = store.LaveNum + OpStoreNum, //操作后剩余库存数
+                BeforeOutNum = store.OutNum, //操作前出库数
+                AfterOutNum = store.OutNum, //操作后出库数
+            }).Entity;
+            db.SaveChanges();
+            string ChangeNo2 = "SC";
+            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; //交易流水编号
+            store.TotalNum += OpStoreNum;
+            store.LaveNum += OpStoreNum;
+            db.SaveChanges();
+            if (data.Status == 1)
+            {
+                return "success";
+            }
+            else
+            {
+                return "false";
+            }
+
+        }
+        #endregion
+
+    }
+}

+ 207 - 0
Areas/Admin/Views/MainServer/StoreMachineApply/AuditSend.cshtml

@@ -0,0 +1,207 @@
+@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" value="ExcelData" />
+
+        <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="MakerCode" name="MakerCode"
+                                        value="@ViewBag.MakerCode" lay-verify="">
+                                </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="RealName" name="RealName"
+                                        value="@ViewBag.RealName" lay-verify="">
+                                </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="" 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">
+                                    <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="SeoDescription" name="SeoDescription"
+                                        maxlength="128" lay-verify=""
+                                        placeholder="请输入申请描述">@editData.SeoDescription</textarea>
+                                </div>
+                            </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>
+                    <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="">
+                                @* <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@(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);
+                }
+            });
+        }
+
+        var tree;
+        var element;
+        var upload;
+        var excel;
+        var ExcelData;
+        layui.config({
+            base: '/layuiadmin/' //静态资源所在路径
+        }).extend({
+            index: 'lib/index' //主入口模块
+        }).use(['index', 'form', 'upload', 'layedit', 'laydate', 'excel', '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');
+            });
+
+            //excel导入
+            excel = layui.excel;
+            $('#ExcelFile').change(function (e) {
+                var files = e.target.files;
+                excel.importExcel(files, {}, function (data) {
+                    ExcelData = data[0].sheet1;
+                });
+            });
+
+
+            //日期
+
+
+            //上传文件
+            WebUploadJs('ExcelPathBtn', '@(Library.ConfigurationManager.AppSettings["Database"].ToString())/upload', { width: 0, height: 0, quality: 0 }, { max_file_size: 1048576 }, function (filename) {
+                $('#ExcelPathFile').html(filename);
+                $('#ExcelPath').val(filename);
+            });
+
+
+            //穿梭框
+
+
+            //TreeView,比如权限管理
+
+
+            //省市区
+
+        })
+
+    </script>
+</body>
+
+</html>

+ 601 - 0
wwwroot/layuiadmin/modules_main/StoreMachineApply_Admin.js

@@ -0,0 +1,601 @@
+var ExcelData;
+
+function ConfirmImport() {
+    $.ajax({
+        type: "POST",
+        url: "/Admin/StoreMachineApply/Import?r=" + Math.random(1),
+        data: "ExcelData=" + encodeURIComponent(JSON.stringify(ExcelData)),
+        dataType: "text",
+        success: function (data) {
+            if (data == "success") {
+                layer.msg("导入成功", {
+                    time: 2000
+                }, function () {
+                    window.location.reload();
+                });
+            } else {
+                layer.msg(data);
+            }
+        }
+    });
+}
+
+$("#excelTemp").html('<a href="/users/批量添加机具SN模版.xlsx">点击下载批量添加机具SN模版</a>');
+
+var excel;
+layui.config({
+    base: '/layuiadmin/' //静态资源所在路径
+}).extend({
+    myexcel: 'layui/lay/modules/excel',
+    index: 'lib/index' //主入口模块
+}).use(['index', 'table', 'excel', 'laydate'], function () {
+    var $ = layui.$,
+        form = layui.form,
+        table = layui.table;
+
+    //- 筛选条件-日期
+    var laydate = layui.laydate;
+    var layCreateDate = laydate.render({
+        elem: '#CreateDate',
+        type: 'date',
+        range: true,
+        trigger: 'click',
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layCreateDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layCreateDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#CreateDate').val(value);
+            }
+        }
+    });
+    var layApplyTime = laydate.render({
+        elem: '#ApplyTime',
+        trigger: 'click',
+        type: 'date',
+        range: true,
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    layApplyTime.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                layApplyTime.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#ApplyTime').val(value);
+            }
+        }
+    });
+    var laySendDate = laydate.render({
+        elem: '#SendDate',
+        trigger: 'click',
+        type: 'date',
+        range: true,
+        change: function (value, date, endDate) {
+            var op = true;
+            if (date.year == endDate.year && endDate.month - date.month <= 1) {
+                if (endDate.month - date.month == 1 && endDate.date > date.date) {
+                    op = false;
+                    laySendDate.hint('日期范围请不要超过1个月');
+                    setTimeout(function () {
+                        $(".laydate-btns-confirm").addClass("laydate-disabled");
+                    }, 1);
+                }
+            } else {
+                op = false;
+                laySendDate.hint('日期范围请不要超过1个月');
+                setTimeout(function () {
+                    $(".laydate-btns-confirm").addClass("laydate-disabled");
+                }, 1);
+            }
+            if (op) {
+                $('#SendDate').val(value);
+            }
+        }
+    });
+
+
+    //excel导入
+    excel = layui.excel;
+    $('#ExcelFile').change(function (e) {
+        var files = e.target.files;
+        excel.importExcel(files, {}, function (data) {
+            ExcelData = data[0].sheet1;
+        });
+    });
+
+    //监听单元格编辑
+    table.on('edit(LAY-list-manage)', function (obj) {
+        var value = obj.value //得到修改后的值
+            ,
+            data = obj.data //得到所在行所有键值
+            ,
+            field = obj.field; //得到字段
+        if (field == "Sort") {
+            $.ajax({
+                type: "POST",
+                url: "/Admin/StoreMachineApply/Sort?r=" + Math.random(1),
+                data: "Id=" + data.Id + "&Sort=" + value,
+                dataType: "text",
+                success: function (data) {}
+            });
+        }
+    });
+
+    //列表数据
+    table.render({
+        elem: '#LAY-list-manage',
+        url: '/Admin/StoreMachineApply/IndexData' //模拟接口
+            ,
+        cols: [[
+            {type: 'checkbox',fixed: 'left'}, 
+            {field: 'Id', fixed: 'left', title: 'ID', width: 80, sort: true, unresize: true },
+            {field: 'ApplyNo',width: 200,title: '申请单号',sort: true}, 
+            {field: 'BrandId', width: 200,title: '产品名称',sort: true}, 
+            {field: 'UserInfo',width: 200,title: '创客信息',sort: true},
+            {field: 'StoreInfo',width: 200,title: '申请仓库信息',sort: true},
+            {field: 'StoreAddressInfo',width: 300,title: '仓库收货地址',sort: true}, 
+            // {field: 'StoreContact',width: 200,title: '仓库联系人信息',sort: true}, 
+            // {field: 'StoreUser',width: 200,title: '仓库归属信息',sort: true}, 
+            {field: 'Status',width: 200,title: '申请状态',sort: true}, 
+            {field: 'ApplyTime',width: 200,title: '申请时间',sort: true}, 
+            {title: '操作', width: 260,align: 'center',fixed: 'right',toolbar: '#table-list-tools'}
+        ]],
+        where: {
+
+        },
+        page: true,
+        limit: 30,
+        height: 'full-' + String($('.layui-card-header').height() + 130),
+        text: '对不起,加载出现异常!',
+        done: function (res, curr, count) {
+            $("#ApplyCount").text(res.other.ApplyCount);
+            $("#SendCount").text(res.other.SendCount);
+            $(".layui-none").text("无数据");
+        }
+    });
+
+    //监听工具条
+    table.on('tool(LAY-list-manage)', function (obj) {
+        var data = obj.data;
+        if (obj.event === 'del') {
+            var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/StoreMachineApply/Delete?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'cancel') {
+            var index = layer.confirm('确定要取消订单吗?取消后不能恢复!', function (index) {
+                $.ajax({
+                    type: "POST",
+                    url: "/Admin/StoreMachineApply/Cancel?r=" + Math.random(1),
+                    data: "Id=" + data.Id,
+                    dataType: "text",
+                    success: function (data) {
+                        if (data == "success") {
+                            obj.del();
+                            layer.close(index);
+                            parent.layer.msg('已取消');
+                        } else {
+                            parent.layer.msg(data);
+                        }
+                    }
+                });
+            });
+        } else if (obj.event === 'detail') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2,
+                title: '订单详情',
+                content: 'Edit?Id=' + data.Id + '',
+                maxmin: true,
+                area: ['500px', '450px'],
+                btn: ['返回'],
+                yes: function (index, layero) {
+                    layer.close(perContent);
+                },
+                success: function (layero, index) {
+
+                }
+            });
+            layer.full(perContent);
+        } else if (obj.event === 'send') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2,
+                title: '审核发货',
+                content: 'AuditSend?Id=' + data.Id + '',
+                maxmin: true,
+                area: ['450px', '680px'],
+                btn: ['确定发货', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreMachineApply/AuditSend?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data == "success") {
+                                    layer.close(index); //关闭弹层
+                                    layer.msg('发货成功', {
+                                        time: 1500
+                                    }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                } else {
+                                    layer.close(index); //关闭弹层
+                                    layer.msg('审核完成', {
+                                        time: 1500
+                                    }, function () {
+                                        table.reload('LAY-list-manage'); //数据刷新
+                                    });
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                },
+                success: function (layero, index) {
+
+                }
+            });
+        }else if (obj.event === 'edit') {
+            var tr = $(obj.tr);
+            var perContent = layer.open({
+                type: 2,
+                title: '机具申请记录-编辑',
+                content: 'Edit?Id=' + data.Id + '',
+                maxmin: true,
+                area: ['800px', '650px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreMachineApply/Edit?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data == "success") {
+                                    layer.close(index); //关闭弹层
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                },
+                success: function (layero, index) {
+
+                }
+            });
+        }
+    });
+
+
+    //监听搜索
+    form.on('submit(LAY-list-front-search)', function (data) {
+        var field = data.field;
+
+        //执行重载
+        table.reload('LAY-list-manage', {
+            where: field
+        });
+    });
+    form.on('submit(LAY-list-front-searchall)', function (data) {
+        table.reload('LAY-list-manage', {
+            where: null
+        });
+    });
+
+    //事件
+    var active = {
+        batchdel: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage'),
+                data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要删除的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要删除吗?删除后不能恢复!', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/StoreMachineApply/Delete?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        },
+        add: function () {
+            var perContent = layer.open({
+                type: 2,
+                title: '仓库机具申请记录-添加',
+                content: 'Add',
+                maxmin: true,
+                area: ['500px', '450px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+                    setTimeout(function () {
+                        layero.find('iframe').contents().find('.layui-tab-item').each(function (i) {
+                            var errObj = $(this).find('.layui-form-danger');
+                            if (errObj.length > 0) {
+                                iframeWindow.element.tabChange('mytabbar', String(i + 1));
+                                submit.click();
+                            }
+                        });
+                    }, 300);
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.field; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreMachineApply/Add?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                layer.close(index); //关闭弹层
+                                if (data == "success") {
+                                    table.reload('LAY-list-manage'); //数据刷新
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+            layer.full(perContent);
+        },
+        ImportChange: function () {
+            var perContent = layer.open({
+                type: 2,
+                title: '添加机具SN',
+                content: 'Import?ExcelKind=2',
+                maxmin: true,
+                area: ['650px', '350px'],
+                btn: ['确定', '取消'],
+                yes: function (index, layero) {
+                    var iframeWindow = window['layui-layer-iframe' + index],
+                        submitID = 'LAY-list-front-submit',
+                        submit = layero.find('iframe').contents().find('#' + submitID);
+
+
+                    //监听提交
+                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
+                        var field = data.SwapSnExpand; //获取提交的字段
+                        var userdata = "";
+                        for (var prop in field) {
+                            userdata += prop + "=" + encodeURIComponent(field[prop]) + "&";
+                        }
+                        //提交 Ajax 成功后,静态更新表格中的数据
+                        //$.ajax({});
+                        var loadindex = layer.load(1, {
+                            shade: [0.5, '#000']
+                        });
+                        $.ajax({
+                            type: "POST",
+                            url: "/Admin/StoreMachineApply/ImportPost?r=" + Math.random(1),
+                            data: userdata,
+                            dataType: "text",
+                            success: function (data) {
+                                if (data.indexOf("success") == 0) {
+                                    var datalist = data.split('|');
+                                    var key = datalist[1];
+                                    CheckImport(table, key, loadindex, index);
+                                } else {
+                                    layer.msg(data);
+                                }
+                            }
+                        });
+                    });
+
+                    submit.trigger('click');
+                }
+            });
+        },
+        ImportData: function () {
+            layer.open({
+                type: 1,
+                title: '导入',
+                maxmin: false,
+                area: ['460px', '180px'],
+                content: $('#excelForm'),
+                cancel: function () {}
+            });
+        },
+        ExportExcel: function () {
+            var userdata = '';
+            $(".layuiadmin-card-header-auto input").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $(".layuiadmin-card-header-auto select").each(function (i) {
+                userdata += $(this).attr('name') + '=' + encodeURIComponent($(this).val()) + '&';
+            });
+            $.ajax({
+                type: "GET",
+                url: "/Admin/StoreMachineApply/ExportExcel?r=" + Math.random(1),
+                data: userdata,
+                dataType: "json",
+                success: function (data) {
+                    data.Obj.unshift(data.Fields);
+                    excel.exportExcel(data.Obj, data.Info, 'xlsx');
+                }
+            });
+        },
+        Open: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage'),
+                data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要开启的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要开启吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/StoreMachineApply/Open?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        },
+        Close: function () {
+            var checkStatus = table.checkStatus('LAY-list-manage'),
+                data = checkStatus.data; //得到选中的数据
+            if (data.length < 1) {
+                parent.layer.msg("请选择要关闭的项");
+            } else {
+                var ids = "";
+                $.each(data, function (index, value) {
+                    ids += data[index].Id + ",";
+                });
+                ids = ids.substring(0, ids.length - 1);
+                var index = layer.confirm('确定要关闭吗?', function (index) {
+                    $.ajax({
+                        type: "POST",
+                        url: "/Admin/StoreMachineApply/Close?r=" + Math.random(1),
+                        data: "Id=" + ids,
+                        dataType: "text",
+                        success: function (data) {
+                            layer.close(index);
+                            if (data == "success") {
+                                table.reload('LAY-list-manage');
+                            } else {
+                                layer.msg(data);
+                            }
+                        }
+                    });
+                });
+            }
+        }
+    };
+
+    $('.layui-btn').on('click', function () {
+        var type = $(this).data('type');
+        active[type] ? active[type].call(this) : '';
+    });
+});

TEMPAT SAMPAH
wwwroot/users/批量添加机具SN模版.xlsx