From 0f5218bb8ed4ad8fa9b8b2f089efd624dc6e9f07 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期一, 21 六月 2021 08:56:25 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/zhengcaioa --- zhengcaioa/Services/SimService.cs | 337 ++++ zhengcaioa/zhengcaioa/Views/Shared/_Layout.cshtml | 9 用户表更新.sql | 68 zhengcaioa/zhengcaioa/Views/SimCost/Index.cshtml | 106 + zhengcaioa/zhengcaioa/Views/User/Edit.cshtml | 2 zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.css | 1140 +++++++++++++ zhengcaioa/zhengcaioa/Views/Area/Index.cshtml | 5 zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs | 1 zhengcaioa/zhengcaioa/Views/Sim/Edit.cshtml | 219 ++ zhengcaioa/zhengcaioa/Startup.cs | 5 zhengcaioa/zhengcaioa/zhengcaioa.csproj.user | 2 zhengcaioa/Model/Sim.cs | 154 + zhengcaioa/Model/zhengcaioaContext.cs | 6 zhengcaioa/DTO/SimDTO.cs | 28 zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.less | 943 +++++++++++ zhengcaioa/IServices/ISimService.cs | 27 zhengcaioa/zhengcaioa/wwwroot/js/jquery-confirm.js | 1379 ++++++++++++++++ zhengcaioa/zhengcaioa/Controllers/admin/SimController.cs | 125 + zhengcaioa/zhengcaioa/Controllers/admin/SimCostController.cs | 134 + zhengcaioa/zhengcaioa/Properties/PublishProfiles/FolderProfile.pubxml.user | 1 zhengcaioa/zhengcaioa/Views/Sim/Index.cshtml | 98 + zhengcaioa/zhengcaioa/Views/SimCost/Edit.cshtml | 200 ++ 22 files changed, 4,975 insertions(+), 14 deletions(-) diff --git a/zhengcaioa/DTO/SimDTO.cs b/zhengcaioa/DTO/SimDTO.cs new file mode 100644 index 0000000..524c0f3 --- /dev/null +++ b/zhengcaioa/DTO/SimDTO.cs @@ -0,0 +1,28 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Text; + +namespace DTO +{ + /// <summary> + /// 鏌ヨ鏉′欢 + /// </summary> + public class SimBindDTOSearch : SearchEntity + { + public string simcard { get; set; } + + public string username { get; set; } + + } + + /// <summary> + /// 鏌ヨ鏉′欢 + /// </summary> + public class SimCostDTOSearch : SearchEntity + { + public string searchtime { get; set; } + + public string searchsim { get; set; } + + } +} diff --git a/zhengcaioa/IServices/ISimService.cs b/zhengcaioa/IServices/ISimService.cs new file mode 100644 index 0000000..a5eaea0 --- /dev/null +++ b/zhengcaioa/IServices/ISimService.cs @@ -0,0 +1,27 @@ +锘縰sing DTO; +using System; +using System.Collections.Generic; +using System.Text; +using zhengcaioa.Models; + +namespace IServices +{ + public interface ISimService + { + ResultEntity Save(SimBind sim); + + SimBindView Get(string id); + + ResultDataEntity<SimBindView> SearchByPaging(SimBindDTOSearch searchEntity); + + ResultEntity UnBind(string ids,string user); + + List<SimBindView> GetBindSim(); + + ResultEntity SaveCost(SimCost md); + + SimCost GetSimCost(int id); + + ResultDataEntity<SimCostView> SearchSimCostByPage(SimCostDTOSearch searchEntity); + } +} diff --git a/zhengcaioa/Model/Sim.cs b/zhengcaioa/Model/Sim.cs new file mode 100644 index 0000000..7b98670 --- /dev/null +++ b/zhengcaioa/Model/Sim.cs @@ -0,0 +1,154 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; + +namespace zhengcaioa.Models +{ + [Table("t_sim_bind")] + public class SimBind + { + [Key] + public int id { get; set; } + + /// <summary> + /// 鍗″彿 + /// </summary> + public string sim_id { get; set; } + + /// <summary> + /// 鐢ㄦ埛 + /// </summary> + public string user_id { get; set; } + + /// <summary> + /// 灞炴�� + /// </summary> + public string cardpro { get; set; } + + public DateTime up_time { get; set; } + + public string up_user { get; set; } + } + + [Table("v_sim_bind")] + public class SimBindView + { + [Key] + public string Id { get; set; } + + public string simcard { get; set; } + + public string simstatus { get; set; } + + public string userid { get; set; } + + public string username { get; set; } + + public string cardpro { get; set; } + + [NotMapped] + public string cardproChs { get; set; } + + public DateTime? up_time { get; set; } + } + + [Table("t_sim_cost")] + public class SimCost + { + [Key] + public int id { get; set; } + + public string user_id { get; set; } + public string sim_id { get; set; } + + public int bill_year { get; set; } + public int bill_month { get; set; } + + /// <summary> + /// 鍙姤閲戦 + /// </summary> + public decimal allow_amount { get; set; } + /// <summary> + /// 璐﹀崟閲戦 + /// </summary> + public decimal bill_amount { get; set; } + /// <summary> + /// 宸紓閲戦 + /// </summary> + public decimal amount { get; set; } + /// <summary> + /// 璁拌处鏃ユ湡 + /// </summary> + public DateTime accounted_time { get; set; } + /// <summary> + /// 鐘舵�� + /// </summary> + public string status { get; set; } + + public string sub_userid { get; set; } + public DateTime up_time { get; set; } + public string audit_userid { get; set; } + public DateTime? audit_time { get; set; } + } + + [Table("v_sim_cost")] + public class SimCostView + { + [Key] + public int id { get; set; } + + public string user_id { get; set; } + + public string username { get; set; } + + public string sim_id { get; set; } + + public string simcard { get; set; } + + public int bill_year { get; set; } + public int bill_month { get; set; } + + /// <summary> + /// 鍙姤閲戦 + /// </summary> + public decimal allow_amount { get; set; } + + /// <summary> + /// 璐﹀崟閲戦 + /// </summary> + public decimal bill_amount { get; set; } + + public decimal amount { get; set; } + + /// <summary> + /// 璁拌处鏃ユ湡 + /// </summary> + public DateTime accounted_time { get; set; } + + /// <summary> + /// 鐘舵�� + /// </summary> + public string status { get; set; } + + public DateTime up_time { get; set; } + + [NotMapped] + public string accountMonth { + get + { + return bill_year + "-" + bill_month.ToString().PadLeft(2,'0'); + } + } + + [NotMapped] + public string statusChs + { + get + { + return status=="0"?"姝e父":"鍏宠处"; + } + } + } +} diff --git a/zhengcaioa/Model/zhengcaioaContext.cs b/zhengcaioa/Model/zhengcaioaContext.cs index be4dbef..09d641c 100644 --- a/zhengcaioa/Model/zhengcaioaContext.cs +++ b/zhengcaioa/Model/zhengcaioaContext.cs @@ -16,6 +16,12 @@ : base(options) { } + + public virtual DbSet<SimBind> SimBind { get; set; } + public virtual DbSet<SimBindView> SimBindView { get; set; } + public virtual DbSet<SimCost> SimCost { get; set; } + public virtual DbSet<SimCostView> SimCostView { get; set; } + public virtual DbSet<AdmAskLeave> AdmAskLeaves { get; set; } public virtual DbSet<AdmAskLeaveOff> AdmAskLeaveOffs { get; set; } public virtual DbSet<AdmAttendance> AdmAttendances { get; set; } diff --git a/zhengcaioa/Services/SimService.cs b/zhengcaioa/Services/SimService.cs new file mode 100644 index 0000000..5278ed0 --- /dev/null +++ b/zhengcaioa/Services/SimService.cs @@ -0,0 +1,337 @@ +锘縰sing AutoMapper; +using DTO; +using IServices; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using zhengcaioa.Models; + +namespace Services +{ + public class SimService :ISimService + { + private readonly zhengcaioaContext _context; + private readonly IMapper _mapper; + public SimService(zhengcaioaContext context, IMapper mapper) + { + _context = context; + _mapper = mapper; + } + + #region SIM 鍒嗛厤 + + /// <summary> + /// 淇濆瓨 + /// </summary> + /// <param name="md"></param> + /// <returns></returns> + public ResultEntity Save(SimBind md) + { + ResultEntity resultEntity = new ResultEntity(); + try + { + var temp = _context.SimBind.Where(e => e.sim_id == md.sim_id).SingleOrDefault(); + if(temp!=null) + { + var users = _context.SimBind.Where(c => c.user_id == md.user_id).ToList(); + if(users!=null) + { + foreach(var item in users) + { + item.user_id = ""; + item.up_time = DateTime.Now; + item.up_user = md.up_user; + } + } + temp.cardpro = md.cardpro; + temp.user_id = md.user_id; + temp.up_user = md.up_user; + temp.up_time = DateTime.Now; + } + else + { + md.up_time = DateTime.Now; + _context.SimBind.Add(md); + } + _context.SaveChanges(); + resultEntity.Result = true; + } + catch (Exception ex) + { + resultEntity.Result = false; + resultEntity.Message = "淇濆瓨澶辫触锛岃鑱旂郴绠$悊鍛�"; + ex.Message.ToString(); + } + return resultEntity; + } + + /// <summary> + /// 瑙g粦 + /// </summary> + /// <param name="ids"></param> + /// <returns></returns> + public ResultEntity UnBind(string ids,string user) + { + ResultEntity resultEntity = new ResultEntity(); + try + { + var temp = _context.SimBind.Where(e =>ids.Contains(e.sim_id)).ToList(); + if (temp != null) + { + foreach (var item in temp) + { + item.user_id = ""; + item.up_time = DateTime.Now; + item.up_user = user; + } + } + _context.SaveChanges(); + resultEntity.Result = true; + } + catch (Exception ex) + { + resultEntity.Result = false; + resultEntity.Message = "淇濆瓨澶辫触锛岃鑱旂郴绠$悊鍛�"; + ex.Message.ToString(); + } + return resultEntity; + } + + /// <summary> + /// 缁戝畾淇℃伅鏌ヨ + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public SimBindView Get(string id) + { + var entity = _context.SimBindView.Where(c=>c.Id==id).SingleOrDefault(); + if (entity == null) + { + entity = new SimBindView(); + } + return entity; + } + + /// <summary> + /// 鏌ヨ鍐呭 + /// </summary> + /// <param name="searchEntity"></param> + /// <returns></returns> + public ResultDataEntity<SimBindView> SearchByPaging(SimBindDTOSearch searchEntity) + { + ResultDataEntity<SimBindView> data = new ResultDataEntity<SimBindView>(); + try + { + var codedata= (from e in _context.SysCodes + join c in _context.SysCodeDtls + on e.Id equals c.CodeId + where e.RecStatus == "A" + && c.RecStatus == "A" + && e.CodeTable == "t_sim_bind" + && e.CodeField == "cardpro" + select c).OrderBy(x => x.Sort).ToList(); + + var dt = _context.SimBindView.OrderBy(c => c.simcard).ToList(); + if(!string.IsNullOrEmpty(searchEntity.simcard)) + { + dt = dt.Where(c => c.simcard.Contains(searchEntity.simcard)).ToList(); + } + if (!string.IsNullOrEmpty(searchEntity.username)) + { + dt = dt.Where(c => !string.IsNullOrEmpty(c.username) && c.username.Contains(searchEntity.username)).ToList(); + } + + if (searchEntity.totalrows == 0) + searchEntity.totalrows = dt.Count(); + + var signinList = dt.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList(); + + signinList= signinList.Select(a=> new SimBindView() + { + cardproChs = ToChs(a.cardpro, codedata), + Id = a.Id, + simcard = a.simcard, + simstatus = a.simstatus, + up_time = a.up_time, + username = a.username + }).ToList(); + + data.LoadData(searchEntity, signinList); + } + catch (Exception ex) + { + throw; + } + return data; + } + + private string ToChs(string key,List<SysCodeDtl> list) + { + string str = ""; + var item = list.Find(c => c.CodeSn == key); + if(item!=null) + { + str = item.Comments; + } + return str; + } + + #endregion + + #region 璐圭敤褰曞叆 + + /// <summary> + /// 鑾峰彇宸茬粦瀹氱殑鐢佃瘽鍗� + /// </summary> + /// <returns></returns> + public List<SimBindView> GetBindSim() + { + List<SimBindView> list = null; + try + { + list = _context.SimBindView.Where(c=>!string.IsNullOrEmpty(c.userid)).OrderBy(c => c.simcard).ToList(); + } + catch (Exception er) + { + throw; + } + return list; + } + + /// <summary> + /// 淇濆瓨 + /// </summary> + /// <param name="md"></param> + /// <returns></returns> + public ResultEntity SaveCost(SimCost md) + { + ResultEntity resultEntity = new ResultEntity(); + try + { + var temp = _context.SimCost.Where(e => e.id == md.id).SingleOrDefault(); + var tempBind = _context.SimBindView.Where(e => e.Id == md.sim_id).SingleOrDefault(); + if (temp != null && temp.status=="0") + { + temp.bill_amount = md.bill_amount; + temp.bill_month = md.accounted_time.Month; + temp.bill_year = md.accounted_time.Year; + temp.sub_userid = md.sub_userid; + temp.up_time = DateTime.Now; + if(tempBind!=null) + { + temp.allow_amount = decimal.Parse(tempBind.cardpro); + temp.user_id = tempBind.userid; + temp.amount = temp.allow_amount - temp.bill_amount > 0 ? 0 : temp.allow_amount - temp.bill_amount; + } + } + else + { + md.bill_month = md.accounted_time.Month; + md.bill_year = md.accounted_time.Year; + + //褰撴湀閲嶅鍒ゆ柇 + var monthck = _context.SimCost.Where(c => c.sim_id == md.sim_id && c.bill_year == md.bill_year && c.bill_month == md.bill_month).Count(); + if(monthck>0) + { + resultEntity.Result = false; + resultEntity.Message = string.Format("姝ょ數璇濆崱鍦╗{0}-{1}]鏈堝凡瀛樺湪璁板綍锛屼笉鑳介噸澶嶆坊鍔狅紱",md.bill_year,md.bill_month); + return resultEntity; + } + else + { + md.up_time = DateTime.Now; + md.status = "0"; + + if (tempBind != null) + { + md.allow_amount = decimal.Parse(tempBind.cardpro); + md.amount = md.allow_amount - md.bill_amount > 0 ? 0 : md.allow_amount - md.bill_amount; + md.user_id = tempBind.userid; + } + _context.SimCost.Add(md); + } + } + _context.SaveChanges(); + resultEntity.Result = true; + } + catch (Exception ex) + { + resultEntity.Result = false; + resultEntity.Message = "淇濆瓨澶辫触锛岃鑱旂郴绠$悊鍛�"; + ex.Message.ToString(); + } + return resultEntity; + } + + /// <summary> + /// 缁戝畾淇℃伅鏌ヨ + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public SimCost GetSimCost(int id) + { + var entity = _context.SimCost.Where(c => c.id == id).SingleOrDefault(); + if (entity == null) + { + entity = new SimCost(); + } + return entity; + } + + /// <summary> + /// 鏌ヨ鍐呭 + /// </summary> + /// <param name="searchEntity"></param> + /// <returns></returns> + public ResultDataEntity<SimCostView> SearchSimCostByPage(SimCostDTOSearch searchEntity) + { + ResultDataEntity<SimCostView> data = new ResultDataEntity<SimCostView>(); + try + { + var codedata = (from e in _context.SysCodes + join c in _context.SysCodeDtls + on e.Id equals c.CodeId + where e.RecStatus == "A" + && c.RecStatus == "A" + && e.CodeTable == "t_sim_bind" + && e.CodeField == "cardpro" + select c).OrderBy(x => x.Sort).ToList(); + + var dt = _context.SimCostView.OrderByDescending(c => c.accounted_time).ToList(); + if (!string.IsNullOrEmpty(searchEntity.searchtime)) + { + //dt = dt.Where(c => c.simcard.Contains(searchEntity.simcard)).ToList(); + } + if (!string.IsNullOrEmpty(searchEntity.searchsim)) + { + dt = dt.Where(c => !string.IsNullOrEmpty(c.simcard) && c.simcard.Contains(searchEntity.searchsim)).ToList(); + } + + if (searchEntity.totalrows == 0) + searchEntity.totalrows = dt.Count(); + + var signinList = dt.Skip((searchEntity.page - 1) * searchEntity.rows).Take(searchEntity.rows).ToList(); + + //signinList = signinList.Select(a => new SimBindView() + //{ + // cardproChs = ToChs(a.cardpro, codedata), + // Id = a.Id, + // simcard = a.simcard, + // simstatus = a.simstatus, + // up_time = a.up_time, + // username = a.username + //}).ToList(); + + data.LoadData(searchEntity, signinList); + } + catch (Exception ex) + { + throw; + } + return data; + } + + #endregion + } +} diff --git a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs index 5b531dd..94534d1 100644 --- a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs +++ b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs @@ -116,7 +116,6 @@ } - [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); diff --git a/zhengcaioa/zhengcaioa/Controllers/admin/SimController.cs b/zhengcaioa/zhengcaioa/Controllers/admin/SimController.cs new file mode 100644 index 0000000..adfd74c --- /dev/null +++ b/zhengcaioa/zhengcaioa/Controllers/admin/SimController.cs @@ -0,0 +1,125 @@ +锘縰sing DTO; +using IServices; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Transactions; +using zhengcaioa.IService; +using zhengcaioa.Models; + +namespace zhengcaioa.Controllers.admin +{ + [CheckLogin] + public class SimController : Controller + { + private readonly ILogger<SimController> _logger; + private readonly ILiaotianService _liaotianService; + private readonly IUserService _userService; + private readonly ISimService _simService; + + public SimController(ILogger<SimController> logger, IUserService userService, ILiaotianService liaotianService,ISimService simService) + { + _logger = logger; + _liaotianService = liaotianService; + _userService = userService; + _simService = simService; + } + + /// <summary> + /// 鍒楄〃椤� + /// </summary> + /// <returns></returns> + public IActionResult Index() + { + List<ActionEntity> actionlist = new List<ActionEntity>(); + ActionEntity actionEntity = new ActionEntity(); + actionEntity.OpenType = 0; + actionEntity.ActionUrl = ""; + actionEntity.ActionFun = "Search"; + actionEntity.PageIco = "fa fa-search"; + actionEntity.ActionName = "鏌ヨ"; + actionlist.Add(actionEntity); + + ActionEntity actionEntity1 = new ActionEntity(); + actionEntity1.OpenType = 0; + actionEntity1.ActionUrl = ""; + actionEntity1.ActionFun = "UnBind"; + actionEntity1.PageIco = "fa fa-remove"; + actionEntity1.ActionName = "鎵归噺瑙i櫎缁戝畾"; + actionlist.Add(actionEntity1); + + ViewData["ActionInfo"] = actionlist; + return View(); + } + + /// <summary> + /// 鍒楄〃鍐呭 + /// </summary> + /// <param name="search"></param> + /// <returns></returns> + public IActionResult GetList(SimBindDTOSearch search) + { + return new JsonResult(_simService.SearchByPaging(search)); + } + + /// <summary> + /// 缂栬緫椤� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public IActionResult Edit(string id) + { + ViewBag.CardPro = _liaotianService.GetSYScode("t_sim_bind", "cardpro"); + ViewData["users"] = _userService.GetList(); + SimBindView dto = new SimBindView(); + if (!string.IsNullOrEmpty(id)) + { + dto = _simService.Get(id); + } + ViewData.Model = dto; + return View(); + } + + /// <summary> + /// 淇濆瓨 + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + [HttpPost] + public IActionResult SaveSimBind(SimBind data) + { + var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); + ResultEntity resultEntity = new ResultEntity(); + using (TransactionScope scope = new TransactionScope()) + { + data.up_user = curentuser.Id; + resultEntity = _simService.Save(data); + scope.Complete(); + } + return new JsonResult(resultEntity); + } + + /// <summary> + /// 瑙g粦 + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + [HttpPost] + public JsonResult UnBindSim(string id) + { + var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); + ResultEntity resultEntity = new ResultEntity(); + using (TransactionScope scope = new TransactionScope()) + { + resultEntity = _simService.UnBind(id,curentuser.Id); + scope.Complete(); + } + return new JsonResult(resultEntity); + } + } +} diff --git a/zhengcaioa/zhengcaioa/Controllers/admin/SimCostController.cs b/zhengcaioa/zhengcaioa/Controllers/admin/SimCostController.cs new file mode 100644 index 0000000..507c37a --- /dev/null +++ b/zhengcaioa/zhengcaioa/Controllers/admin/SimCostController.cs @@ -0,0 +1,134 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Transactions; +using DTO; +using IServices; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using zhengcaioa.IService; +using zhengcaioa.Models; + +namespace zhengcaioa.Controllers.admin +{ + [CheckLogin] + public class SimCostController : Controller + { + private readonly ILogger<SimController> _logger; + private readonly ILiaotianService _liaotianService; + private readonly IUserService _userService; + private readonly ISimService _simService; + + public SimCostController(ILogger<SimController> logger, IUserService userService, ILiaotianService liaotianService, ISimService simService) + { + _logger = logger; + _liaotianService = liaotianService; + _userService = userService; + _simService = simService; + } + + /// <summary> + /// 鍒楄〃椤� + /// </summary> + /// <returns></returns> + public IActionResult Index() + { + List<ActionEntity> actionlist = new List<ActionEntity>(); + ActionEntity actionEntity = new ActionEntity(); + actionEntity.OpenType = 0; + actionEntity.ActionUrl = ""; + actionEntity.ActionFun = "Search"; + actionEntity.PageIco = "fa fa-search"; + actionEntity.ActionName = "鏌ヨ"; + actionlist.Add(actionEntity); + + ActionEntity actionEntity1 = new ActionEntity(); + actionEntity1.OpenType = 0; + actionEntity1.ActionUrl = ""; + actionEntity1.ActionFun = "Add"; + actionEntity1.PageIco = "fa fa-plus"; + actionEntity1.ActionName = "鏂板"; + actionlist.Add(actionEntity1); + + + //ActionEntity actionEntity4 = new ActionEntity(); + //actionEntity4.OpenType = 0; + //actionEntity4.ActionUrl = ""; + //actionEntity4.ActionFun = "UnBind"; + //actionEntity4.PageIco = "fa fa-remove"; + //actionEntity4.ActionName = "鎵归噺鍒犻櫎"; + //actionlist.Add(actionEntity4); + + ViewData["ActionInfo"] = actionlist; + return View(); + } + + /// <summary> + /// 鍒楄〃鍐呭 + /// </summary> + /// <param name="search"></param> + /// <returns></returns> + public IActionResult GetList(SimCostDTOSearch search) + { + return new JsonResult(_simService.SearchSimCostByPage(search)); + } + + /// <summary> + /// 缂栬緫椤� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public IActionResult Edit(string id=null) + { + ViewBag.SimCard = _simService.GetBindSim(); + SimCost dto = new SimCost(); + dto.accounted_time = DateTime.Now; + if (!string.IsNullOrEmpty(id)) + { + dto = _simService.GetSimCost(int.Parse(id)); + } + ViewData.Model = dto; + return View(); + } + + /// <summary> + /// 淇濆瓨 + /// </summary> + /// <param name="data"></param> + /// <returns></returns> + [HttpPost] + public IActionResult SaveSimCost(SimCost data) + { + var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); + ResultEntity resultEntity = new ResultEntity(); + using (TransactionScope scope = new TransactionScope()) + { + data.sub_userid = curentuser.Id; + resultEntity = _simService.SaveCost(data); + scope.Complete(); + } + return new JsonResult(resultEntity); + } + + ///// <summary> + ///// 瑙g粦 + ///// </summary> + ///// <param name="id"></param> + ///// <returns></returns> + //[HttpPost] + //public JsonResult UnBindSim(string id) + //{ + // var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); + // ResultEntity resultEntity = new ResultEntity(); + // using (TransactionScope scope = new TransactionScope()) + // { + // resultEntity = _simService.UnBind(id, curentuser.Id); + // scope.Complete(); + // } + // return new JsonResult(resultEntity); + //} + } +} diff --git a/zhengcaioa/zhengcaioa/Properties/PublishProfiles/FolderProfile.pubxml.user b/zhengcaioa/zhengcaioa/Properties/PublishProfiles/FolderProfile.pubxml.user index c5829ff..3b7fd30 100644 --- a/zhengcaioa/zhengcaioa/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/zhengcaioa/zhengcaioa/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -5,5 +5,6 @@ <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <_PublishTargetUrl>D:\netcoreapp3.1\publish\</_PublishTargetUrl> + <History>True|2021-06-18T02:23:47.0862716Z;</History> </PropertyGroup> </Project> \ No newline at end of file diff --git a/zhengcaioa/zhengcaioa/Startup.cs b/zhengcaioa/zhengcaioa/Startup.cs index 182d1fc..103fb08 100644 --- a/zhengcaioa/zhengcaioa/Startup.cs +++ b/zhengcaioa/zhengcaioa/Startup.cs @@ -68,8 +68,11 @@ var connectionString = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<zhengcaioaContext>(options => - options.UseSqlServer(connectionString)); + options.UseSqlServer(connectionString)); services.AddControllersWithViews(); + + services.AddScoped(typeof(ISimService), typeof(SimService)); + services.AddScoped(typeof(IUserService), typeof(UserService)); services.AddScoped(typeof(ILiaotianService), typeof(LiaotianService)); services.AddScoped(typeof(IProjectService), typeof(ProjectService)); diff --git a/zhengcaioa/zhengcaioa/Views/Area/Index.cshtml b/zhengcaioa/zhengcaioa/Views/Area/Index.cshtml index a6d3e0a..4db7df2 100644 --- a/zhengcaioa/zhengcaioa/Views/Area/Index.cshtml +++ b/zhengcaioa/zhengcaioa/Views/Area/Index.cshtml @@ -19,13 +19,8 @@ ]; dataUrl = "/Area/GetList"; searchCol = [ - - - { label: '鍖哄煙鍚�', name: 'Name', labtype: 'txt', hidden: false }, { label: '鐖跺尯鍩熷悕', name: 'ParentName', labtype: 'txt', hidden: false }, - - ]; var _pageAdd = function () { OpenWindow("鏂板鍖哄煙", "98%", "90%", "/Area/Edit/"); diff --git a/zhengcaioa/zhengcaioa/Views/Shared/_Layout.cshtml b/zhengcaioa/zhengcaioa/Views/Shared/_Layout.cshtml index cc1b319..eb8e61e 100644 --- a/zhengcaioa/zhengcaioa/Views/Shared/_Layout.cshtml +++ b/zhengcaioa/zhengcaioa/Views/Shared/_Layout.cshtml @@ -36,6 +36,7 @@ <link href="~/css/animate.min.css" rel="stylesheet"> <link href="~/css/style.min.css?v=6" rel="stylesheet"> <link href="~/css/plugins/toastr/toastr.min.css" rel="stylesheet"> + </head> <body class="fixed-sidebar full-height-layout gray-bg" style="overflow: hidden"> <div id="wrapper"> @@ -55,7 +56,7 @@ @*@RenderPage("_Layout_Footer.cshtml")*@ @RenderBody() </div> - + <a id="aFlowLink" class="J_menuItem" href="" data-index="0" style="display:none;"></a> @@ -71,7 +72,7 @@ <script src="~/js/plugins/pace/pace.min.js" type="text/javascript"></script> <script src="~/js/plugins/toastr/toastr.min.js" type="text/javascript"></script> <script src="~/js/common-layout.js" type="text/javascript"></script> - <script src="~/js/datehelper.js"></script> + <script src="~/js/datehelper.js"></script> <script type="text/javascript"> @@ -124,7 +125,7 @@ var timerId; // 瀹氭椂鍣╥d var isLock = false; // 鏄惁閿佸畾 - + // 閫�鍑� var logout = function () { if (isLock) { @@ -181,7 +182,7 @@ }) - + function _CloseTab1(taburl) { diff --git a/zhengcaioa/zhengcaioa/Views/Sim/Edit.cshtml b/zhengcaioa/zhengcaioa/Views/Sim/Edit.cshtml new file mode 100644 index 0000000..ac486f9 --- /dev/null +++ b/zhengcaioa/zhengcaioa/Views/Sim/Edit.cshtml @@ -0,0 +1,219 @@ +锘緻model SimBindView; +@using DTO; +@using zhengcaioa.Models; +@{ + Layout = null; + List<SysCodeDtl> CardPro = ViewData["CardPro"] as List<SysCodeDtl>; //鐢佃瘽琛ヨ创 + List<PltUserDTO> users = ViewData["users"] as List<PltUserDTO>; +} + +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> + <meta name="description" content=""> + <meta name="author" content="ThemeBucket"> + <title>@(SiteConfig.SiteName)</title> + <link href="~/css/bootstrap.min.css" rel="stylesheet"> + <link href="~/css/font-awesome.min.css" rel="stylesheet"> + <link href="~/css/animate.min.css" rel="stylesheet"> + <link href="~/css/style.min.css" rel="stylesheet"> + <link href="~/css/plugins/chosen/chosen.css" rel="stylesheet"> + <link href="~/js/plugins/layer/skin/layer.css" rel="stylesheet"> + <link href="~/css/style.min.css" rel="stylesheet"> + <link href="~/css/plugins/toastr/toastr.min.css" rel="stylesheet" /> + <link href="~/css/plugins/webuploader/webuploader.css" rel="stylesheet" /> + + <!-- jqgrid--> + <script language="javascript" src="~/js/jquery.min.js" type="text/javascript"></script> + <script src="~/js/bootstrap.min.js"></script> + + <!--瀹瑰櫒--> + <script language="javascript" src="~/js/plugins/chosen/chosen.jquery.js" type="text/javascript"></script> + <script language="javascript" src="~/js/plugins/layer/layer.js" type="text/javascript"></script> + <script src="~/js/plugins/toastr/toastr.min.js" type="text/javascript"></script> + <script language="javascript" src="~/js/common-layout.js" type="text/javascript"></script> + <script src="~/js/plugins/layer/laydate/laydate.js" type="text/javascript"></script> + <script src="~/js/TUJS.js"></script> + + <style type="text/css"> + + div.clearfix > label { + padding-top: 8px; + } + + .col-md-1.control-label { + padding-right: 0px; + font-weight: 400; + } + </style> + + +</head> + +<body class="gray-bg" style="overflow:auto"> + <form id="fm" method="post"> + <div class="wrapper wrapper-content" id="ibox-content" style="padding:15px;"> + <div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <div class="ibox-title"> + <h5><i class="fa fa-list"></i> 鐢佃瘽鍗″垎閰�</h5> + </div> + <div id="div_content" class="ibox-content" style="background-color:white;"> + <div class="row"> + <div class="clearfix layer-area" style="padding-bottom:15px;"> + <label class="text-right col-sm-1 col-md-1 control-label">鐢佃瘽鍗�</label> + <div class="col-sm-2 col-md-2"> + <input class="form-control" labtype="txt" addvisible="true" editvisible="true" readonly="readonly" maxlength="500" reg="" ismust="true" type="text" value="@Model.simcard"> + <input type="hidden" name="sim_id" value="@Model.Id" /> + </div> + </div> + <div class="clearfix layer-area" style="padding-bottom:15px;"> + + <label class="text-right col-sm-1 col-md-1 control-label">浣跨敤鍛樺伐<i class="red">*</i></label> + <div class="col-sm-2 col-md-2"> + <select id="cbbUser" class="data form-control" name="user_id" data-placeholder="閫夋嫨 搴忓垪 ..."> + <option value="" hassubinfo="true">璇烽�夋嫨</option> + @foreach (var item in users) + { + @if (!item.Id.Equals(Model.userid)) + { + <option value="@item.Id" hassubinfo="true"> + @item.UserName + </option> + } + else + { + <option value="@item.Id" hassubinfo="true" selected="selected"> + @item.UserName + </option> + } + } + </select> + </div> + </div> + <div class="clearfix layer-area" style="padding-bottom:15px;"> + + <label class="text-right col-sm-1 col-md-1 control-label">鐢佃瘽琛ヨ创<i class="red">*</i></label> + <div class="col-sm-2 col-md-2"> + <select id="cbbDhbt" class="data form-control" name="cardpro" data-placeholder="閫夋嫨 搴忓垪 ..."> + <option value="" hassubinfo="true">璇烽�夋嫨</option> + @foreach (var item in CardPro) + { + @if (!item.CodeSn.Equals(Model.cardpro)) + { + <option value="@item.CodeSn" hassubinfo="true"> + @item.Comments + </option> + } + else + { + <option value="@item.CodeSn" hassubinfo="true" selected="selected"> + @item.Comments + </option> + } + } + </select> + + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <div class="ibox-content" id="top" style="z-index:100; position:fixed; height:50px; width:100%;bottom:0; text-align: right; padding-top:8px "> + <div class="" style="float:right;" data-bootstro-width="500px" data-bootstro-content="鍔熻兘鎸夐挳锛氣�滀繚瀛樷�濓紝鈥滃彇娑堚��"> + <a class="btn btn-success" href="javascript:void(0)" onclick="_pageAutoClose();" style="margin-left:4px; border-radius:4px;"> + <i class="glyphicon glyphicon-remove"></i> <span class="bold">鍙栨秷</span> + </a> + <a class="btn btn-success" href="javascript:void(0)" onclick="saveSim();" style="margin-left:4px; border-radius:4px;"> + <i class="glyphicon glyphicon-ok"></i> <span class="bold">鎻愪氦</span> + </a> + </div> + </div> + + </form> + + <script type="text/javascript"> + $(function () { + + $("#cbbUser").chosen(); + + }); + + var hh = document.body.clientHeight - $('.ibox-title').height() - $("#top").height() * 2 - 95; + $("#div_content").height(hh); + + toastr.options = { + "closeButton": true, + "debug": false, + "progressBar": true, + "positionClass": "toast-bottom-right", + "onclick": null, + "showDuration": "300", + "hideDuration": "600", + "timeOut": "4500", + "extendedTimeOut": "600", + "showEasing": "swing", + "hideEasing": "linear", + "showMethod": "fadeIn", + "hideMethod": "fadeOut" + }; + + // 淇濆瓨 + function saveSim() { + + if ($("#cbbUser").val() == '') { + toastr.warning("浣跨敤浜哄憳涓嶈兘涓虹┖"); + return; + } + if ($("#cbbDhbt").val() == '') { + toastr.warning("鐢佃瘽琛ヨ创涓嶈兘涓虹┖"); + return; + } + + $.ajax({ + type: "POST", + url: "/Sim/SaveSimBind", + dataType: "json", + global: false, + data: $('#fm').serialize(), + success: function (data) { + + if (data.Result) { + parent.layer.msg('璁剧疆鎴愬姛', { icon: 6 }); + try { + _pageAutoClose();//鑷姩鍏抽棴椤甸潰鏂规硶 + } + catch (err) { + parent._CloseTab1("/Sim/Edit/"); + } + } + else { + // toastr.error("澶辫触"); + parent.layer.msg(data.Message, { icon: 5 }); + } + + }, + error: function () { + parent.layer.msg('澶辫触', { icon: 5 }); + } + }); + } + + + function _pageAutoClose() { + parent.window._reloadPageData(); + var index = parent.layer.getFrameIndex(window.name); + parent.layer.isRefresh = true; + parent.layer.closeAll('loading'); + parent.layer.close(index); + return false; + } + </script> +</body> +</html> \ No newline at end of file diff --git a/zhengcaioa/zhengcaioa/Views/Sim/Index.cshtml b/zhengcaioa/zhengcaioa/Views/Sim/Index.cshtml new file mode 100644 index 0000000..fc36a1c --- /dev/null +++ b/zhengcaioa/zhengcaioa/Views/Sim/Index.cshtml @@ -0,0 +1,98 @@ +锘緻{ + ViewBag.Title = "鐢佃瘽鍗″垎閰�"; + Layout = "~/Views/Shared/_Layout_Search.cshtml"; +} + +<link href="~/css/jquery-confirm.css" rel="stylesheet"> +<script src="~/js/jquery-confirm.js" type="text/javascript"></script> + +@section headerStyle{ + + <script type="text/javascript"> + + gridConfig = { multiselect: true, selectcol: "Id" }; + dataCol = [ + { label: 'id', name: 'Id', labtype: 'txt', hidden: true }, + { + label: '鐢佃瘽鍗″彿', name: 'simcard', labtype: 'txt', hidden: false, width: 150, + formatter: function (cellvalue, options, rowObject) { + return "<a onclick=\"OpenWindow('" + cellvalue.replace(/'/g, '') + "','98%','100%', '/Sim/Edit?id=" + rowObject.Id + "')\" >" + cellvalue + "</a>"; + } + }, + { label: '浣跨敤浜哄憳', name: 'username', labtype: 'txt', hidden: false, width: 150 }, + { label: '鐢佃瘽琛ヨ创', name: 'cardproChs', labtype: 'txt', hidden: false, width: 100 }, + { label: '鏇存柊鏃ユ湡', name: 'up_time', labtype: 'txt', hidden: false, width: 150 }, + ]; + dataUrl = "/Sim/GetList"; + searchCol = [ + { label: '鐢佃瘽鍗″彿', name: 'simcard', labtype: 'txt', hidden: false, cwidth: '5%', cccwidth: '8%' }, + { label: '浣跨敤浜哄憳', name: 'username', labtype: 'txt', hidden: false, cwidth: '5%', cccwidth: '8%' }, + ]; + + var _pageUnBind = function () { + var db = jQuery('#jqGrid').jqGrid('getGridParam', 'selarrrow'); + if (db.length > 0) { + $.confirm({ + title: '瑙i櫎缁戝畾鎿嶄綔纭', + content: '姝ゆ搷浣滃皢瑙i櫎鎵�閫夊畾鐢佃瘽鍗″拰浜哄憳缁戝畾鍏崇郴锛岀‘璁よ缁х画鍚�?', + type: 'green', + icon: 'glyphicon glyphicon-question-sign', + buttons: { + ok: { + text: '纭', + btnClass: 'btn-primary', + action: function () { + $.ajax({ + type: "POST", + url: "/Sim/UnBindSim?id="+db, + dataType: "json", + global: false, + success: function (data) { + + if (data.Result) { + jQuery('#jqGrid').jqGrid().trigger('reloadGrid'); + + parent.layer.msg('璁剧疆鎴愬姛', { icon: 6 }); + } + else { + parent.layer.msg(data.Message, { icon: 5 }); + } + }, + error: function () { + parent.layer.msg('澶辫触', { icon: 5 }); + } + }); + } + }, + cancel: { + text: '鍙栨秷', + btnClass: 'btn-primary' + } + } + }); + } + else { + $.alert("璇峰厛閫夋嫨闇�瑕佽В缁戠殑鐢佃瘽鍗★紒"); + } + + } + + var _afterSave = function (result) { + if (result) { + toastr.success("淇濆瓨鎴愬姛"); + } else { + toastr.error("淇濆瓨澶辫触"); + } + } + + var _afterDel = function (result) { + if (result) { + toastr.success("鍒犻櫎鎴愬姛"); + } else { + /**/ + toastr.error("鍒犻櫎鎴愬姛"); + /**/ + } + } + </script> +} diff --git a/zhengcaioa/zhengcaioa/Views/SimCost/Edit.cshtml b/zhengcaioa/zhengcaioa/Views/SimCost/Edit.cshtml new file mode 100644 index 0000000..d419797 --- /dev/null +++ b/zhengcaioa/zhengcaioa/Views/SimCost/Edit.cshtml @@ -0,0 +1,200 @@ +锘緻model SimCost; +@using DTO; +@using zhengcaioa.Models; +@{ + Layout = null; + List<SimBindView> Card = ViewData["SimCard"] as List<SimBindView>; +} + +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> + <meta name="description" content=""> + <meta name="author" content="ThemeBucket"> + <link href="~/css/bootstrap.min.css" rel="stylesheet"> + <link href="~/css/font-awesome.min.css" rel="stylesheet"> + <link href="~/css/animate.min.css" rel="stylesheet"> + <link href="~/css/style.min.css" rel="stylesheet"> + <link href="~/css/plugins/chosen/chosen.css" rel="stylesheet"> + <link href="~/js/plugins/layer/skin/layer.css" rel="stylesheet"> + <link href="~/css/style.min.css" rel="stylesheet"> + <link href="~/css/plugins/toastr/toastr.min.css" rel="stylesheet" /> + + <!-- jqgrid--> + <script language="javascript" src="~/js/jquery.min.js" type="text/javascript"></script> + <script src="~/js/bootstrap.min.js"></script> + + <!--瀹瑰櫒--> + <script language="javascript" src="~/js/plugins/chosen/chosen.jquery.js" type="text/javascript"></script> + <script language="javascript" src="~/js/plugins/layer/layer.js" type="text/javascript"></script> + <script src="~/js/plugins/toastr/toastr.min.js" type="text/javascript"></script> + <script language="javascript" src="~/js/common-layout.js" type="text/javascript"></script> + <script src="~/js/plugins/layer/laydate/laydate.js" type="text/javascript"></script> + <script src="~/js/TUJS.js"></script> + + <style type="text/css"> + + div.clearfix > label { + padding-top: 8px; + } + + .col-md-1.control-label { + padding-right: 0px; + font-weight: 400; + } + </style> + + +</head> + +<body class="gray-bg" style="overflow:auto"> + <form id="fm" method="post"> + <div class="wrapper wrapper-content" id="ibox-content" style="padding:15px;"> + <div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <div id="div_content" class="ibox-content" style="background-color:white;"> + <div class="row"> + <div class="clearfix layer-area" style="padding-bottom:15px;"> + <label class="text-right col-sm-1 col-md-1 control-label">鐢佃瘽鍗″彿<i class="red">*</i></label> + <div class="col-sm-2 col-md-2"> + <select id="cbbCard" class="data form-control" name="sim_id" data-placeholder="閫夋嫨 搴忓垪 ..."> + <option value="" hassubinfo="true">璇烽�夋嫨</option> + @foreach (var item in Card) + { + @if (!item.Id.Equals(Model.sim_id)) + { + <option value="@item.Id" hassubinfo="true"> + @item.simcard + </option> + } + else + { + <option value="@item.Id" hassubinfo="true" selected="selected"> + @item.simcard + </option> + } + } + </select> + <input type="hidden" name="id" value="@Model.id" /> + </div> + </div> + <div class="clearfix layer-area" style="padding-bottom:15px;"> + <label class="text-right col-sm-1 col-md-1 control-label">瀹為檯鐢佃瘽璐圭敤<i class="red">*</i></label> + <div class="col-sm-2 col-md-2"> + <input id="billamount" class="form-control" label="钖祫寰呴亣" name="bill_amount" labtype="txt" addvisible="true" maxlength="500" editvisible="true" reg="" ismust="true" type="text" value="@Model.bill_amount" oninput="if(value.length>4)value=value.slice(0,10)" onkeyup="value=value.toString().match(/^\d+(?:\.\d{0,2})?/)"> + </div> + </div> + <div class="clearfix layer-area" style="padding-bottom:15px;"> + + <label class="text-right col-sm-1 col-md-1 control-label">璐圭敤璁拌处鏃ユ湡<i class="red">*</i></label> + <div class="col-sm-2 col-md-2"> + <input id="acTime" class="form-control" name="accounted_time" labtype="txt" addvisible="true" editvisible="true" reg="" ismust="true" type="text" value="@Model.accounted_time.ToString("yyyy/MM/dd")" > + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + <div class="ibox-content" id="top" style="z-index:100; position:fixed; height:50px; width:100%;bottom:0; text-align: right; padding-top:8px "> + <div class="" style="float:right;" data-bootstro-width="500px" data-bootstro-content="鍔熻兘鎸夐挳锛氣�滀繚瀛樷�濓紝鈥滃彇娑堚��"> + <a class="btn btn-success" href="javascript:void(0)" onclick="_pageAutoClose();" style="margin-left:4px; border-radius:4px;"> + <i class="glyphicon glyphicon-remove"></i> <span class="bold">鍙栨秷</span> + </a> + <a class="btn btn-success" href="javascript:void(0)" onclick="saveSimCost();" style="margin-left:4px; border-radius:4px;"> + <i class="glyphicon glyphicon-ok"></i> <span class="bold">淇濆瓨</span> + </a> + </div> + </div> + + </form> + + <script type="text/javascript"> + $(function () { + + $("#cbbCard").chosen(); + + laydate({ elem: "#acTime", format: 'YYYY/MM/DD', istime: false, event: "focus" }); + + }); + + var hh = document.body.clientHeight - $('.ibox-title').height() - $("#top").height() * 2 - 95; + $("#div_content").height(hh); + + toastr.options = { + "closeButton": true, + "debug": false, + "progressBar": true, + "positionClass": "toast-bottom-right", + "onclick": null, + "showDuration": "300", + "hideDuration": "600", + "timeOut": "4500", + "extendedTimeOut": "600", + "showEasing": "swing", + "hideEasing": "linear", + "showMethod": "fadeIn", + "hideMethod": "fadeOut" + }; + + // 淇濆瓨 + function saveSimCost() { + + if ($("#cbbCard").val() == '') { + toastr.warning("鐢佃瘽鍗″彿涓嶈兘涓虹┖"); + return; + } + if ($("#billamount").val() == '') { + toastr.warning("瀹為檯鐢佃瘽璐圭敤涓嶈兘涓虹┖"); + return; + } + if ($("#acTime").val() == '') { + toastr.warning("璐圭敤璁拌处鏃ユ湡涓嶈兘涓虹┖"); + return; + } + + $.ajax({ + type: "POST", + url: "/SimCost/SaveSimCost", + dataType: "json", + global: false, + data: $('#fm').serialize(), + success: function (data) { + + if (data.Result) { + parent.layer.msg('璁剧疆鎴愬姛', { icon: 6 }); + try { + _pageAutoClose();//鑷姩鍏抽棴椤甸潰鏂规硶 + } + catch (err) { + parent._CloseTab1("/SimCost/Edit/"); + } + } + else { + // toastr.error("澶辫触"); + parent.layer.msg(data.Message, { icon: 5 }); + } + + }, + error: function () { + parent.layer.msg('澶辫触', { icon: 5 }); + } + }); + } + + + function _pageAutoClose() { + parent.window._reloadPageData(); + var index = parent.layer.getFrameIndex(window.name); + parent.layer.isRefresh = true; + parent.layer.closeAll('loading'); + parent.layer.close(index); + return false; + } + </script> +</body> +</html> \ No newline at end of file diff --git a/zhengcaioa/zhengcaioa/Views/SimCost/Index.cshtml b/zhengcaioa/zhengcaioa/Views/SimCost/Index.cshtml new file mode 100644 index 0000000..72d4b9a --- /dev/null +++ b/zhengcaioa/zhengcaioa/Views/SimCost/Index.cshtml @@ -0,0 +1,106 @@ +锘緻{ + ViewBag.Title = "鐢佃瘽璐瑰綍鍏�"; + Layout = "~/Views/Shared/_Layout_Search.cshtml"; +} + +<link href="~/css/jquery-confirm.css" rel="stylesheet"> +<script src="~/js/jquery-confirm.js" type="text/javascript"></script> + +@section headerStyle{ + + <script type="text/javascript"> + + gridConfig = { multiselect: false, selectcol: "id" }; + dataCol = [ + { label: '搴忓彿', name: 'id', labtype: 'txt', hidden: false, width: 50 }, + { label: '璐﹀崟鏃ユ湡', name: 'accountMonth', labtype: 'txt', hidden: false, width: 150 }, + { + label: '鐢佃瘽鍗″彿', name: 'simcard', labtype: 'txt', hidden: false, width: 150, + formatter: function (cellvalue, options, rowObject) { + return "<a onclick=\"OpenWindow('缂栬緫鐢佃瘽璐圭敤','98%','90%', '/SimCost/Edit?id=" + rowObject.id + "')\" >" + cellvalue + "</a>"; + } + }, + { label: '浣跨敤浜哄憳', name: 'username', labtype: 'txt', hidden: false, width: 150 }, + { label: '鐢佃瘽鍗曢噾棰�', name: 'bill_amount', labtype: 'txt', hidden: false, width: 100 }, + { label: '鐢佃瘽琛ヨ创閲戦', name: 'allow_amount', labtype: 'txt', hidden: false, width: 100 }, + { label: '宸紓閲戦', name: 'amount', labtype: 'txt', hidden: false, width: 100 }, + { label: '鐘舵��', name: 'statusChs', labtype: 'txt', hidden: false, width: 100 }, + { label: '鏇存柊鏃ユ湡', name: 'up_time', labtype: 'txt', hidden: false }, + ]; + dataUrl = "/SimCost/GetList"; + searchCol = [ + { label: '鏃堕棿', name: 'searchtime', labtype: 'datearea', hidden: false }, + { label: '鐢佃瘽鍗″彿', name: 'searchsim', labtype: 'txt', hidden: false, cwidth: '5%', cccwidth: '8%' } + ]; + + var _pageAdd = function () { + OpenWindow("鏂板鐢佃瘽璐圭敤", "98%", "90%", "/SimCost/Edit/"); + } + + var _pageUnBind = function () { + var db = jQuery('#jqGrid').jqGrid('getGridParam', 'selarrrow'); + if (db.length > 0) { + $.confirm({ + title: '瑙i櫎缁戝畾鎿嶄綔纭', + content: '姝ゆ搷浣滃皢瑙i櫎鎵�閫夊畾鐢佃瘽鍗″拰浜哄憳缁戝畾鍏崇郴锛岀‘璁よ缁х画鍚�?', + type: 'green', + icon: 'glyphicon glyphicon-question-sign', + buttons: { + ok: { + text: '纭', + btnClass: 'btn-primary', + action: function () { + $.ajax({ + type: "POST", + url: "/Sim/UnBindSim?id="+db, + dataType: "json", + global: false, + success: function (data) { + + if (data.Result) { + jQuery('#jqGrid').jqGrid().trigger('reloadGrid'); + + parent.layer.msg('璁剧疆鎴愬姛', { icon: 6 }); + } + else { + parent.layer.msg(data.Message, { icon: 5 }); + } + }, + error: function () { + parent.layer.msg('澶辫触', { icon: 5 }); + } + }); + } + }, + cancel: { + text: '鍙栨秷', + btnClass: 'btn-primary' + } + } + }); + } + else { + $.alert("璇峰厛閫夋嫨闇�瑕佽В缁戠殑鐢佃瘽鍗★紒"); + } + + } + + var _afterSave = function (result) { + if (result) { + toastr.success("淇濆瓨鎴愬姛"); + } else { + toastr.error("淇濆瓨澶辫触"); + } + } + + var _afterDel = function (result) { + if (result) { + toastr.success("鍒犻櫎鎴愬姛"); + } else { + /**/ + toastr.error("鍒犻櫎鎴愬姛"); + /**/ + } + } + </script> +} diff --git a/zhengcaioa/zhengcaioa/Views/User/Edit.cshtml b/zhengcaioa/zhengcaioa/Views/User/Edit.cshtml index fc4109c..086ae78 100644 --- a/zhengcaioa/zhengcaioa/Views/User/Edit.cshtml +++ b/zhengcaioa/zhengcaioa/Views/User/Edit.cshtml @@ -11,8 +11,6 @@ List<SysCodeDtl> isMaryed = ViewBag.isMaryed as List<SysCodeDtl>; //濠氬Щ鐘跺喌 - - List<PltJiatingchengyuanDTO> pltJiatingchengyuanDTOs = Model.pltJiatingchengyuanDTOs; diff --git a/zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.css b/zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.css new file mode 100644 index 0000000..055743f --- /dev/null +++ b/zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.css @@ -0,0 +1,1140 @@ +/*! + * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/) + * Author: boniface pereira + * Website: www.craftpip.com + * Contact: hey@craftpip.com + * + * Copyright 2013-2019 jquery-confirm + * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) + */ +@-webkit-keyframes jconfirm-spin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes jconfirm-spin { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +body[class*=jconfirm-no-scroll-] { + overflow: hidden !important; +} + +.jconfirm { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 99999999; + font-family: inherit; + overflow: hidden; +} + +.jconfirm .jconfirm-bg { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + -webkit-transition: opacity .4s; + transition: opacity .4s; +} + +.jconfirm .jconfirm-bg.jconfirm-bg-h { + opacity: 0 !important; +} + +.jconfirm .jconfirm-scrollpane { + -webkit-perspective: 500px; + perspective: 500px; + -webkit-perspective-origin: center; + perspective-origin: center; + display: table; + width: 100%; + height: 100%; +} + +.jconfirm .jconfirm-row { + display: table-row; + width: 100%; +} + +.jconfirm .jconfirm-cell { + display: table-cell; + vertical-align: middle; +} + +.jconfirm .jconfirm-holder { + max-height: 100%; + padding: 50px 0; +} + +.jconfirm .jconfirm-box-container { + -webkit-transition: -webkit-transform; + transition: -webkit-transform; + transition: transform; + transition: transform, -webkit-transform; +} + +.jconfirm .jconfirm-box-container.jconfirm-no-transition { + -webkit-transition: none !important; + transition: none !important; +} + +.jconfirm .jconfirm-box { + background: white; + border-radius: 4px; + position: relative; + outline: none; + padding: 15px 15px 0; + overflow: hidden; + margin-left: auto; + margin-right: auto; +} + +@-webkit-keyframes type-blue { + 1%, + 100% { + border-color: #3498db; + } + 50% { + border-color: #5faee3; + } +} + +@keyframes type-blue { + 1%, + 100% { + border-color: #3498db; + } + 50% { + border-color: #5faee3; + } +} + +@-webkit-keyframes type-green { + 1%, + 100% { + border-color: #2ecc71; + } + 50% { + border-color: #54d98c; + } +} + +@keyframes type-green { + 1%, + 100% { + border-color: #2ecc71; + } + 50% { + border-color: #54d98c; + } +} + +@-webkit-keyframes type-red { + 1%, + 100% { + border-color: #e74c3c; + } + 50% { + border-color: #ed7669; + } +} + +@keyframes type-red { + 1%, + 100% { + border-color: #e74c3c; + } + 50% { + border-color: #ed7669; + } +} + +@-webkit-keyframes type-orange { + 1%, + 100% { + border-color: #f1c40f; + } + 50% { + border-color: #f4d03f; + } +} + +@keyframes type-orange { + 1%, + 100% { + border-color: #f1c40f; + } + 50% { + border-color: #f4d03f; + } +} + +@-webkit-keyframes type-purple { + 1%, + 100% { + border-color: #9b59b6; + } + 50% { + border-color: #b07cc6; + } +} + +@keyframes type-purple { + 1%, + 100% { + border-color: #9b59b6; + } + 50% { + border-color: #b07cc6; + } +} + +@-webkit-keyframes type-dark { + 1%, + 100% { + border-color: #34495e; + } + 50% { + border-color: #46627f; + } +} + +@keyframes type-dark { + 1%, + 100% { + border-color: #34495e; + } + 50% { + border-color: #46627f; + } +} + +.jconfirm .jconfirm-box.jconfirm-type-animated { + -webkit-animation-duration: 2s; + animation-duration: 2s; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +.jconfirm .jconfirm-box.jconfirm-type-blue { + border-top: solid 7px #3498db; + -webkit-animation-name: type-blue; + animation-name: type-blue; +} + +.jconfirm .jconfirm-box.jconfirm-type-green { + border-top: solid 7px #2ecc71; + -webkit-animation-name: type-green; + animation-name: type-green; +} + +.jconfirm .jconfirm-box.jconfirm-type-red { + border-top: solid 7px #e74c3c; + -webkit-animation-name: type-red; + animation-name: type-red; +} + +.jconfirm .jconfirm-box.jconfirm-type-orange { + border-top: solid 7px #f1c40f; + -webkit-animation-name: type-orange; + animation-name: type-orange; +} + +.jconfirm .jconfirm-box.jconfirm-type-purple { + border-top: solid 7px #9b59b6; + -webkit-animation-name: type-purple; + animation-name: type-purple; +} + +.jconfirm .jconfirm-box.jconfirm-type-dark { + border-top: solid 7px #34495e; + -webkit-animation-name: type-dark; + animation-name: type-dark; +} + +.jconfirm .jconfirm-box.loading { + height: 120px; +} + +.jconfirm .jconfirm-box.loading:before { + content: ''; + position: absolute; + left: 0; + background: white; + right: 0; + top: 0; + bottom: 0; + border-radius: 10px; + z-index: 1; +} + +.jconfirm .jconfirm-box.loading:after { + opacity: 0.6; + content: ''; + height: 30px; + width: 30px; + border: solid 3px transparent; + position: absolute; + left: 50%; + margin-left: -15px; + border-radius: 50%; + -webkit-animation: jconfirm-spin 1s infinite linear; + animation: jconfirm-spin 1s infinite linear; + border-bottom-color: dodgerblue; + top: 50%; + margin-top: -15px; + z-index: 2; +} + +.jconfirm .jconfirm-box div.jconfirm-closeIcon { + height: 20px; + width: 20px; + position: absolute; + top: 10px; + right: 10px; + cursor: pointer; + opacity: .6; + text-align: center; + font-size: 27px !important; + line-height: 14px !important; + display: none; + z-index: 1; +} + +.jconfirm .jconfirm-box div.jconfirm-closeIcon:empty { + display: none; +} + +.jconfirm .jconfirm-box div.jconfirm-closeIcon .fa { + font-size: 16px; +} + +.jconfirm .jconfirm-box div.jconfirm-closeIcon .glyphicon { + font-size: 16px; +} + +.jconfirm .jconfirm-box div.jconfirm-closeIcon .zmdi { + font-size: 16px; +} + +.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover { + opacity: 1; +} + +.jconfirm .jconfirm-box div.jconfirm-title-c { + display: block; + font-size: 22px; + line-height: 20px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + padding-bottom: 15px; +} + +.jconfirm .jconfirm-box div.jconfirm-title-c.jconfirm-hand { + cursor: move; +} + +.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c { + font-size: inherit; + display: inline-block; + vertical-align: middle; +} + +.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i { + vertical-align: middle; +} + +.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty { + display: none; +} + +.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-size: inherit; + font-family: inherit; + display: inline-block; + vertical-align: middle; +} + +.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title:empty { + display: none; +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane { + margin-bottom: 15px; + height: auto; + -webkit-transition: height 0.4s ease-in; + transition: height 0.4s ease-in; + display: inline-block; + width: 100%; + position: relative; + overflow-x: hidden; + overflow-y: auto; +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane.no-scroll { + overflow-y: hidden; +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar { + width: 3px; +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0.1); +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-thumb { + background: #666; + border-radius: 3px; +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content { + overflow: auto; +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content img { + max-width: 100%; + height: auto; +} + +.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content:empty { + display: none; +} + +.jconfirm .jconfirm-box .jconfirm-buttons { + padding-bottom: 11px; +} + +.jconfirm .jconfirm-box .jconfirm-buttons > button { + margin-bottom: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button { + display: inline-block; + padding: 6px 12px; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 4px; + min-height: 1em; + -webkit-transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease; + transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease; + transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease; + -webkit-tap-highlight-color: transparent; + border: none; + background-image: none; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue { + background-color: #3498db; + color: #FFF; + text-shadow: none; + -webkit-transition: background .2s; + transition: background .2s; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue:hover { + background-color: #2980b9; + color: #FFF; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green { + background-color: #2ecc71; + color: #FFF; + text-shadow: none; + -webkit-transition: background .2s; + transition: background .2s; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green:hover { + background-color: #27ae60; + color: #FFF; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red { + background-color: #e74c3c; + color: #FFF; + text-shadow: none; + -webkit-transition: background .2s; + transition: background .2s; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red:hover { + background-color: #c0392b; + color: #FFF; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange { + background-color: #f1c40f; + color: #FFF; + text-shadow: none; + -webkit-transition: background .2s; + transition: background .2s; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange:hover { + background-color: #f39c12; + color: #FFF; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default { + background-color: #ecf0f1; + color: #000; + text-shadow: none; + -webkit-transition: background .2s; + transition: background .2s; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover { + background-color: #bdc3c7; + color: #000; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple { + background-color: #9b59b6; + color: #FFF; + text-shadow: none; + -webkit-transition: background .2s; + transition: background .2s; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple:hover { + background-color: #8e44ad; + color: #FFF; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark { + background-color: #34495e; + color: #FFF; + text-shadow: none; + -webkit-transition: background .2s; + transition: background .2s; +} + +.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark:hover { + background-color: #2c3e50; + color: #FFF; +} + +.jconfirm .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c { + color: #e74c3c !important; +} + +.jconfirm .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c { + color: #3498db !important; +} + +.jconfirm .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c { + color: #2ecc71 !important; +} + +.jconfirm .jconfirm-box.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c { + color: #9b59b6 !important; +} + +.jconfirm .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c { + color: #f1c40f !important; +} + +.jconfirm .jconfirm-box.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c { + color: #34495e !important; +} + +.jconfirm .jconfirm-clear { + clear: both; +} + +.jconfirm.jconfirm-rtl { + direction: rtl; +} + +.jconfirm.jconfirm-rtl div.jconfirm-closeIcon { + left: 5px; + right: auto; +} + +.jconfirm.jconfirm-white .jconfirm-bg, +.jconfirm.jconfirm-light .jconfirm-bg { + background-color: #444; + opacity: .2; +} + +.jconfirm.jconfirm-white .jconfirm-box, +.jconfirm.jconfirm-light .jconfirm-box { + -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); + border-radius: 5px; +} + +.jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c, +.jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; +} + +.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons, +.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons { + float: right; +} + +.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button, +.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button { + text-transform: uppercase; + font-size: 14px; + font-weight: bold; + text-shadow: none; +} + +.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default, +.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default { + -webkit-box-shadow: none; + box-shadow: none; + color: #333; +} + +.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default:hover, +.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default:hover { + background: #ddd; +} + +.jconfirm.jconfirm-white.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c, +.jconfirm.jconfirm-light.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; +} + +.jconfirm.jconfirm-black .jconfirm-bg, +.jconfirm.jconfirm-dark .jconfirm-bg { + background-color: darkslategray; + opacity: .4; +} + +.jconfirm.jconfirm-black .jconfirm-box, +.jconfirm.jconfirm-dark .jconfirm-box { + -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); + background: #444; + border-radius: 5px; + color: white; +} + +.jconfirm.jconfirm-black .jconfirm-box .jconfirm-title-c .jconfirm-icon-c, +.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; +} + +.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons, +.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons { + float: right; +} + +.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button, +.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button { + border: none; + background-image: none; + text-transform: uppercase; + font-size: 14px; + font-weight: bold; + text-shadow: none; + -webkit-transition: background .1s; + transition: background .1s; + color: white; +} + +.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default, +.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default { + -webkit-box-shadow: none; + box-shadow: none; + color: #fff; + background: none; +} + +.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default:hover, +.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default:hover { + background: #666; +} + +.jconfirm.jconfirm-black.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c, +.jconfirm.jconfirm-dark.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; +} + +.jconfirm .jconfirm-box.hilight.jconfirm-hilight-shake { + -webkit-animation: shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both; + animation: shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.jconfirm .jconfirm-box.hilight.jconfirm-hilight-glow { + -webkit-animation: glow 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both; + animation: glow 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +@-webkit-keyframes shake { + 10%, + 90% { + -webkit-transform: translate3d(-2px, 0, 0); + transform: translate3d(-2px, 0, 0); + } + 20%, + 80% { + -webkit-transform: translate3d(4px, 0, 0); + transform: translate3d(4px, 0, 0); + } + 30%, + 50%, + 70% { + -webkit-transform: translate3d(-8px, 0, 0); + transform: translate3d(-8px, 0, 0); + } + 40%, + 60% { + -webkit-transform: translate3d(8px, 0, 0); + transform: translate3d(8px, 0, 0); + } +} + +@keyframes shake { + 10%, + 90% { + -webkit-transform: translate3d(-2px, 0, 0); + transform: translate3d(-2px, 0, 0); + } + 20%, + 80% { + -webkit-transform: translate3d(4px, 0, 0); + transform: translate3d(4px, 0, 0); + } + 30%, + 50%, + 70% { + -webkit-transform: translate3d(-8px, 0, 0); + transform: translate3d(-8px, 0, 0); + } + 40%, + 60% { + -webkit-transform: translate3d(8px, 0, 0); + transform: translate3d(8px, 0, 0); + } +} + +@-webkit-keyframes glow { + 0%, + 100% { + -webkit-box-shadow: 0 0 0px red; + box-shadow: 0 0 0px red; + } + 50% { + -webkit-box-shadow: 0 0 30px red; + box-shadow: 0 0 30px red; + } +} + +@keyframes glow { + 0%, + 100% { + -webkit-box-shadow: 0 0 0px red; + box-shadow: 0 0 0px red; + } + 50% { + -webkit-box-shadow: 0 0 30px red; + box-shadow: 0 0 30px red; + } +} + +/*Transition rules*/ +.jconfirm { + -webkit-perspective: 400px; + perspective: 400px; +} + +.jconfirm .jconfirm-box { + opacity: 1; + -webkit-transition-property: all; + transition-property: all; +} + +.jconfirm .jconfirm-box.jconfirm-animation-top, +.jconfirm .jconfirm-box.jconfirm-animation-left, +.jconfirm .jconfirm-box.jconfirm-animation-right, +.jconfirm .jconfirm-box.jconfirm-animation-bottom, +.jconfirm .jconfirm-box.jconfirm-animation-opacity, +.jconfirm .jconfirm-box.jconfirm-animation-zoom, +.jconfirm .jconfirm-box.jconfirm-animation-scale, +.jconfirm .jconfirm-box.jconfirm-animation-none, +.jconfirm .jconfirm-box.jconfirm-animation-rotate, +.jconfirm .jconfirm-box.jconfirm-animation-rotatex, +.jconfirm .jconfirm-box.jconfirm-animation-rotatey, +.jconfirm .jconfirm-box.jconfirm-animation-scaley, +.jconfirm .jconfirm-box.jconfirm-animation-scalex { + opacity: 0; +} + +.jconfirm .jconfirm-box.jconfirm-animation-rotate { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.jconfirm .jconfirm-box.jconfirm-animation-rotatex { + -webkit-transform: rotateX(90deg); + transform: rotateX(90deg); + -webkit-transform-origin: center; + transform-origin: center; +} + +.jconfirm .jconfirm-box.jconfirm-animation-rotatexr { + -webkit-transform: rotateX(-90deg); + transform: rotateX(-90deg); + -webkit-transform-origin: center; + transform-origin: center; +} + +.jconfirm .jconfirm-box.jconfirm-animation-rotatey { + -webkit-transform: rotatey(90deg); + transform: rotatey(90deg); + -webkit-transform-origin: center; + transform-origin: center; +} + +.jconfirm .jconfirm-box.jconfirm-animation-rotateyr { + -webkit-transform: rotatey(-90deg); + transform: rotatey(-90deg); + -webkit-transform-origin: center; + transform-origin: center; +} + +.jconfirm .jconfirm-box.jconfirm-animation-scaley { + -webkit-transform: scaley(1.5); + transform: scaley(1.5); + -webkit-transform-origin: center; + transform-origin: center; +} + +.jconfirm .jconfirm-box.jconfirm-animation-scalex { + -webkit-transform: scalex(1.5); + transform: scalex(1.5); + -webkit-transform-origin: center; + transform-origin: center; +} + +.jconfirm .jconfirm-box.jconfirm-animation-top { + -webkit-transform: translate(0px, -100px); + transform: translate(0px, -100px); +} + +.jconfirm .jconfirm-box.jconfirm-animation-left { + -webkit-transform: translate(-100px, 0px); + transform: translate(-100px, 0px); +} + +.jconfirm .jconfirm-box.jconfirm-animation-right { + -webkit-transform: translate(100px, 0px); + transform: translate(100px, 0px); +} + +.jconfirm .jconfirm-box.jconfirm-animation-bottom { + -webkit-transform: translate(0px, 100px); + transform: translate(0px, 100px); +} + +.jconfirm .jconfirm-box.jconfirm-animation-zoom { + -webkit-transform: scale(1.2); + transform: scale(1.2); +} + +.jconfirm .jconfirm-box.jconfirm-animation-scale { + -webkit-transform: scale(0.5); + transform: scale(0.5); +} + +.jconfirm .jconfirm-box.jconfirm-animation-none { + visibility: hidden; +} + +.jconfirm.jconfirm-supervan .jconfirm-bg { + background-color: rgba(54, 70, 93, 0.95); +} + +.jconfirm.jconfirm-supervan .jconfirm-box { + background-color: transparent; +} + +.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-blue { + border: none; +} + +.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-green { + border: none; +} + +.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-red { + border: none; +} + +.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-orange { + border: none; +} + +.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-purple { + border: none; +} + +.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-dark { + border: none; +} + +.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-closeIcon { + color: white; +} + +.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c { + text-align: center; + color: white; + font-size: 28px; + font-weight: normal; +} + +.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c > * { + padding-bottom: 25px; +} + +.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; +} + +.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content-pane { + margin-bottom: 25px; +} + +.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content { + text-align: center; + color: white; +} + +.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons { + text-align: center; +} + +.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons button { + font-size: 16px; + border-radius: 2px; + background: #303f53; + text-shadow: none; + border: none; + color: white; + padding: 10px; + min-width: 100px; +} + +.jconfirm.jconfirm-supervan.jconfirm-rtl .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; +} + +.jconfirm.jconfirm-material .jconfirm-bg { + background-color: rgba(0, 0, 0, 0.67); +} + +.jconfirm.jconfirm-material .jconfirm-box { + background-color: white; + -webkit-box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12); + box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12); + padding: 30px 25px 10px 25px; +} + +.jconfirm.jconfirm-material .jconfirm-box .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; +} + +.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-closeIcon { + color: rgba(0, 0, 0, 0.87); +} + +.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-title-c { + color: rgba(0, 0, 0, 0.87); + font-size: 22px; + font-weight: bold; +} + +.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-content { + color: rgba(0, 0, 0, 0.87); +} + +.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons { + text-align: right; +} + +.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons button { + text-transform: uppercase; + font-weight: 500; +} + +.jconfirm.jconfirm-material.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; +} + +.jconfirm.jconfirm-bootstrap .jconfirm-bg { + background-color: rgba(0, 0, 0, 0.21); +} + +.jconfirm.jconfirm-bootstrap .jconfirm-box { + background-color: white; + -webkit-box-shadow: 0 3px 8px 0px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 8px 0px rgba(0, 0, 0, 0.2); + border: solid 1px rgba(0, 0, 0, 0.4); + padding: 15px 0 0; +} + +.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; +} + +.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-closeIcon { + color: rgba(0, 0, 0, 0.87); +} + +.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-title-c { + color: rgba(0, 0, 0, 0.87); + font-size: 22px; + font-weight: bold; + padding-left: 15px; + padding-right: 15px; +} + +.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-content { + color: rgba(0, 0, 0, 0.87); + padding: 0px 15px; +} + +.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons { + text-align: right; + padding: 10px; + margin: -5px 0 0px; + border-top: solid 1px #ddd; + overflow: hidden; + border-radius: 0 0 4px 4px; +} + +.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons button { + font-weight: 500; +} + +.jconfirm.jconfirm-bootstrap.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; +} + +.jconfirm.jconfirm-modern .jconfirm-bg { + background-color: slategray; + opacity: .6; +} + +.jconfirm.jconfirm-modern .jconfirm-box { + background-color: white; + -webkit-box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12); + box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12); + padding: 30px 30px 15px; +} + +.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-closeIcon { + color: rgba(0, 0, 0, 0.87); + top: 15px; + right: 15px; +} + +.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c { + color: rgba(0, 0, 0, 0.87); + font-size: 24px; + font-weight: bold; + text-align: center; + margin-bottom: 10px; +} + +.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c { + -webkit-transition: -webkit-transform .5s; + transition: -webkit-transform .5s; + transition: transform .5s; + transition: transform .5s, -webkit-transform .5s; + -webkit-transform: scale(0); + transform: scale(0); + display: block; + margin-right: 0px; + margin-left: 0px; + margin-bottom: 10px; + font-size: 69px; + color: #aaa; +} + +.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content { + text-align: center; + font-size: 15px; + color: #777; + margin-bottom: 25px; +} + +.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons { + text-align: center; +} + +.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button { + font-weight: bold; + text-transform: uppercase; + -webkit-transition: background .1s; + transition: background .1s; + padding: 10px 20px; +} + +.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button + button { + margin-left: 4px; +} + +.jconfirm.jconfirm-modern.jconfirm-open .jconfirm-box .jconfirm-title-c .jconfirm-icon-c { + -webkit-transform: scale(1); + transform: scale(1); +} diff --git a/zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.less b/zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.less new file mode 100644 index 0000000..a62c631 --- /dev/null +++ b/zhengcaioa/zhengcaioa/wwwroot/css/jquery-confirm.less @@ -0,0 +1,943 @@ +/*! + * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/) + * Author: boniface pereira + * Website: www.craftpip.com + * Contact: hey@craftpip.com + * + * Copyright 2013-2019 jquery-confirm + * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) + */ +@blue: #3498db; +@blueHover: #2980b9; +@green: #2ecc71; +@greenHover: #27ae60; +@red: #e74c3c; +@redHover: #c0392b; +@orange: #f1c40f; +@orangeHover: #f39c12; +@purple: #9b59b6; +@purpleHover: #8e44ad; +@default: #ecf0f1; +@defaultHover: #bdc3c7; +@dark: #34495e; +@darkHover: #2c3e50; + +@keyframes jconfirm-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +body[class*=jconfirm-no-scroll-] { + overflow: hidden !important; +} + +.jconfirm { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 99999999; + font-family: inherit; + overflow: hidden; + + .jconfirm-bg { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + transition: opacity .4s; + + &.jconfirm-bg-h { + opacity: 0 !important; + } + } + .jconfirm-scrollpane { + //overflow-y: auto; + perspective: 500px; + perspective-origin: center; + + display: table; + width: 100%; + height: 100%; + } + .jconfirm-row { + display: table-row; + width: 100%; + } + .jconfirm-cell { + //height: 100%; + display: table-cell; + vertical-align: middle; + } + .jconfirm-holder { + max-height: 100%; + padding: 50px 0; + } + .jconfirm-box-container { + transition: transform; + + &.jconfirm-no-transition { + transition: none !important; + } + } + .jconfirm-box { + background: white; + border-radius: 4px; + position: relative; + outline: none; + padding: 15px 15px 0; + overflow: hidden; + margin-left: auto; + margin-right: auto; + + @keyframes type-blue { + 1%, 100% { + border-color: @blue; + } + 50% { + border-color: lighten(@blue, 10%); + } + } + @keyframes type-green { + 1%, 100% { + border-color: @green; + } + 50% { + border-color: lighten(@green, 10%); + } + } + @keyframes type-red { + 1%, 100% { + border-color: @red; + } + 50% { + border-color: lighten(@red, 10%); + } + } + @keyframes type-orange { + 1%, 100% { + border-color: @orange; + } + 50% { + border-color: lighten(@orange, 10%); + } + } + @keyframes type-purple { + 1%, 100% { + border-color: @purple; + } + 50% { + border-color: lighten(@purple, 10%); + } + } + @keyframes type-dark { + 1%, 100% { + border-color: @dark; + } + 50% { + border-color: lighten(@dark, 10%); + } + } + &.jconfirm-type-animated { + animation-duration: 2s; + animation-iteration-count: infinite; + } + &.jconfirm-type-blue { + border-top: solid 7px @blue; + animation-name: type-blue; + } + &.jconfirm-type-green { + border-top: solid 7px @green; + animation-name: type-green; + } + &.jconfirm-type-red { + border-top: solid 7px @red; + animation-name: type-red; + } + &.jconfirm-type-orange { + border-top: solid 7px @orange; + animation-name: type-orange; + } + &.jconfirm-type-purple { + border-top: solid 7px @purple; + animation-name: type-purple; + } + &.jconfirm-type-dark { + border-top: solid 7px @dark; + animation-name: type-dark; + } + &.loading { + height: 120px; + + &:before { + content: ''; + position: absolute; + left: 0; + background: white; + right: 0; + top: 0; + bottom: 0; + border-radius: 10px; + z-index: 1; + } + &:after { + opacity: 0.6; + content: ''; + height: 30px; + width: 30px; + border: solid 3px transparent; + position: absolute; + left: 50%; + margin-left: -15px; + border-radius: 50%; + animation: jconfirm-spin 1s infinite linear; + border-bottom-color: dodgerblue; + top: 50%; + margin-top: -15px; + z-index: 2; + } + } + + div.jconfirm-closeIcon { + height: 20px; + width: 20px; + position: absolute; + top: 10px; + right: 10px; + cursor: pointer; + opacity: .6; + text-align: center; + font-size: 27px !important; + line-height: 14px !important; + display: none; + z-index: 1; + + &:empty { + display: none; + } + + .fa { + font-size: 16px; + } + .glyphicon { + font-size: 16px; + } + .zmdi { + font-size: 16px; + } + + &:hover { + opacity: 1; + } + } + div.jconfirm-title-c { + display: block; + font-size: 22px; + line-height: 20px; + user-select: none; + cursor: default; + padding-bottom: 15px; + + &.jconfirm-hand { + cursor: move; + } + .jconfirm-icon-c { + font-size: inherit; + //padding-bottom: 15px; + display: inline-block; + vertical-align: middle; + i { + vertical-align: middle; + } + &:empty { + display: none; + } + } + .jconfirm-title { + user-select: none; + font-size: inherit; + font-family: inherit; + display: inline-block; + vertical-align: middle; + //padding-bottom: 15px; + &:empty { + display: none; + } + } + } + + div.jconfirm-content-pane { + margin-bottom: 15px; + height: auto; + transition: height .4s ease-in; + display: inline-block; + width: 100%; + position: relative; + overflow-x: hidden; + overflow-y: auto; + + &.no-scroll { + overflow-y: hidden; + } + &::-webkit-scrollbar { + width: 3px; + } + + &::-webkit-scrollbar-track { + background: rgba(0, 0, 0, .1); + } + + &::-webkit-scrollbar-thumb { + background: #666; + border-radius: 3px; + } + + .jconfirm-content { + overflow: auto; + + img { + max-width: 100%; + height: auto; + } + &:empty { + display: none; + } + } + } + + .jconfirm-buttons { + padding-bottom: 11px; + > button { + margin-bottom: 4px; + margin-left: 2px; + margin-right: 2px; + } + + button { + display: inline-block; + padding: 6px 12px; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 4px; + min-height: 1em; + //outline: blue; + //user-select: none; + transition: opacity .1s ease, background-color .1s ease, color .1s ease, box-shadow .1s ease, background .1s ease; + -webkit-tap-highlight-color: transparent; + border: none; + background-image: none; + + &.btn-blue { + background-color: @blue; + color: #FFF; + text-shadow: none; + transition: background .2s; + &:hover { + background-color: @blueHover; + color: #FFF; + } + } + + &.btn-green { + background-color: @green; + color: #FFF; + text-shadow: none; + transition: background .2s; + &:hover { + background-color: @greenHover; + color: #FFF; + } + } + + &.btn-red { + background-color: @red; + color: #FFF; + text-shadow: none; + transition: background .2s; + &:hover { + background-color: @redHover; + color: #FFF; + } + } + + &.btn-orange { + background-color: @orange; + color: #FFF; + text-shadow: none; + transition: background .2s; + &:hover { + background-color: @orangeHover; + color: #FFF; + } + } + + &.btn-default { + background-color: @default; + color: #000; + text-shadow: none; + transition: background .2s; + &:hover { + background-color: @defaultHover; + color: #000; + } + } + + &.btn-purple { + background-color: @purple; + color: #FFF; + text-shadow: none; + transition: background .2s; + &:hover { + background-color: @purpleHover; + color: #FFF; + } + } + + &.btn-dark { + background-color: @dark; + color: #FFF; + text-shadow: none; + transition: background .2s; + &:hover { + background-color: @darkHover; + color: #FFF; + } + } + } + } + + &.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c { + color: @red !important; + } + &.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c { + color: @blue !important; + } + &.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c { + color: @green !important; + } + &.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c { + color: @purple !important; + } + &.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c { + color: @orange !important; + } + &.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c { + color: @dark !important; + } + } + + .jconfirm-clear { + clear: both; + } + + &.jconfirm-rtl { + direction: rtl; + div.jconfirm-closeIcon { + left: 5px; + right: auto; + } + } + + &.jconfirm-white, &.jconfirm-light { + .jconfirm-bg { + background-color: #444; + opacity: .2; + } + .jconfirm-box { + box-shadow: 0 2px 6px rgba(0, 0, 0, .2); + border-radius: 5px; + + .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; + } + .jconfirm-buttons { + float: right; + + button { + text-transform: uppercase; + font-size: 14px; + font-weight: bold; + text-shadow: none; + } + button.btn-default { + box-shadow: none; + color: #333; + + &:hover { + background: #ddd; + } + } + } + } + &.jconfirm-rtl { + .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; + } + } + } + + &.jconfirm-black, &.jconfirm-dark { + .jconfirm-bg { + background-color: darkslategray; + opacity: .4; + } + .jconfirm-box { + box-shadow: 0 2px 6px rgba(0, 0, 0, .2); + background: #444; + border-radius: 5px; + color: white; + + .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; + } + + .jconfirm-buttons { + float: right; + + button { + border: none; + background-image: none; + text-transform: uppercase; + font-size: 14px; + font-weight: bold; + text-shadow: none; + transition: background .1s; + color: white; + } + button.btn-default { + box-shadow: none; + color: #fff; + background: none; + + &:hover { + background: #666; + } + } + } + } + + &.jconfirm-rtl { + .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; + } + } + } + + .jconfirm-box.hilight { + &.jconfirm-hilight-shake { + animation: shake 0.82s cubic-bezier(.36, .07, .19, .97) both; + transform: translate3d(0, 0, 0); + } + &.jconfirm-hilight-glow { + animation: glow 0.82s cubic-bezier(.36, .07, .19, .97) both; + transform: translate3d(0, 0, 0); + } + } +} + +@keyframes shake { + 10%, 90% { + transform: translate3d(-2px, 0, 0); + } + 20%, 80% { + transform: translate3d(4px, 0, 0); + } + 30%, 50%, 70% { + transform: translate3d(-8px, 0, 0); + } + 40%, 60% { + transform: translate3d(8px, 0, 0); + } +} + +@keyframes glow { + 0%, 100% { + box-shadow: 0 0 0px red; + } + 50% { + box-shadow: 0 0 30px red; + } +} + +/*Transition rules*/ +.jconfirm { + perspective: 400px; + + .jconfirm-box { + opacity: 1; + transition-property: all; + + &.jconfirm-animation-top, &.jconfirm-animation-left, &.jconfirm-animation-right, &.jconfirm-animation-bottom, &.jconfirm-animation-opacity, &.jconfirm-animation-zoom, &.jconfirm-animation-scale, &.jconfirm-animation-none, &.jconfirm-animation-rotate, &.jconfirm-animation-rotatex, &.jconfirm-animation-rotatey, &.jconfirm-animation-scaley, &.jconfirm-animation-scalex { + opacity: 0; + } + &.jconfirm-animation-rotate { + transform: rotate(90deg); + } + &.jconfirm-animation-rotatex { + transform: rotateX(90deg); + transform-origin: center; + } + &.jconfirm-animation-rotatexr { + transform: rotateX(-90deg); + transform-origin: center; + } + &.jconfirm-animation-rotatey { + transform: rotatey(90deg); + transform-origin: center; + } + &.jconfirm-animation-rotateyr { + transform: rotatey(-90deg); + transform-origin: center; + } + &.jconfirm-animation-scaley { + transform: scaley(1.5); + transform-origin: center; + } + &.jconfirm-animation-scalex { + transform: scalex(1.5); + transform-origin: center; + } + &.jconfirm-animation-top { + transform: translate(0px, -100px); + } + &.jconfirm-animation-left { + transform: translate(-100px, 0px); + } + &.jconfirm-animation-right { + transform: translate(100px, 0px); + } + &.jconfirm-animation-bottom { + transform: translate(0px, 100px); + } + &.jconfirm-animation-opacity { + + } + &.jconfirm-animation-zoom { + transform: scale(1.2); + } + &.jconfirm-animation-scale { + transform: scale(0.5); + } + &.jconfirm-animation-none { + visibility: hidden; + } + } +} + +.jconfirm.jconfirm-supervan { + .jconfirm-bg { + background-color: rgba(54, 70, 93, .95); + } + + .jconfirm-box { + background-color: transparent; + + &.jconfirm-type-blue { + border: none; + } + &.jconfirm-type-green { + border: none; + } + &.jconfirm-type-red { + border: none; + } + &.jconfirm-type-orange { + border: none; + } + &.jconfirm-type-purple { + border: none; + } + &.jconfirm-type-dark { + border: none; + } + + div.jconfirm-closeIcon { + color: white; + } + + div.jconfirm-title-c { + text-align: center; + color: white; + font-size: 28px; + font-weight: normal; + > * { + padding-bottom: 25px; + } + + .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; + } + } + div.jconfirm-content-pane { + margin-bottom: 25px; + } + div.jconfirm-content { + text-align: center; + color: white; + + &:empty { + &:before { + + } + &:after { + + } + } + } + .jconfirm-buttons { + text-align: center; + + button { + font-size: 16px; + border-radius: 2px; + background: darken(#36465D, 3%); + text-shadow: none; + border: none; + color: white; + padding: 10px; + min-width: 100px; + } + button + button { + + } + } + &.hilight { + + } + } + + &.jconfirm-rtl { + .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; + } + } +} + +.jconfirm.jconfirm-material { + .jconfirm-bg { + background-color: rgba(0, 0, 0, .67); + } + .jconfirm-box { + background-color: white; + box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12); + padding: 30px 25px 10px 25px; + + .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; + } + + div.jconfirm-closeIcon { + color: rgba(0, 0, 0, .87); + } + + div.jconfirm-title-c { + color: rgba(0, 0, 0, .87); + font-size: 22px; + font-weight: bold; + } + div.jconfirm-content { + color: rgba(0, 0, 0, .87); + + &:empty { + &:before { + + } + &:after { + + } + } + } + .jconfirm-buttons { + text-align: right; + + button { + text-transform: uppercase; + font-weight: 500; + } + button + button { + + } + } + &.hilight { + + } + } + + &.jconfirm-rtl { + .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; + } + } +} + +.jconfirm.jconfirm-bootstrap { + .jconfirm-bg { + background-color: rgba(0, 0, 0, .21); + } + + .jconfirm-box { + background-color: white; + box-shadow: 0 3px 8px 0px rgba(0, 0, 0, 0.2); + border: solid 1px rgba(0, 0, 0, 0.4); + padding: 15px 0 0; + + .jconfirm-title-c .jconfirm-icon-c { + margin-right: 8px; + margin-left: 0px; + } + + div.jconfirm-closeIcon { + color: rgba(0, 0, 0, 0.87); + } + + div.jconfirm-title-c { + color: rgba(0, 0, 0, 0.87); + font-size: 22px; + font-weight: bold; + padding-left: 15px; + padding-right: 15px; + } + div.jconfirm-content-pane { + + } + div.jconfirm-content { + color: rgba(0, 0, 0, 0.87); + padding: 0px 15px; + + &:empty { + &:before { + + } + &:after { + + } + } + } + .jconfirm-buttons { + text-align: right; + padding: 10px; + margin: -5px 0 0px; + border-top: solid 1px #ddd; + overflow: hidden; + border-radius: 0 0 4px 4px; + + button { + font-weight: 500; + } + button + button { + + } + } + &.hilight { + + } + } + + &.jconfirm-rtl { + .jconfirm-title-c .jconfirm-icon-c { + margin-left: 8px; + margin-right: 0px; + } + } +} + +.jconfirm.jconfirm-modern { + .jconfirm-bg { + background-color: slategray; + opacity: .6; + } + + .jconfirm-box { + background-color: white; + box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12); + padding: 30px 30px 15px; + + div.jconfirm-closeIcon { + color: rgba(0, 0, 0, 0.87); + top: 15px; + right: 15px; + } + + div.jconfirm-title-c { + color: rgba(0, 0, 0, .87); + font-size: 24px; + font-weight: bold; + text-align: center; + margin-bottom: 10px; + + .jconfirm-icon-c { + transition: transform .5s; + transform: scale(0); + display: block; + margin-right: 0px; + margin-left: 0px; + margin-bottom: 10px; + font-size: 69px; + color: #aaa; + } + } + + div.jconfirm-content { + text-align: center; + font-size: 15px; + color: #777; + margin-bottom: 25px; + + &:empty { + &:before { + + } + &:after { + + } + } + } + .jconfirm-buttons { + text-align: center; + + button { + font-weight: bold; + text-transform: uppercase; + transition: background .1s; + padding: 10px 20px; + + &.btn-success { + + } + } + button + button { + margin-left: 4px; + } + } + } + &.jconfirm-open { + .jconfirm-box .jconfirm-title-c .jconfirm-icon-c { + transform: scale(1); + } + } +} \ No newline at end of file diff --git a/zhengcaioa/zhengcaioa/wwwroot/js/jquery-confirm.js b/zhengcaioa/zhengcaioa/wwwroot/js/jquery-confirm.js new file mode 100644 index 0000000..a1f6747 --- /dev/null +++ b/zhengcaioa/zhengcaioa/wwwroot/js/jquery-confirm.js @@ -0,0 +1,1379 @@ +/*! + * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/) + * Author: Boniface Pereira + * Website: www.craftpip.com + * Contact: hey@craftpip.com + * + * Copyright 2013-2019 jquery-confirm + * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) + */ + + +/** + * UMD (Universal Module Definition) to support CommonJS, AMD and browser + * Thanks to https://github.com/umdjs/umd + */ +(function(factory){ + if(typeof define === 'function' && define.amd){ + // AMD. Register as an anonymous module. + define(['jquery'], factory); + }else if(typeof module === 'object' && module.exports){ + // Node/CommonJS + module.exports = function(root, jQuery){ + if(jQuery === undefined){ + // require('jQuery') returns a factory that requires window to + // build a jQuery instance, we normalize how we use modules + // that require this pattern but the window provided is a noop + // if it's defined (how jquery works) + if(typeof window !== 'undefined'){ + jQuery = require('jquery'); + } + else{ + jQuery = require('jquery')(root); + } + } + factory(jQuery); + return jQuery; + }; + }else{ + // Browser globals + factory(jQuery); + } +}(function($){ + "use strict"; + + // locally assign window + var w = window; + // w.jconfirm + // w.Jconfirm; + + $.fn.confirm = function(options, option2){ + if(typeof options === 'undefined') options = {}; + if(typeof options === 'string'){ + options = { + content: options, + title: (option2) ? option2 : false + }; + } + /* + * Alias of $.confirm to emulate native confirm() + */ + $(this).each(function(){ + var $this = $(this); + if($this.attr('jc-attached')){ + console.warn('jConfirm has already been attached to this element ', $this[0]); + return; + } + + $this.on('click', function(e){ + e.preventDefault(); + var jcOption = $.extend({}, options); + if($this.attr('data-title')) + jcOption['title'] = $this.attr('data-title'); + if($this.attr('data-content')) + jcOption['content'] = $this.attr('data-content'); + if(typeof jcOption['buttons'] === 'undefined') + jcOption['buttons'] = {}; + + jcOption['$target'] = $this; + if($this.attr('href') && Object.keys(jcOption['buttons']).length === 0){ + var buttons = $.extend(true, {}, w.jconfirm.pluginDefaults.defaultButtons, (w.jconfirm.defaults || {}).defaultButtons || {}); + var firstBtn = Object.keys(buttons)[0]; + jcOption['buttons'] = buttons; + jcOption.buttons[firstBtn].action = function(){ + location.href = $this.attr('href'); + }; + } + jcOption['closeIcon'] = false; + var instance = $.confirm(jcOption); + }); + + $this.attr('jc-attached', true); + }); + return $(this); + }; + $.confirm = function(options, option2){ + if(typeof options === 'undefined') options = {}; + if(typeof options === 'string'){ + options = { + content: options, + title: (option2) ? option2 : false + }; + } + + var putDefaultButtons = !(options['buttons'] === false); + + if(typeof options['buttons'] !== 'object') + options['buttons'] = {}; + + if(Object.keys(options['buttons']).length === 0 && putDefaultButtons){ + var buttons = $.extend(true, {}, w.jconfirm.pluginDefaults.defaultButtons, (w.jconfirm.defaults || {}).defaultButtons || {}); + options['buttons'] = buttons; + } + + /* + * Alias of jconfirm + */ + return w.jconfirm(options); + }; + $.alert = function(options, option2){ + if(typeof options === 'undefined') options = {}; + if(typeof options === 'string'){ + options = { + content: options, + title: (option2) ? option2 : false + }; + } + + var putDefaultButtons = !(options['buttons'] === false); + + if(typeof options.buttons !== 'object') + options.buttons = {}; + + if(Object.keys(options['buttons']).length === 0 && putDefaultButtons){ + var buttons = $.extend(true, {}, w.jconfirm.pluginDefaults.defaultButtons, (w.jconfirm.defaults || {}).defaultButtons || {}); + var firstBtn = Object.keys(buttons)[0]; + options['buttons'][firstBtn] = buttons[firstBtn]; + } + /* + * Alias of jconfirm + */ + return w.jconfirm(options); + }; + $.dialog = function(options, option2){ + if(typeof options === 'undefined') options = {}; + if(typeof options === 'string'){ + options = { + content: options, + title: (option2) ? option2 : false, + closeIcon: function(){ + // Just close the modal + } + }; + } + + options['buttons'] = {}; // purge buttons + + if(typeof options['closeIcon'] === 'undefined'){ + // Dialog must have a closeIcon. + options['closeIcon'] = function(){ + } + } + /* + * Alias of jconfirm + */ + options.confirmKeys = [13]; + return w.jconfirm(options); + }; + + w.jconfirm = function(options){ + if(typeof options === 'undefined') options = {}; + /* + * initial function for calling. + */ + var pluginOptions = $.extend(true, {}, w.jconfirm.pluginDefaults); + if(w.jconfirm.defaults){ + pluginOptions = $.extend(true, pluginOptions, w.jconfirm.defaults); + } + + /* + * merge options with plugin defaults. + */ + pluginOptions = $.extend(true, {}, pluginOptions, options); + var instance = new w.Jconfirm(pluginOptions); + w.jconfirm.instances.push(instance); + return instance; + }; + w.Jconfirm = function(options){ + /* + * constructor function Jconfirm, + * options = user options. + */ + $.extend(this, options); + this._init(); + }; + w.Jconfirm.prototype = { + _init: function(){ + var that = this; + + if(!w.jconfirm.instances.length) + w.jconfirm.lastFocused = $('body').find(':focus'); + + this._id = Math.round(Math.random() * 99999); + /** + * contentParsed maintains the contents for $content, before it is put in DOM + */ + this.contentParsed = $(document.createElement('div')); + + if(!this.lazyOpen){ + setTimeout(function(){ + that.open(); + }, 0); + } + }, + _buildHTML: function(){ + var that = this; + + // prefix the animation string and store in animationParsed + this._parseAnimation(this.animation, 'o'); + this._parseAnimation(this.closeAnimation, 'c'); + this._parseBgDismissAnimation(this.backgroundDismissAnimation); + this._parseColumnClass(this.columnClass); + this._parseTheme(this.theme); + this._parseType(this.type); + + /* + * Append html. + */ + var template = $(this.template); + template.find('.jconfirm-box').addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(this.typeParsed); + + if(this.typeAnimated) + template.find('.jconfirm-box').addClass('jconfirm-type-animated'); + + if(this.useBootstrap){ + template.find('.jc-bs3-row').addClass(this.bootstrapClasses.row); + template.find('.jc-bs3-row').addClass('justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center'); + + template.find('.jconfirm-box-container').addClass(this.columnClassParsed); + + if(this.containerFluid) + template.find('.jc-bs3-container').addClass(this.bootstrapClasses.containerFluid); + else + template.find('.jc-bs3-container').addClass(this.bootstrapClasses.container); + }else{ + template.find('.jconfirm-box').css('width', this.boxWidth); + } + + if(this.titleClass) + template.find('.jconfirm-title-c').addClass(this.titleClass); + + template.addClass(this.themeParsed); + var ariaLabel = 'jconfirm-box' + this._id; + template.find('.jconfirm-box').attr('aria-labelledby', ariaLabel).attr('tabindex', -1); + template.find('.jconfirm-content').attr('id', ariaLabel); + if(this.bgOpacity !== null) + template.find('.jconfirm-bg').css('opacity', this.bgOpacity); + if(this.rtl) + template.addClass('jconfirm-rtl'); + + this.$el = template.appendTo(this.container); + this.$jconfirmBoxContainer = this.$el.find('.jconfirm-box-container'); + this.$jconfirmBox = this.$body = this.$el.find('.jconfirm-box'); + this.$jconfirmBg = this.$el.find('.jconfirm-bg'); + this.$title = this.$el.find('.jconfirm-title'); + this.$titleContainer = this.$el.find('.jconfirm-title-c'); + this.$content = this.$el.find('div.jconfirm-content'); + this.$contentPane = this.$el.find('.jconfirm-content-pane'); + this.$icon = this.$el.find('.jconfirm-icon-c'); + this.$closeIcon = this.$el.find('.jconfirm-closeIcon'); + this.$holder = this.$el.find('.jconfirm-holder'); + // this.$content.css(this._getCSS(this.animationSpeed, this.animationBounce)); + this.$btnc = this.$el.find('.jconfirm-buttons'); + this.$scrollPane = this.$el.find('.jconfirm-scrollpane'); + + that.setStartingPoint(); + + // for loading content via URL + this._contentReady = $.Deferred(); + this._modalReady = $.Deferred(); + this.$holder.css({ + 'padding-top': this.offsetTop, + 'padding-bottom': this.offsetBottom, + }); + + this.setTitle(); + this.setIcon(); + this._setButtons(); + this._parseContent(); + this.initDraggable(); + + if(this.isAjax) + this.showLoading(false); + + $.when(this._contentReady, this._modalReady).then(function(){ + if(that.isAjaxLoading) + setTimeout(function(){ + that.isAjaxLoading = false; + that.setContent(); + that.setTitle(); + that.setIcon(); + setTimeout(function(){ + that.hideLoading(false); + that._updateContentMaxHeight(); + }, 100); + if(typeof that.onContentReady === 'function') + that.onContentReady(); + }, 50); + else{ + // that.setContent(); + that._updateContentMaxHeight(); + that.setTitle(); + that.setIcon(); + if(typeof that.onContentReady === 'function') + that.onContentReady(); + } + + // start countdown after content has loaded. + if(that.autoClose) + that._startCountDown(); + }).then(function(){ + that._watchContent(); + }); + + if(this.animation === 'none'){ + this.animationSpeed = 1; + this.animationBounce = 1; + } + + this.$body.css(this._getCSS(this.animationSpeed, this.animationBounce)); + this.$contentPane.css(this._getCSS(this.animationSpeed, 1)); + this.$jconfirmBg.css(this._getCSS(this.animationSpeed, 1)); + this.$jconfirmBoxContainer.css(this._getCSS(this.animationSpeed, 1)); + }, + _typePrefix: 'jconfirm-type-', + typeParsed: '', + _parseType: function(type){ + this.typeParsed = this._typePrefix + type; + }, + setType: function(type){ + var oldClass = this.typeParsed; + this._parseType(type); + this.$jconfirmBox.removeClass(oldClass).addClass(this.typeParsed); + }, + themeParsed: '', + _themePrefix: 'jconfirm-', + setTheme: function(theme){ + var previous = this.theme; + this.theme = theme || this.theme; + this._parseTheme(this.theme); + if(previous) + this.$el.removeClass(previous); + this.$el.addClass(this.themeParsed); + this.theme = theme; + }, + _parseTheme: function(theme){ + var that = this; + theme = theme.split(','); + $.each(theme, function(k, a){ + if(a.indexOf(that._themePrefix) === -1) + theme[k] = that._themePrefix + $.trim(a); + }); + this.themeParsed = theme.join(' ').toLowerCase(); + }, + backgroundDismissAnimationParsed: '', + _bgDismissPrefix: 'jconfirm-hilight-', + _parseBgDismissAnimation: function(bgDismissAnimation){ + var animation = bgDismissAnimation.split(','); + var that = this; + $.each(animation, function(k, a){ + if(a.indexOf(that._bgDismissPrefix) === -1) + animation[k] = that._bgDismissPrefix + $.trim(a); + }); + this.backgroundDismissAnimationParsed = animation.join(' ').toLowerCase(); + }, + animationParsed: '', + closeAnimationParsed: '', + _animationPrefix: 'jconfirm-animation-', + setAnimation: function(animation){ + this.animation = animation || this.animation; + this._parseAnimation(this.animation, 'o'); + }, + _parseAnimation: function(animation, which){ + which = which || 'o'; // parse what animation and store where. open or close? + var animations = animation.split(','); + var that = this; + $.each(animations, function(k, a){ + if(a.indexOf(that._animationPrefix) === -1) + animations[k] = that._animationPrefix + $.trim(a); + }); + var a_string = animations.join(' ').toLowerCase(); + if(which === 'o') + this.animationParsed = a_string; + else + this.closeAnimationParsed = a_string; + + return a_string; + }, + setCloseAnimation: function(closeAnimation){ + this.closeAnimation = closeAnimation || this.closeAnimation; + this._parseAnimation(this.closeAnimation, 'c'); + }, + setAnimationSpeed: function(speed){ + this.animationSpeed = speed || this.animationSpeed; + // this.$body.css(this._getCSS(this.animationSpeed, this.animationBounce)); + }, + columnClassParsed: '', + setColumnClass: function(colClass){ + if(!this.useBootstrap){ + console.warn("cannot set columnClass, useBootstrap is set to false"); + return; + } + this.columnClass = colClass || this.columnClass; + this._parseColumnClass(this.columnClass); + this.$jconfirmBoxContainer.addClass(this.columnClassParsed); + }, + _updateContentMaxHeight: function(){ + var height = $(window).height() - (this.$jconfirmBox.outerHeight() - this.$contentPane.outerHeight()) - (this.offsetTop + this.offsetBottom); + this.$contentPane.css({ + 'max-height': height + 'px' + }); + }, + setBoxWidth: function(width){ + if(this.useBootstrap){ + console.warn("cannot set boxWidth, useBootstrap is set to true"); + return; + } + this.boxWidth = width; + this.$jconfirmBox.css('width', width); + }, + _parseColumnClass: function(colClass){ + colClass = colClass.toLowerCase(); + var p; + switch(colClass){ + case 'xl': + case 'xlarge': + p = 'col-md-12'; + break; + case 'l': + case 'large': + p = 'col-md-8 col-md-offset-2'; + break; + case 'm': + case 'medium': + p = 'col-md-6 col-md-offset-3'; + break; + case 's': + case 'small': + p = 'col-md-4 col-md-offset-4'; + break; + case 'xs': + case 'xsmall': + p = 'col-md-2 col-md-offset-5'; + break; + default: + p = colClass; + } + this.columnClassParsed = p; + }, + initDraggable: function(){ + var that = this; + var $t = this.$titleContainer; + + this.resetDrag(); + if(this.draggable){ + $t.on('mousedown', function(e){ + $t.addClass('jconfirm-hand'); + that.mouseX = e.clientX; + that.mouseY = e.clientY; + that.isDrag = true; + }); + $(window).on('mousemove.' + this._id, function(e){ + if(that.isDrag){ + that.movingX = e.clientX - that.mouseX + that.initialX; + that.movingY = e.clientY - that.mouseY + that.initialY; + that.setDrag(); + } + }); + + $(window).on('mouseup.' + this._id, function(){ + $t.removeClass('jconfirm-hand'); + if(that.isDrag){ + that.isDrag = false; + that.initialX = that.movingX; + that.initialY = that.movingY; + } + }) + } + }, + resetDrag: function(){ + this.isDrag = false; + this.initialX = 0; + this.initialY = 0; + this.movingX = 0; + this.movingY = 0; + this.mouseX = 0; + this.mouseY = 0; + this.$jconfirmBoxContainer.css('transform', 'translate(' + 0 + 'px, ' + 0 + 'px)'); + }, + setDrag: function(){ + if(!this.draggable) + return; + + this.alignMiddle = false; + var boxWidth = this.$jconfirmBox.outerWidth(); + var boxHeight = this.$jconfirmBox.outerHeight(); + var windowWidth = $(window).width(); + var windowHeight = $(window).height(); + var that = this; + var dragUpdate = 1; + if(that.movingX % dragUpdate === 0 || that.movingY % dragUpdate === 0){ + if(that.dragWindowBorder){ + var leftDistance = (windowWidth / 2) - boxWidth / 2; + var topDistance = (windowHeight / 2) - boxHeight / 2; + topDistance -= that.dragWindowGap; + leftDistance -= that.dragWindowGap; + + if(leftDistance + that.movingX < 0){ + that.movingX = -leftDistance; + }else if(leftDistance - that.movingX < 0){ + that.movingX = leftDistance; + } + + if(topDistance + that.movingY < 0){ + that.movingY = -topDistance; + }else if(topDistance - that.movingY < 0){ + that.movingY = topDistance; + } + } + + that.$jconfirmBoxContainer.css('transform', 'translate(' + that.movingX + 'px, ' + that.movingY + 'px)'); + } + }, + _scrollTop: function(){ + if(typeof pageYOffset !== 'undefined'){ + //most browsers except IE before #9 + return pageYOffset; + } + else{ + var B = document.body; //IE 'quirks' + var D = document.documentElement; //IE with doctype + D = (D.clientHeight) ? D : B; + return D.scrollTop; + } + }, + _watchContent: function(){ + var that = this; + if(this._timer) clearInterval(this._timer); + + var prevContentHeight = 0; + this._timer = setInterval(function(){ + if(that.smoothContent){ + var contentHeight = that.$content.outerHeight() || 0; + if(contentHeight !== prevContentHeight){ + + // Commented out to prevent scroll to top when updating the content + // (for example when using ajax in forms in content) + // that.$contentPane.css({ + // 'height': contentHeight + // }).scrollTop(0); + prevContentHeight = contentHeight; + } + var wh = $(window).height(); + var total = that.offsetTop + that.offsetBottom + that.$jconfirmBox.height() - that.$contentPane.height() + that.$content.height(); + if(total < wh){ + that.$contentPane.addClass('no-scroll'); + }else{ + that.$contentPane.removeClass('no-scroll'); + } + } + }, this.watchInterval); + }, + _overflowClass: 'jconfirm-overflow', + _hilightAnimating: false, + highlight: function(){ + this.hiLightModal(); + }, + hiLightModal: function(){ + var that = this; + if(this._hilightAnimating) + return; + + that.$body.addClass('hilight'); + var duration = parseFloat(that.$body.css('animation-duration')) || 2; + this._hilightAnimating = true; + setTimeout(function(){ + that._hilightAnimating = false; + that.$body.removeClass('hilight'); + }, duration * 1000); + }, + _bindEvents: function(){ + var that = this; + this.boxClicked = false; + + this.$scrollPane.click(function(e){ // Ignore propagated clicks + if(!that.boxClicked){ // Background clicked + /* + If backgroundDismiss is a function and its return value is truthy + proceed to close the modal. + */ + var buttonName = false; + var shouldClose = false; + var str; + + if(typeof that.backgroundDismiss === 'function') + str = that.backgroundDismiss(); + else + str = that.backgroundDismiss; + + if(typeof str === 'string' && typeof that.buttons[str] !== 'undefined'){ + buttonName = str; + shouldClose = false; + }else if(typeof str === 'undefined' || !!(str) === true){ + shouldClose = true; + }else{ + shouldClose = false; + } + + if(buttonName){ + var btnResponse = that.buttons[buttonName].action.apply(that); + shouldClose = (typeof btnResponse === 'undefined') || !!(btnResponse); + } + + if(shouldClose) + that.close(); + else + that.hiLightModal(); + } + that.boxClicked = false; + }); + + this.$jconfirmBox.click(function(e){ + that.boxClicked = true; + }); + + var isKeyDown = false; + $(window).on('jcKeyDown.' + that._id, function(e){ + if(!isKeyDown){ + isKeyDown = true; + } + }); + $(window).on('keyup.' + that._id, function(e){ + if(isKeyDown){ + that.reactOnKey(e); + isKeyDown = false; + } + }); + + $(window).on('resize.' + this._id, function(){ + that._updateContentMaxHeight(); + setTimeout(function(){ + that.resetDrag(); + }, 100); + }); + }, + _cubic_bezier: '0.36, 0.55, 0.19', + _getCSS: function(speed, bounce){ + return { + '-webkit-transition-duration': speed / 1000 + 's', + 'transition-duration': speed / 1000 + 's', + '-webkit-transition-timing-function': 'cubic-bezier(' + this._cubic_bezier + ', ' + bounce + ')', + 'transition-timing-function': 'cubic-bezier(' + this._cubic_bezier + ', ' + bounce + ')' + }; + }, + _setButtons: function(){ + var that = this; + /* + * Settings up buttons + */ + + var total_buttons = 0; + if(typeof this.buttons !== 'object') + this.buttons = {}; + + $.each(this.buttons, function(key, button){ + total_buttons += 1; + if(typeof button === 'function'){ + that.buttons[key] = button = { + action: button + }; + } + + that.buttons[key].text = button.text || key; + that.buttons[key].btnClass = button.btnClass || 'btn-default'; + that.buttons[key].action = button.action || function(){ + }; + that.buttons[key].keys = button.keys || []; + that.buttons[key].isHidden = button.isHidden || false; + that.buttons[key].isDisabled = button.isDisabled || false; + + $.each(that.buttons[key].keys, function(i, a){ + that.buttons[key].keys[i] = a.toLowerCase(); + }); + + var button_element = $('<button type="button" class="btn"></button>') + .html(that.buttons[key].text) + .addClass(that.buttons[key].btnClass) + .prop('disabled', that.buttons[key].isDisabled) + .css('display', that.buttons[key].isHidden ? 'none' : '') + .click(function(e){ + e.preventDefault(); + var res = that.buttons[key].action.apply(that, [that.buttons[key]]); + that.onAction.apply(that, [key, that.buttons[key]]); + that._stopCountDown(); + if(typeof res === 'undefined' || res) + that.close(); + }); + + that.buttons[key].el = button_element; + that.buttons[key].setText = function(text){ + button_element.html(text); + }; + that.buttons[key].addClass = function(className){ + button_element.addClass(className); + }; + that.buttons[key].removeClass = function(className){ + button_element.removeClass(className); + }; + that.buttons[key].disable = function(){ + that.buttons[key].isDisabled = true; + button_element.prop('disabled', true); + }; + that.buttons[key].enable = function(){ + that.buttons[key].isDisabled = false; + button_element.prop('disabled', false); + }; + that.buttons[key].show = function(){ + that.buttons[key].isHidden = false; + button_element.css('display', ''); + }; + that.buttons[key].hide = function(){ + that.buttons[key].isHidden = true; + button_element.css('display', 'none'); + }; + /* + Buttons are prefixed with $_ or $$ for quick access + */ + that['$_' + key] = that['$$' + key] = button_element; + that.$btnc.append(button_element); + }); + + if(total_buttons === 0) this.$btnc.hide(); + if(this.closeIcon === null && total_buttons === 0){ + /* + in case when no buttons are present & closeIcon is null, closeIcon is set to true, + set closeIcon to true to explicitly tell to hide the close icon + */ + this.closeIcon = true; + } + + if(this.closeIcon){ + if(this.closeIconClass){ + // user requires a custom class. + var closeHtml = '<i class="' + this.closeIconClass + '"></i>'; + this.$closeIcon.html(closeHtml); + } + + this.$closeIcon.click(function(e){ + e.preventDefault(); + + var buttonName = false; + var shouldClose = false; + var str; + + if(typeof that.closeIcon === 'function'){ + str = that.closeIcon(); + }else{ + str = that.closeIcon; + } + + if(typeof str === 'string' && typeof that.buttons[str] !== 'undefined'){ + buttonName = str; + shouldClose = false; + }else if(typeof str === 'undefined' || !!(str) === true){ + shouldClose = true; + }else{ + shouldClose = false; + } + if(buttonName){ + var btnResponse = that.buttons[buttonName].action.apply(that); + shouldClose = (typeof btnResponse === 'undefined') || !!(btnResponse); + } + if(shouldClose){ + that.close(); + } + }); + this.$closeIcon.show(); + }else{ + this.$closeIcon.hide(); + } + }, + setTitle: function(string, force){ + force = force || false; + + if(typeof string !== 'undefined') + if(typeof string === 'string') + this.title = string; + else if(typeof string === 'function'){ + if(typeof string.promise === 'function') + console.error('Promise was returned from title function, this is not supported.'); + + var response = string(); + if(typeof response === 'string') + this.title = response; + else + this.title = false; + }else + this.title = false; + + if(this.isAjaxLoading && !force) + return; + + this.$title.html(this.title || ''); + this.updateTitleContainer(); + }, + setIcon: function(iconClass, force){ + force = force || false; + + if(typeof iconClass !== 'undefined') + if(typeof iconClass === 'string') + this.icon = iconClass; + else if(typeof iconClass === 'function'){ + var response = iconClass(); + if(typeof response === 'string') + this.icon = response; + else + this.icon = false; + } + else + this.icon = false; + + if(this.isAjaxLoading && !force) + return; + + this.$icon.html(this.icon ? '<i class="' + this.icon + '"></i>' : ''); + this.updateTitleContainer(); + }, + updateTitleContainer: function(){ + if(!this.title && !this.icon){ + this.$titleContainer.hide(); + }else{ + this.$titleContainer.show(); + } + }, + setContentPrepend: function(content, force){ + if(!content) + return; + + this.contentParsed.prepend(content); + }, + setContentAppend: function(content){ + if(!content) + return; + + this.contentParsed.append(content); + }, + setContent: function(content, force){ + force = !!force; + var that = this; + if(content) + this.contentParsed.html('').append(content); + if(this.isAjaxLoading && !force) + return; + + this.$content.html(''); + this.$content.append(this.contentParsed); + setTimeout(function(){ + that.$body.find('input[autofocus]:visible:first').focus(); + }, 100); + }, + loadingSpinner: false, + showLoading: function(disableButtons){ + this.loadingSpinner = true; + this.$jconfirmBox.addClass('loading'); + if(disableButtons) + this.$btnc.find('button').prop('disabled', true); + + }, + hideLoading: function(enableButtons){ + this.loadingSpinner = false; + this.$jconfirmBox.removeClass('loading'); + if(enableButtons) + this.$btnc.find('button').prop('disabled', false); + + }, + ajaxResponse: false, + contentParsed: '', + isAjax: false, + isAjaxLoading: false, + _parseContent: function(){ + var that = this; + var e = ' '; + + if(typeof this.content === 'function'){ + var res = this.content.apply(this); + if(typeof res === 'string'){ + this.content = res; + } + else if(typeof res === 'object' && typeof res.always === 'function'){ + // this is ajax loading via promise + this.isAjax = true; + this.isAjaxLoading = true; + res.always(function(data, status, xhr){ + that.ajaxResponse = { + data: data, + status: status, + xhr: xhr + }; + that._contentReady.resolve(data, status, xhr); + if(typeof that.contentLoaded === 'function') + that.contentLoaded(data, status, xhr); + }); + this.content = e; + }else{ + this.content = e; + } + } + + if(typeof this.content === 'string' && this.content.substr(0, 4).toLowerCase() === 'url:'){ + this.isAjax = true; + this.isAjaxLoading = true; + var u = this.content.substring(4, this.content.length); + $.get(u).done(function(html){ + that.contentParsed.html(html); + }).always(function(data, status, xhr){ + that.ajaxResponse = { + data: data, + status: status, + xhr: xhr + }; + that._contentReady.resolve(data, status, xhr); + if(typeof that.contentLoaded === 'function') + that.contentLoaded(data, status, xhr); + }); + } + + if(!this.content) + this.content = e; + + if(!this.isAjax){ + this.contentParsed.html(this.content); + this.setContent(); + that._contentReady.resolve(); + } + }, + _stopCountDown: function(){ + clearInterval(this.autoCloseInterval); + if(this.$cd) + this.$cd.remove(); + }, + _startCountDown: function(){ + var that = this; + var opt = this.autoClose.split('|'); + if(opt.length !== 2){ + console.error('Invalid option for autoClose. example \'close|10000\''); + return false; + } + + var button_key = opt[0]; + var time = parseInt(opt[1]); + if(typeof this.buttons[button_key] === 'undefined'){ + console.error('Invalid button key \'' + button_key + '\' for autoClose'); + return false; + } + + var seconds = Math.ceil(time / 1000); + this.$cd = $('<span class="countdown"> (' + seconds + ')</span>') + .appendTo(this['$_' + button_key]); + + this.autoCloseInterval = setInterval(function(){ + that.$cd.html(' (' + (seconds -= 1) + ') '); + if(seconds <= 0){ + that['$$' + button_key].trigger('click'); + that._stopCountDown(); + } + }, 1000); + }, + _getKey: function(key){ + // very necessary keys. + switch(key){ + case 192: + return 'tilde'; + case 13: + return 'enter'; + case 16: + return 'shift'; + case 9: + return 'tab'; + case 20: + return 'capslock'; + case 17: + return 'ctrl'; + case 91: + return 'win'; + case 18: + return 'alt'; + case 27: + return 'esc'; + case 32: + return 'space'; + } + + // only trust alphabets with this. + var initial = String.fromCharCode(key); + if(/^[A-z0-9]+$/.test(initial)) + return initial.toLowerCase(); + else + return false; + }, + reactOnKey: function(e){ + var that = this; + + /* + Prevent keyup event if the dialog is not last! + */ + var a = $('.jconfirm'); + if(a.eq(a.length - 1)[0] !== this.$el[0]) + return false; + + var key = e.which; + /* + Do not react if Enter or Space is pressed on input elements + */ + if(this.$content.find(':input').is(':focus') && /13|32/.test(key)) + return false; + + var keyChar = this._getKey(key); + + // If esc is pressed + if(keyChar === 'esc' && this.escapeKey){ + if(this.escapeKey === true){ + this.$scrollPane.trigger('click'); + } + else if(typeof this.escapeKey === 'string' || typeof this.escapeKey === 'function'){ + var buttonKey; + if(typeof this.escapeKey === 'function'){ + buttonKey = this.escapeKey(); + }else{ + buttonKey = this.escapeKey; + } + + if(buttonKey) + if(typeof this.buttons[buttonKey] === 'undefined'){ + console.warn('Invalid escapeKey, no buttons found with key ' + buttonKey); + }else{ + this['$_' + buttonKey].trigger('click'); + } + } + } + + // check if any button is listening to this key. + $.each(this.buttons, function(key, button){ + if(button.keys.indexOf(keyChar) !== -1){ + that['$_' + key].trigger('click'); + } + }); + }, + setDialogCenter: function(){ + console.info('setDialogCenter is deprecated, dialogs are centered with CSS3 tables'); + }, + _unwatchContent: function(){ + clearInterval(this._timer); + }, + close: function(onClosePayload){ + var that = this; + + if(typeof this.onClose === 'function') + this.onClose(onClosePayload); + + this._unwatchContent(); + + /* + unbind the window resize & keyup event. + */ + $(window).unbind('resize.' + this._id); + $(window).unbind('keyup.' + this._id); + $(window).unbind('jcKeyDown.' + this._id); + + if(this.draggable){ + $(window).unbind('mousemove.' + this._id); + $(window).unbind('mouseup.' + this._id); + this.$titleContainer.unbind('mousedown'); + } + + that.$el.removeClass(that.loadedClass); + $('body').removeClass('jconfirm-no-scroll-' + that._id); + that.$jconfirmBoxContainer.removeClass('jconfirm-no-transition'); + + setTimeout(function(){ + that.$body.addClass(that.closeAnimationParsed); + that.$jconfirmBg.addClass('jconfirm-bg-h'); + var closeTimer = (that.closeAnimation === 'none') ? 1 : that.animationSpeed; + + setTimeout(function(){ + that.$el.remove(); + + var l = w.jconfirm.instances; + var i = w.jconfirm.instances.length - 1; + for(i; i >= 0; i--){ + if(w.jconfirm.instances[i]._id === that._id){ + w.jconfirm.instances.splice(i, 1); + } + } + + // Focusing a element, scrolls automatically to that element. + // no instances should be open, lastFocused should be true, the lastFocused element must exists in DOM + if(!w.jconfirm.instances.length){ + if(that.scrollToPreviousElement && w.jconfirm.lastFocused && w.jconfirm.lastFocused.length && $.contains(document, w.jconfirm.lastFocused[0])){ + var $lf = w.jconfirm.lastFocused; + if(that.scrollToPreviousElementAnimate){ + var st = $(window).scrollTop(); + var ot = w.jconfirm.lastFocused.offset().top; + var wh = $(window).height(); + if(!(ot > st && ot < (st + wh))){ + var scrollTo = (ot - Math.round((wh / 3))); + $('html, body').animate({ + scrollTop: scrollTo + }, that.animationSpeed, 'swing', function(){ + // gracefully scroll and then focus. + $lf.focus(); + }); + }else{ + // the element to be focused is already in view. + $lf.focus(); + } + }else{ + $lf.focus(); + } + w.jconfirm.lastFocused = false; + } + } + + if(typeof that.onDestroy === 'function') + that.onDestroy(); + + }, closeTimer * 0.40); + }, 50); + + return true; + }, + open: function(){ + if(this.isOpen()) + return false; + + // var that = this; + this._buildHTML(); + this._bindEvents(); + this._open(); + + return true; + }, + setStartingPoint: function(){ + var el = false; + + if(this.animateFromElement !== true && this.animateFromElement){ + el = this.animateFromElement; + w.jconfirm.lastClicked = false; + }else if(w.jconfirm.lastClicked && this.animateFromElement === true){ + el = w.jconfirm.lastClicked; + w.jconfirm.lastClicked = false; + }else{ + return false; + } + + if(!el) + return false; + + var offset = el.offset(); + + var iTop = el.outerHeight() / 2; + var iLeft = el.outerWidth() / 2; + + // placing position of jconfirm modal in center of clicked element + iTop -= this.$jconfirmBox.outerHeight() / 2; + iLeft -= this.$jconfirmBox.outerWidth() / 2; + + // absolute position on screen + var sourceTop = offset.top + iTop; + sourceTop = sourceTop - this._scrollTop(); + var sourceLeft = offset.left + iLeft; + + // window halved + var wh = $(window).height() / 2; + var ww = $(window).width() / 2; + + var targetH = wh - this.$jconfirmBox.outerHeight() / 2; + var targetW = ww - this.$jconfirmBox.outerWidth() / 2; + + sourceTop -= targetH; + sourceLeft -= targetW; + + // Check if the element is inside the viewable window. + if(Math.abs(sourceTop) > wh || Math.abs(sourceLeft) > ww) + return false; + + this.$jconfirmBoxContainer.css('transform', 'translate(' + sourceLeft + 'px, ' + sourceTop + 'px)'); + }, + _open: function(){ + var that = this; + if(typeof that.onOpenBefore === 'function') + that.onOpenBefore(); + + this.$body.removeClass(this.animationParsed); + this.$jconfirmBg.removeClass('jconfirm-bg-h'); + this.$body.focus(); + + that.$jconfirmBoxContainer.css('transform', 'translate(' + 0 + 'px, ' + 0 + 'px)'); + + setTimeout(function(){ + that.$body.css(that._getCSS(that.animationSpeed, 1)); + that.$body.css({ + 'transition-property': that.$body.css('transition-property') + ', margin' + }); + that.$jconfirmBoxContainer.addClass('jconfirm-no-transition'); + that._modalReady.resolve(); + if(typeof that.onOpen === 'function') + that.onOpen(); + + that.$el.addClass(that.loadedClass); + }, this.animationSpeed); + }, + loadedClass: 'jconfirm-open', + isClosed: function(){ + return !this.$el || this.$el.parent().length === 0; + }, + isOpen: function(){ + return !this.isClosed(); + }, + toggle: function(){ + if(!this.isOpen()) + this.open(); + else + this.close(); + } + }; + + w.jconfirm.instances = []; + w.jconfirm.lastFocused = false; + w.jconfirm.pluginDefaults = { + template: '' + + '<div class="jconfirm">' + + '<div class="jconfirm-bg jconfirm-bg-h"></div>' + + '<div class="jconfirm-scrollpane">' + + '<div class="jconfirm-row">' + + '<div class="jconfirm-cell">' + + '<div class="jconfirm-holder">' + + '<div class="jc-bs3-container">' + + '<div class="jc-bs3-row">' + + '<div class="jconfirm-box-container jconfirm-animated">' + + '<div class="jconfirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1">' + + '<div class="jconfirm-closeIcon">×</div>' + + '<div class="jconfirm-title-c">' + + '<span class="jconfirm-icon-c"></span>' + + '<span class="jconfirm-title"></span>' + + '</div>' + + '<div class="jconfirm-content-pane">' + + '<div class="jconfirm-content"></div>' + + '</div>' + + '<div class="jconfirm-buttons">' + + '</div>' + + '<div class="jconfirm-clear">' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '</div></div>', + title: 'Hello', + titleClass: '', + type: 'default', + typeAnimated: true, + draggable: true, + dragWindowGap: 15, + dragWindowBorder: true, + animateFromElement: true, + /** + * @deprecated + */ + alignMiddle: true, + smoothContent: true, + content: 'Are you sure to continue?', + buttons: {}, + defaultButtons: { + ok: { + action: function(){ + } + }, + close: { + action: function(){ + } + } + }, + contentLoaded: function(){ + }, + icon: '', + lazyOpen: false, + bgOpacity: null, + theme: 'light', + animation: 'scale', + closeAnimation: 'scale', + animationSpeed: 400, + animationBounce: 1, + escapeKey: true, + rtl: false, + container: 'body', + containerFluid: false, + backgroundDismiss: false, + backgroundDismissAnimation: 'shake', + autoClose: false, + closeIcon: null, + closeIconClass: false, + watchInterval: 100, + columnClass: 'col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1', + boxWidth: '50%', + scrollToPreviousElement: true, + scrollToPreviousElementAnimate: true, + useBootstrap: true, + offsetTop: 40, + offsetBottom: 40, + bootstrapClasses: { + container: 'container', + containerFluid: 'container-fluid', + row: 'row' + }, + onContentReady: function(){ + + }, + onOpenBefore: function(){ + + }, + onOpen: function(){ + + }, + onClose: function(){ + + }, + onDestroy: function(){ + + }, + onAction: function(){ + + } + }; + + /** + * This refers to the issue #241 and #246 + * + * Problem: + * Button A is clicked (keydown) using the Keyboard ENTER key + * A opens the jconfirm modal B, + * B has registered ENTER key for one of its button C + * A is released (keyup), B gets the keyup event and triggers C. + * + * Solution: + * Register a global keydown event, that tells jconfirm if the keydown originated inside jconfirm + */ + var keyDown = false; + $(window).on('keydown', function(e){ + if(!keyDown){ + var $target = $(e.target); + var pass = false; + if($target.closest('.jconfirm-box').length) + pass = true; + if(pass) + $(window).trigger('jcKeyDown'); + + keyDown = true; + } + }); + $(window).on('keyup', function(){ + keyDown = false; + }); + w.jconfirm.lastClicked = false; + $(document).on('mousedown', 'button, a, [jc-source]', function(){ + w.jconfirm.lastClicked = $(this); + }); +})); diff --git a/zhengcaioa/zhengcaioa/zhengcaioa.csproj.user b/zhengcaioa/zhengcaioa/zhengcaioa.csproj.user index 67fd912..824e794 100644 --- a/zhengcaioa/zhengcaioa/zhengcaioa.csproj.user +++ b/zhengcaioa/zhengcaioa/zhengcaioa.csproj.user @@ -9,7 +9,7 @@ <View_SelectedScaffolderCategoryPath>root/Common/MVC/View</View_SelectedScaffolderCategoryPath> <Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID> <Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath> - <NameOfLastUsedPublishProfile>FolderProfile</NameOfLastUsedPublishProfile> + <NameOfLastUsedPublishProfile>D:\qianwj\ZCOa\zhengcaioa\zhengcaioa\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile> <WebStackScaffolding_ViewDialogWidth>650</WebStackScaffolding_ViewDialogWidth> <WebStackScaffolding_IsLayoutPageSelected>True</WebStackScaffolding_IsLayoutPageSelected> <WebStackScaffolding_IsPartialViewSelected>False</WebStackScaffolding_IsPartialViewSelected> diff --git "a/\347\224\250\346\210\267\350\241\250\346\233\264\346\226\260.sql" "b/\347\224\250\346\210\267\350\241\250\346\233\264\346\226\260.sql" index 8dff297..8a26f62 100644 --- "a/\347\224\250\346\210\267\350\241\250\346\233\264\346\226\260.sql" +++ "b/\347\224\250\346\210\267\350\241\250\346\233\264\346\226\260.sql" @@ -1,5 +1,7 @@ use zhengcaioa go + +--qwj 2021.6.8 alter table plt_user add ipmac nvarchar(30) null, @@ -12,6 +14,7 @@ is_travelsubsidy nvarchar(1) null go +<<<<<<< HEAD alter table plt_user add @@ -43,3 +46,68 @@ INSERT [dbo].[plt_page] ([Id], [system_id], [page_name], [page_shortcut], [display_seq], [page_path], [page_method], [page_type], [page_superior], [page_ico], [open_type], [rec_status], [creater], [createtime], [modifier], [modifytime]) VALUES (N'e7e0363d-8215-433e-8c63-df902088b160', N'1', N'绩效提成标准', NULL, 3, N'/HrJixiaoticheng/Index', N'01', N'M', N'6a13cb10-35d9-4176-a231-8887948e059e', NULL, 0, N'A', N'e4c93811-b9b1-4998-89f5-c416ebab0c07', CAST(N'2021-06-17T14:53:30.890' AS DateTime), N'e4c93811-b9b1-4998-89f5-c416ebab0c07', CAST(N'2021-06-17T14:54:01.643' AS DateTime)) go +======= +--qwj 2021.6.18 +create table t_sim_bind ( + id int identity, + sim_id nvarchar(40) null, + user_id nvarchar(40) null, + cardpro nvarchar(5) null, + up_time datetime null, + up_user nvarchar(40) null, + constraint PK_T_SIM_BIND primary key (id) +) +go + +create table t_sim_cost ( + id int identity, + sim_id nvarchar(40) null, + user_id nvarchar(40) null, + allow_amount decimal(10,2) null, + bill_amount decimal(10,2) null, + amount decimal(10,2) null, + bill_year int null, + bill_month int null, + accounted_time datetime null, + status nvarchar(1) null, + up_time datetime null, + sub_userid nvarchar(40) null, + audit_time datetime null, + audit_userid nvarchar(40) null, + constraint PK_T_SIM_COST primary key (id) +) +go + +--电话卡类型定义 +insert into [adm_goods_classify] values('d309d1af-5086-453a-b5a2-58b344dfff97','电话卡','A','e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'04') +--补贴字典定义 +insert into [sys_code] values('107bc4e5-f13a-4d25-bd47-e4b1e61aed8a','t_sim_bind','cardpro','电话补贴','A','e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate()) + +insert into [sys_code_dtl]([Id],[code_sn],[code_id],[comments],[sort] ,[rec_status],[creater],[createtime],[modifier],[modifytime]) values('2632d933-31a3-4692-a954-df11bf223854','50','107bc4e5-f13a-4d25-bd47-e4b1e61aed8a','50',1,'A','e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate()) + +insert into [sys_code_dtl]([Id],[code_sn],[code_id],[comments],[sort] ,[rec_status],[creater],[createtime],[modifier],[modifytime]) values('306d666f-e93c-415c-a294-414e34cb3311','100','107bc4e5-f13a-4d25-bd47-e4b1e61aed8a','100',2,'A','e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate()) + +insert into [sys_code_dtl]([Id],[code_sn],[code_id],[comments],[sort] ,[rec_status],[creater],[createtime],[modifier],[modifytime]) values('61711fb1-0b96-4611-9dc0-6c69dfef656c','9999','107bc4e5-f13a-4d25-bd47-e4b1e61aed8a','不限',3,'A','e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate()) + +create view v_sim_bind as +SELECT a.Id, a.goods_name AS simcard, a.goods_status AS simstatus, c.user_id AS userid, b.user_name AS username, + c.cardpro, c.up_time +FROM dbo.adm_goods_manage AS a LEFT OUTER JOIN + dbo.t_sim_bind AS c ON a.Id = c.sim_id LEFT OUTER JOIN + dbo.plt_user AS b ON c.user_id = b.Id +WHERE (a.classify_id = 'd309d1af-5086-453a-b5a2-58b344dfff97' and a.goods_status='A') +go + +--电话卡分配菜单 +insert into [plt_page] values('a3479c03-d554-4e02-b201-487e8e1dfb55','1','电话卡分配','',3,'/Sim/Index/','01','M','967b0bdd-cd5d-4660-8c72-7f744c07751b','',0,'A','e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate()) +--电话费记录明细 +insert into [plt_page] values('5E973843-7EB4-41A6-B49B-192208647B2C','1','电话费用记录','',4,'/SimCost/Index/','01','M','967b0bdd-cd5d-4660-8c72-7f744c07751b','',0,'A','e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate(),'e4c93811-b9b1-4998-89f5-c416ebab0c07',getdate()) + +create view v_sim_cost as + select a.[id],[sim_id],[user_id],[allow_amount],[bill_amount],[bill_year],[bill_month],[status],[up_time] + ,b.goods_name,c.user_name + FROM [t_sim_cost] a inner join adm_goods_manage b on a.sim_id =b.Id + left join plt_user c on a.user_id=c.Id +go + +>>>>>>> a6b6b4303483395bf6ff745f5abf171552afae38 -- Gitblit v1.9.1