diff --git a/HT.Cloud.Web/appsettings.json b/HT.Cloud.Web/appsettings.json index fabfd75..0ea9f8a 100644 --- a/HT.Cloud.Web/appsettings.json +++ b/HT.Cloud.Web/appsettings.json @@ -12,7 +12,7 @@ "LoginMultiple": false, // 是否允许一个账户在多处登录 "AllowCorsSite": "http://localhost:8058", // 允许的其他站点访问Api "DBProvider": "SqlServer", //SqlServer //Oracle - "DBConnectionString": "Data Source=192.168.110.32;Initial Catalog=SCADA;User Id= sa;Password= Sa1qaz;Integrated Security=False;Encrypt=True;TrustServerCertificate=True;", + "DBConnectionString": "Data Source=192.168.110.32;Initial Catalog=HTSCADA;User Id= sa;Password= Sa1qaz;Integrated Security=False;Encrypt=True;TrustServerCertificate=True;", "DBCommandTimeout": 180, // 数据库超时时间,单位秒 "CacheProvider": "Memory", // 缓存使用方式 Redis/Memory "RedisConnectionString": "127.0.0.1:6379", //docker部署 172.17.0.1 diff --git a/HT.Cloud.Web/wwwroot/lib/notify/notify.js b/HT.Cloud.Web/wwwroot/lib/notify/notify.js new file mode 100644 index 0000000..d59bbd5 --- /dev/null +++ b/HT.Cloud.Web/wwwroot/lib/notify/notify.js @@ -0,0 +1,461 @@ +/** + *auth: liuyu 4654081@qq.com + *Date: 2022/9/22 + *Desc: layui消息提示插件 + * */ + +layui.define(function (exports) { + "use strict"; + + function _typeof(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + return _typeof(obj); + } + + !function (global, factory) { + (typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = global || self, global.notify = factory()); + }(void 0, function () { + "use strict"; + + + function c(args, children) { + var el = document.createElement("div"); + + for (var key in args) { + var element = args[key]; + + if (key == "className") { + key = "class"; + el.setAttribute(key, element); + } else if (key[0] == "_") { + el.addEventListener(key.slice(1), element); + } + } + if (typeof children == "string") { + el.innerHTML = children; + } else if (_typeof(children) == "object" && children.tagName) { + el.appendChild(children); + } else if (children) { + for (var i = 0; i < children.length; i++) { + var child = children[i]; + el.appendChild(child); + } + } + + return el; + } + + function addAnimationEnd(el, fn) { + ["a", "webkitA"].forEach(function (prefix) { + var name = prefix + "nimationEnd"; + el.addEventListener(name, function () { + fn(); + }); + }); + } + + function css(el, css) { + for (var key in css) { + el.style[key] = css[key]; + } + + if (el.getAttribute("style") === "") { + el.removeAttribute("style"); + } + } + + function addClass(el, s) { + var c = el.className || ""; + + if (!hasClass(c, s)) { + var arr = c.split(/\s+/); + arr.push(s); + el.className = arr.join(" "); + } + } + + function hasClass(c, s) { + return c.indexOf(s) > -1 ? !0 : !1; + } + + function removeClass(el, s) { + var c = el.className || ""; + + if (hasClass(c, s)) { + var arr = c.split(/\s+/); + var i = arr.indexOf(s); + arr.splice(i, 1); + el.className = arr.join(" "); + } + + if (el.className === "") { + el.removeAttribute("class"); + } + } + + var initArgs = { + elem:"body", //默认显示在body,可以指定class或id + msg: "", //文字内容 + position: 'topCenter', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, vcenter + duration: 3000, //默认3秒关闭 + showClose: true, //显示关闭按钮 + shadow:false + }; + var positionB=['bottomLeft','bottomCenter','bottomRight']; + var notify = { + info: function info() { + initConfig(arguments, "info"); + }, + success: function success() { + initConfig(arguments, "success"); + }, + warning: function warning() { + initConfig(arguments, "warning"); + }, + error: function error() { + initConfig(arguments, "error"); + }, + loading: function loading() { + return initConfig(arguments, "loading"); + }, + alert: function loading() { + return initConfig(arguments, "alert"); + }, + confirm: function loading() { + return initConfig(arguments, "confirm"); + }, + destroyAll: function destroyAll() { + _destroyAll(); + }, + config: function config(obj) { + for (var key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + if (obj[key] !== undefined) { + initArgs[key] = obj[key]; + } + } + } + } + }; + + function initConfig(obj, type) { + var args = {}; + for (var key in initArgs) { + args[key] = initArgs[key]; + } + var posArr = ["bottomRight", "bottomLeft", "topRight", "topLeft", "topCenter", "bottomCenter", "vcenter"]; + for (var i = 0; i < obj.length; i++) { + var it = obj[i]; + + if (it !== undefined) { + if (typeof it == "string" || _typeof(it) === "object") { + if (posArr.indexOf(it) > -1) { + args.position = it; + } else if(it.substring(0,1)=="."||it.substring(0,1)=="#"){ + args.elem=it; + }else if(it=="shadow"){ + args.shadow=true; + }else { + args.msg = it; + } + + } else if (typeof it == "boolean") { + args.showClose = it; + } else if (typeof it == "function") { + args.onClose = it; + } else if (typeof it == "number") { + args.duration = it; + } else if (typeof it == "number") { + args.duration = it; + } + } + } + + args.type = type; + return createMsgEl(args); + } + + var msgWrappers = new Array(); + + function createMsgEl(args) { + var _msgWrapper; + var type = args.type, + elem = args.elem, + duration = args.duration, + msg = args.msg, + position = args.position, + closable = args.showClose, + shadow = args.shadow, + onClose = args.onClose; + var iconObj = getIconObj(); + + if (document.getElementsByClassName(position)[0]) { + _msgWrapper = document.getElementsByClassName(position)[0]; + } else { + _msgWrapper = c({ + className: "notify-msg-stage " + position + }); + msgWrappers.push(_msgWrapper); + } + + if (type === "loading") { + msg = msg === "" ? "正在加载,请稍后" : msg; + closable = false; //loading不显示关闭按钮 + } + + var el,an; + + if(positionB.indexOf(position)!=-1){ + if(type=="alert" || type =="confirm"){ + an="bounceIn"; + }else{ + an="notify-bottom notify-msg-fade-in-b"; + } + el = c({ + className: "notify-msg-wrapper" + }, [c({ + className: "notify-msg " + an + " notify-msg-" + type + }, [c({ + className: "notify-msg-icon" + }, iconObj[type]), c({ + className: "notify-msg-content" + }, msg), c({ + className: "notify-msg-wait " + (closable ? "notify-msg-pointer" : ""), + _click: function _click() { + if (closable) { + closeFlag = true; //点击关闭按钮标志 + flag = false; //正常关闭标志 + closeMsg(el, onClose, _msgWrapper,shadow); + } + } + }, getMsgRight(closable,type))])]); + }else{ + if(type=="alert" || type =="confirm"){ + an="bounceIn"; + }else{ + an="notify-msg-fade-in"; + } + el = c({ + className: "notify-msg-wrapper" + }, [c({ + className: "notify-msg " + an + " notify-msg-" + type + }, [c({ + className: "notify-msg-icon" + }, iconObj[type]), c({ + className: "notify-msg-content" + }, msg), c({ + className: "notify-msg-wait " + (closable ? "notify-msg-pointer" : ""), + _click: function _click() { + if (closable) { + closeFlag = true; //点击关闭按钮标志 + flag = false; //正常关闭标志 + closeMsg(el, onClose, _msgWrapper,shadow); + } + } + }, getMsgRight(closable,type))])]); + } + + var anm = el.querySelector(".notify-msg__circle"); + + if (anm) { + css(anm, { + animation: "notify-msg_" + type + " " + duration + "ms linear" + }); + + if ("onanimationend" in window) { + addAnimationEnd(anm, function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }); + } else { + setTimeout(function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }, duration); + } + } + + if (type != "loading" && type != "alert" && type != "confirm") { + setTimeout(function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }, duration); + } + //遮罩 + if(shadow &&!document.querySelector(".notify-modal")){ + var shadenode=document.createElement("div"); + if(shadow){ + shadenode.className="notify-modal"; + }else{ + shadenode.className="notify-modal notify-none"; + } + + document.querySelector("body").appendChild(shadenode); + } + if (!_msgWrapper.children.length) { + if(elem!=="body"){ + var _pos=getComputedStyle(document.querySelector(elem)).position; + if(_pos=="static"||_pos==""){ + document.querySelector(elem).style.position="relative"; + } + + _msgWrapper.style.position = "absolute"; + }else{ + _msgWrapper.style.position = "fixed"; + } + document.querySelector(elem).appendChild(_msgWrapper); + } + _msgWrapper.appendChild(el); + if(type=="confirm"){ + var btnCancel=document.createElement("button");//''; + var textNode=document.createTextNode("取 消"); + btnCancel.appendChild(textNode); + btnCancel.className="btnCancel"; + btnCancel.onclick=function(){ + closeMsg(el,'', _msgWrapper,shadow); + + } + document.querySelector(".notify-msg-confirm").appendChild(btnCancel); + + } + css(el, { + height: el.offsetHeight + "px" + }); + setTimeout(function () { + if(positionB.indexOf(position)!=-1){ + removeClass(el.children[0], "notify-msg-fade-in-b"); + }else{ + removeClass(el.children[0], "notify-msg-fade-in"); + } + + }, 300); + + if (type == "loading") { + return function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }; + } + + } + + function getMsgRight(showClose,type) { + if (showClose) { + if(type=="alert" || type=="confirm"){ + return "" + }else{ + return "\n \n "; + } + } + } + + var flag = true; //正常关闭标志 + var closeFlag = false;//点击关闭按钮标志 + + function closeMsg(el, cb, _msgWrapper,shadow) { + if (!el) return; + if(hasClass(el.children[0].className,"notify-bottom")){ + addClass(el.children[0], "notify-msg-fade-out-b"); + }else if(hasClass(el.children[0].className,"bounceIn")){ + addClass(el.children[0], "bounceOut"); + }else{ + addClass(el.children[0], "notify-msg-fade-out"); + } + + if(shadow && document.querySelector(".notify-modal")){ + document.querySelector("body").removeChild(document.querySelector(".notify-modal")); + } + + + if (closeFlag) { //点击关闭按钮 + closeFlag = false; + cb && cb(); //回调方法 + } else { + if (flag) {//正常关闭,全局变量 + cb && cb(); + } else { + flag = true + // return; + } + } + + setTimeout(function () { + + if (!el) return; + var has = false; + if (_msgWrapper) { + for (var i = 0; i < _msgWrapper.children.length; i++) { + if (_msgWrapper.children[i] && _msgWrapper.children[i] === el) { + has = true; + } + } + has && removeChild(el); + el = null; + + if (!_msgWrapper.children.length) { + has && removeChild(_msgWrapper); + } + + } + + }, 300); + } + + function getIconObj() { + return { + info: "\n \n ", + success: "\n \n ", + warning: "\n \n ", + error: "\n \n ", + loading: "\n
\n \n \n \n
\n " + }; + } + + function removeChild(el) { + el && el.parentNode.removeChild(el); + } + + function _destroyAll() { + for (var j = 0; j < msgWrappers.length; j++) { + for (var i = 0; i < msgWrappers[j].children.length; i++) { + var element = msgWrappers[j].children[i]; + closeMsg(element, '', msgWrappers[j]); + } + } + } + + window.addEventListener('DOMContentLoaded', function () { + insertCssInHead(); + }); + + function insertCssInHead() { + var doc = document; + + if (doc && doc.head) { + var head = doc.head; + + var _css = doc.createElement('style'); + + var cssStr = "\n\n[class|=notify],[class|=notify]::after,[class|=notify]::before{box-sizing:border-box;outline:0}.notify-msg-progress{width:13px;height:13px}.notify-msg__circle{stroke-width:2;stroke-linecap:square;fill:none;transform:rotate(-90deg);transform-origin:center}.notify-msg-stage:hover .notify-msg__circle{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}.notify-msg__background{stroke-width:2;fill:none}.notify-msg-stage{position:fixed;width:auto;z-index:99891015}.topLeft{top:20px;left:20px}.topCenter{top:20px;left:50%;transform:translate(-50%,0)}.topRight{top:20px;right:20px}.bottomLeft{bottom:20px;left:20px}.bottomCenter{bottom:20px;left:50%;transform:translate(-50%,0)}.bottomRight{bottom:20px;right:20px}.vcenter{top:50%;left:50%;transform:translate(-50%,-50%)}.notify-msg-wrapper{position:relative;left:50%;transform:translate(-50%,0);transform:translate3d(-50%,0,0);transition:height .3s ease,padding .3s ease;padding:6px 0;will-change:transform,opacity}.notify-msg{padding:15px 21px;border-radius:3px;position:relative;left:50%;transform:translate(-50%,0);transform:translate3d(-50%,0,0);display:flex;align-items:center}.notify-msg-content,.notify-msg-icon,.notify-msg-wait{display:inline-block}.notify-msg-icon{position:relative;width:13px;height:13px;border-radius:100%;display:flex;justify-content:center;align-items:center}.notify-msg-icon svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:11px;height:11px}.notify-msg-wait{width:20px;height:20px;position:relative;fill:#4eb127}.notify-msg-wait svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.notify-msg-close{width:14px;height:14px}.notify-msg-content{margin:0 10px;min-width:240px;text-align:left;font-size:14px;font-weight:500;font-family:-apple-system,Microsoft Yahei,sans-serif;text-shadow:0 0 1px rgba(0,0,0,.01)}.notify-msg.notify-msg-info{color:#0c5460;background-color:#e6f4ff;box-shadow:0 0 2px 0 rgba(0,1,1,.01),0 0 0 1px #91caff}.notify-msg.notify-msg-info .notify-msg-icon{background-color:#1d96aa}.notify-msg.notify-msg-success{color:#155724;background-color:#f6ffed;box-shadow:0 0 2px 0 rgba(0,1,0,.01),0 0 0 1px #b7eb8f}.notify-msg.notify-msg-success .notify-msg-icon{background-color:#4ebb23}.notify-msg.notify-msg-warning{color:#856404;background-color:#fffbe6;box-shadow:0 0 2px 0 rgba(1,1,0,.01),0 0 0 1px #ffe58f}.notify-msg.notify-msg-warning .notify-msg-icon{background-color:#f1b306}.notify-msg.notify-msg-error{color:#721c24;background-color:#fff2f0;box-shadow:0 0 2px 0 rgba(1,0,0,.01),0 0 0 1px #ffccc7}.notify-msg.notify-msg-error .notify-msg-icon{background-color:#f34b51}.notify-msg.notify-msg-loading{color:#0fafad;background-color:#e7fdfc;box-shadow:0 0 2px 0 rgba(0,1,1,.01),0 0 0 1px #c2faf9}.notify-msg_loading{flex-shrink:0;width:20px;height:20px;position:relative}.notify-msg-circular{-webkit-animation:notify-msg-rotate 2s linear infinite both;animation:notify-msg-rotate 2s linear infinite both;transform-origin:center center;height:18px!important;width:18px!important}.notify-msg-path{stroke-dasharray:1,200;stroke-dashoffset:0;stroke:#0fafad;-webkit-animation:notify-msg-dash 1.5s ease-in-out infinite;animation:notify-msg-dash 1.5s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes notify-msg-rotate{100%{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes notify-msg-rotate{100%{transform:translate(-50%,-50%) rotate(360deg)}}@-webkit-keyframes notify-msg-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes notify-msg-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.notify-msg.notify-msg-info .notify-msg-wait{fill:#0fafad}.notify-msg.notify-msg-success .notify-msg-wait{fill:#4ebb23}.notify-msg.notify-msg-warning .notify-msg-wait{fill:#f1b306}.notify-msg.notify-msg-error .notify-msg-wait{fill:#f34b51}.notify-msg.notify-msg-loading .notify-msg-wait{fill:#0fafad}.notify-msg.notify-msg-alert .notify-msg-wait{fill:#999}.notify-msg.notify-msg-alert .notify-msg-content,.notify-msg.notify-msg-confirm .notify-msg-content{font-size:18px}.notify-msg.notify-msg-alert .notify-msg-wait{display:block;width:100px;height:auto;margin:auto;margin-top:30px}.notify-msg.notify-msg-confirm .notify-msg-wait{display:inline-block;width:100px;height:auto;margin:auto}.notify-msg.notify-msg-confirm .notify-msg-content{display:block;margin-bottom:30px}.notify-msg.notify-msg-alert .notify-msg-wait .btnOk,.notify-msg.notify-msg-confirm .notify-msg-wait .btnOk{line-height:30px;border-radius:4px;background-color:#0069d9;border:1px solid #0062cc;color:#fff;width:100px;cursor:pointer}.notify-msg.notify-msg-confirm .btnCancel{line-height:30px;border-radius:4px;background-color:#fff;border:1px solid #ddd;color:#666;width:100px;cursor:pointer;margin-left:6px}.notify-msg-pointer{cursor:pointer}@-webkit-keyframes notify-msg_info{0%{stroke:#0fafad}to{stroke:#0fafad;stroke-dasharray:0 100}}@keyframes notify-msg_info{0%{stroke:#0fafad}to{stroke:#0fafad;stroke-dasharray:0 100}}@-webkit-keyframes notify-msg_success{0%{stroke:#4eb127}to{stroke:#4eb127;stroke-dasharray:0 100}}@keyframes notify-msg_success{0%{stroke:#4eb127}to{stroke:#4eb127;stroke-dasharray:0 100}}@-webkit-keyframes notify-msg_warning{0%{stroke:#fcbc0b}to{stroke:#fcbc0b;stroke-dasharray:0 100}}@keyframes notify-msg_warning{0%{stroke:#fcbc0b}to{stroke:#fcbc0b;stroke-dasharray:0 100}}@-webkit-keyframes notify-msg_error{0%{stroke:#eb262d}to{stroke:#eb262d;stroke-dasharray:0 100}}@keyframes notify-msg_error{0%{stroke:#eb262d}to{stroke:#eb262d;stroke-dasharray:0 100}}.notify-msg-fade-in{-webkit-animation:notify-msg-fade .2s ease-out both;animation:notify-msg-fade .2s ease-out both}.notify-msg-fade-out{animation:notify-msg-fade .3s linear reverse both}@-webkit-keyframes notify-msg-fade{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,-80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0,0)}}@keyframes notify-msg-fade{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,-80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0,0)}}.notify-msg-fade-in-b{-webkit-animation:notify-msg-fade-b .2s ease-out both;animation:notify-msg-fade-b .2s ease-out both}.notify-msg-fade-out-b{animation:notify-msg-fade-b .3s linear reverse both}@-webkit-keyframes notify-msg-fade-b{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0,0)}}@keyframes notify-msg-fade-b{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0%,0)}}.notify-msg.notify-msg-alert,.notify-msg.notify-msg-confirm{display:block;box-shadow:0 0 6px 2px rgba(0,0,0,.1);background-color:#fff;border:1px solid #ccc}.bounceIn,.bounceOut{-webkit-animation-duration:.45s;-moz-animation-duration:.45s;-o-animation-duration:.45s;animation-duration:.45s}@keyframes bounceIn{0%{opacity:0;filter:alpha(opacity=0)}100%{opacity:1;filter:alpha(opacity=100)}}.bounceIn{-webkit-animation-name:bounceIn;-moz-animation-name:bounceIn;-o-animation-name:bounceIn;animation-name:bounceIn}@keyframes bounceOut{0%{opacity:1;filter:alpha(opacity=100)}100%{opacity:0;filter:alpha(opacity=0)}}.bounceOut{-webkit-animation-name:bounceOut;-moz-animation-name:bounceOut;-o-animation-name:bounceOut;animation-name:bounceOut}.notify-none{display:none}.notify-modal{z-index: 99891014;left:0;top:0;width:100%;height:100%;background:#000;opacity:0.6;filter:alpha(opacity=60);position:fixed;transition:height .3s ease,padding .3s ease}\n "; + _css.innerHTML = cssStr; + + if (head.children.length) { + head.insertBefore(_css, head.children[0]); + } else { + head.appendChild(_css); + } + } + } + + return notify; + }); + + + //输出接口 + exports('notify', notify); +}); \ No newline at end of file diff --git a/HT.Cloud.Web/wwwroot/lib/notify/notify_stand.js b/HT.Cloud.Web/wwwroot/lib/notify/notify_stand.js new file mode 100644 index 0000000..57ae4e2 --- /dev/null +++ b/HT.Cloud.Web/wwwroot/lib/notify/notify_stand.js @@ -0,0 +1,468 @@ +/** + *auth: liuyu 4654081@qq.com + *Date: 2022/9/22 + *Desc: 消息提示插件-支持自定义位置显示,独立版本 + **/ +"use strict"; + + function _typeof(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + return _typeof(obj); + } + + !function (global, factory) { + (typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = global || self, global.notify = factory()); + }(void 0, function () { + "use strict"; + + + function c(args, children) { + var el = document.createElement("div"); + + for (var key in args) { + var element = args[key]; + + if (key == "className") { + key = "class"; + el.setAttribute(key, element); + } else if (key[0] == "_") { + el.addEventListener(key.slice(1), element); + } + } + if (typeof children == "string") { + el.innerHTML = children; + } else if (_typeof(children) == "object" && children.tagName) { + el.appendChild(children); + } else if (children) { + for (var i = 0; i < children.length; i++) { + var child = children[i]; + el.appendChild(child); + } + } + + return el; + } + + function addAnimationEnd(el, fn) { + ["a", "webkitA"].forEach(function (prefix) { + var name = prefix + "nimationEnd"; + el.addEventListener(name, function () { + fn(); + }); + }); + } + + function css(el, css) { + for (var key in css) { + el.style[key] = css[key]; + } + + if (el.getAttribute("style") === "") { + el.removeAttribute("style"); + } + } + + function addClass(el, s) { + var c = el.className || ""; + + if (!hasClass(c, s)) { + var arr = c.split(/\s+/); + arr.push(s); + el.className = arr.join(" "); + } + } + + function hasClass(c, s) { + return c.indexOf(s) > -1 ? !0 : !1; + } + + function removeClass(el, s) { + var c = el.className || ""; + + if (hasClass(c, s)) { + var arr = c.split(/\s+/); + var i = arr.indexOf(s); + arr.splice(i, 1); + el.className = arr.join(" "); + } + + if (el.className === "") { + el.removeAttribute("class"); + } + } + + var initArgs = { + elem:"body", //默认显示在body,可以指定class或id + msg: "", //文字内容 + position: 'topCenter', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, vcenter + duration: 3000, //默认3秒关闭 + showClose: true, //显示关闭按钮 + shadow:false + }; + var positionB=['bottomLeft','bottomCenter','bottomRight']; + var notify = { + info: function info() { + initConfig(arguments, "info"); + }, + success: function success() { + initConfig(arguments, "success"); + }, + warning: function warning() { + initConfig(arguments, "warning"); + }, + error: function error() { + initConfig(arguments, "error"); + }, + loading: function loading() { + return initConfig(arguments, "loading"); + }, + alert: function loading() { + return initConfig(arguments, "alert"); + }, + confirm: function loading() { + return initConfig(arguments, "confirm"); + }, + destroyAll: function destroyAll() { + _destroyAll(); + }, + config: function config(obj) { + for (var key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + if (obj[key] !== undefined) { + initArgs[key] = obj[key]; + } + } + } + } + }; + + function initConfig(obj, type) { + var args = {}; + for (var key in initArgs) { + args[key] = initArgs[key]; + } + var posArr = ["bottomRight", "bottomLeft", "topRight", "topLeft", "topCenter", "bottomCenter", "vcenter"]; + for (var i = 0; i < obj.length; i++) { + var it = obj[i]; + + if (it !== undefined) { + if (typeof it == "string" || _typeof(it) === "object") { + if (posArr.indexOf(it) > -1) { + args.position = it; + } else if(it.substring(0,1)=="."||it.substring(0,1)=="#"){ + args.elem=it; + }else if(it=="shadow"){ + args.shadow=true; + }else { + args.msg = it; + } + + } else if (typeof it == "boolean") { + args.showClose = it; + } else if (typeof it == "function") { + args.onClose = it; + } else if (typeof it == "number") { + args.duration = it; + } else if (typeof it == "number") { + args.duration = it; + } + } + } + + args.type = type; + return createMsgEl(args); + } + + var msgWrappers = new Array(); + + function createMsgEl(args) { + var _msgWrapper; + var type = args.type, + elem = args.elem, + duration = args.duration, + msg = args.msg, + position = args.position, + closable = args.showClose, + shadow = args.shadow, + onClose = args.onClose; + var iconObj = getIconObj(); + + if (document.getElementsByClassName(position)[0]) { + _msgWrapper = document.getElementsByClassName(position)[0]; + } else { + _msgWrapper = c({ + className: "notify-msg-stage " + position + }); + msgWrappers.push(_msgWrapper); + } + + if (type === "loading") { + msg = msg === "" ? "正在加载,请稍后" : msg; + closable = false; //loading不显示关闭按钮 + } + + var el,an; + + if(positionB.indexOf(position)!=-1){ + if(type=="alert" || type =="confirm"){ + an="bounceIn"; + }else{ + an="notify-bottom notify-msg-fade-in-b"; + } + el = c({ + className: "notify-msg-wrapper" + }, [c({ + className: "notify-msg " + an + " notify-msg-" + type + }, [c({ + className: "notify-msg-icon" + }, iconObj[type]), c({ + className: "notify-msg-content" + }, msg), c({ + className: "notify-msg-wait " + (closable ? "notify-msg-pointer" : ""), + _click: function _click() { + if (closable) { + closeFlag = true; //点击关闭按钮标志 + flag = false; //正常关闭标志 + closeMsg(el, onClose, _msgWrapper,shadow); + } + } + }, getMsgRight(closable,type))])]); + }else{ + if(type=="alert" || type =="confirm"){ + an="bounceIn"; + }else{ + an="notify-msg-fade-in"; + } + el = c({ + className: "notify-msg-wrapper" + }, [c({ + className: "notify-msg " + an + " notify-msg-" + type + }, [c({ + className: "notify-msg-icon" + }, iconObj[type]), c({ + className: "notify-msg-content" + }, msg), c({ + className: "notify-msg-wait " + (closable ? "notify-msg-pointer" : ""), + _click: function _click() { + if (closable) { + closeFlag = true; //点击关闭按钮标志 + flag = false; //正常关闭标志 + closeMsg(el, onClose, _msgWrapper,shadow); + } + } + }, getMsgRight(closable,type))])]); + } + + var anm = el.querySelector(".notify-msg__circle"); + + if (anm) { + css(anm, { + animation: "notify-msg_" + type + " " + duration + "ms linear" + }); + + if ("onanimationend" in window) { + addAnimationEnd(anm, function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }); + } else { + setTimeout(function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }, duration); + } + } + + if (type != "loading" && type != "alert" && type != "confirm") { + setTimeout(function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }, duration); + } + //遮罩 + if(shadow &&!document.querySelector(".notify-modal")){ + var shadenode=document.createElement("div"); + if(shadow){ + shadenode.className="notify-modal"; + }else{ + shadenode.className="notify-modal notify-none"; + } + + document.querySelector("body").appendChild(shadenode); + } + if (!_msgWrapper.children.length) { + if(elem!=="body"){ + var _pos=getComputedStyle(document.querySelector(elem)).position; + if(_pos=="static"||_pos==""){ + document.querySelector(elem).style.position="relative"; + } + + _msgWrapper.style.position = "absolute"; + }else{ + _msgWrapper.style.position = "fixed"; + } + document.querySelector(elem).appendChild(_msgWrapper); + } + _msgWrapper.appendChild(el); + if(type=="confirm"){ + var btnCancel=document.createElement("button");//''; + var textNode=document.createTextNode("取 消"); + btnCancel.appendChild(textNode); + btnCancel.className="btnCancel"; + btnCancel.onclick=function(){ + closeMsg(el,'', _msgWrapper,shadow); + + } + document.querySelector(".notify-msg-confirm").appendChild(btnCancel); + + } + css(el, { + height: el.offsetHeight + "px" + }); + setTimeout(function () { + if(positionB.indexOf(position)!=-1){ + removeClass(el.children[0], "notify-msg-fade-in-b"); + }else{ + removeClass(el.children[0], "notify-msg-fade-in"); + } + + }, 300); + + if (type == "loading") { + return function () { + closeMsg(el, onClose, _msgWrapper,shadow); + }; + } + + } + + function getMsgRight(showClose,type) { + if (showClose) { + if(type=="alert" || type=="confirm"){ + return "" + }else{ + return "\n \n "; + } + } + } + + var flag = true; //正常关闭标志 + var closeFlag = false;//点击关闭按钮标志 + + function closeMsg(el, cb, _msgWrapper,shadow) { + if (!el) return; + if(hasClass(el.children[0].className,"notify-bottom")){ + addClass(el.children[0], "notify-msg-fade-out-b"); + }else if(hasClass(el.children[0].className,"bounceIn")){ + addClass(el.children[0], "bounceOut"); + }else{ + addClass(el.children[0], "notify-msg-fade-out"); + } + + if(shadow && document.querySelector(".notify-modal")){ + document.querySelector("body").removeChild(document.querySelector(".notify-modal")); + } + + + if (closeFlag) { //点击关闭按钮 + closeFlag = false; + cb && cb(); //回调方法 + } else { + if (flag) {//正常关闭,全局变量 + cb && cb(); + } else { + flag = true + // return; + } + } + + setTimeout(function () { + + if (!el) return; + var has = false; + if (_msgWrapper) { + for (var i = 0; i < _msgWrapper.children.length; i++) { + if (_msgWrapper.children[i] && _msgWrapper.children[i] === el) { + has = true; + } + } + has && removeChild(el); + el = null; + + if (!_msgWrapper.children.length) { + has && removeChild(_msgWrapper); + } + + } + + }, 300); + } + + function getIconObj() { + return { + info: "\n \n ", + success: "\n \n ", + warning: "\n \n ", + error: "\n \n ", + loading: "\n
\n \n \n \n
\n " + }; + } + + function removeChild(el) { + el && el.parentNode.removeChild(el); + } + + function _destroyAll() { + for (var j = 0; j < msgWrappers.length; j++) { + for (var i = 0; i < msgWrappers[j].children.length; i++) { + var element = msgWrappers[j].children[i]; + closeMsg(element, '', msgWrappers[j]); + } + } + } + + window.addEventListener('DOMContentLoaded', function () { + insertCssInHead(); + }); + + function insertCssInHead() { + var doc = document; + + if (doc && doc.head) { + var head = doc.head; + + var _css = doc.createElement('style'); + + var cssStr = "\n\n[class|=notify],[class|=notify]::after,[class|=notify]::before{box-sizing:border-box;outline:0}.notify-msg-progress{width:13px;height:13px}.notify-msg__circle{stroke-width:2;stroke-linecap:square;fill:none;transform:rotate(-90deg);transform-origin:center}.notify-msg-stage:hover .notify-msg__circle{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}.notify-msg__background{stroke-width:2;fill:none}.notify-msg-stage{position:fixed;width:auto;z-index:99891015}.topLeft{top:20px;left:20px}.topCenter{top:20px;left:50%;transform:translate(-50%,0)}.topRight{top:20px;right:20px}.bottomLeft{bottom:20px;left:20px}.bottomCenter{bottom:20px;left:50%;transform:translate(-50%,0)}.bottomRight{bottom:20px;right:20px}.vcenter{top:50%;left:50%;transform:translate(-50%,-50%)}.notify-msg-wrapper{position:relative;left:50%;transform:translate(-50%,0);transform:translate3d(-50%,0,0);transition:height .3s ease,padding .3s ease;padding:6px 0;will-change:transform,opacity}.notify-msg{padding:15px 21px;border-radius:3px;position:relative;left:50%;transform:translate(-50%,0);transform:translate3d(-50%,0,0);display:flex;align-items:center}.notify-msg-content,.notify-msg-icon,.notify-msg-wait{display:inline-block}.notify-msg-icon{position:relative;width:13px;height:13px;border-radius:100%;display:flex;justify-content:center;align-items:center}.notify-msg-icon svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:11px;height:11px}.notify-msg-wait{width:20px;height:20px;position:relative;fill:#4eb127}.notify-msg-wait svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.notify-msg-close{width:14px;height:14px}.notify-msg-content{margin:0 10px;min-width:240px;text-align:left;font-size:14px;font-weight:500;font-family:-apple-system,Microsoft Yahei,sans-serif;text-shadow:0 0 1px rgba(0,0,0,.01)}.notify-msg.notify-msg-info{color:#0c5460;background-color:#e6f4ff;box-shadow:0 0 2px 0 rgba(0,1,1,.01),0 0 0 1px #91caff}.notify-msg.notify-msg-info .notify-msg-icon{background-color:#1d96aa}.notify-msg.notify-msg-success{color:#155724;background-color:#f6ffed;box-shadow:0 0 2px 0 rgba(0,1,0,.01),0 0 0 1px #b7eb8f}.notify-msg.notify-msg-success .notify-msg-icon{background-color:#4ebb23}.notify-msg.notify-msg-warning{color:#856404;background-color:#fffbe6;box-shadow:0 0 2px 0 rgba(1,1,0,.01),0 0 0 1px #ffe58f}.notify-msg.notify-msg-warning .notify-msg-icon{background-color:#f1b306}.notify-msg.notify-msg-error{color:#721c24;background-color:#fff2f0;box-shadow:0 0 2px 0 rgba(1,0,0,.01),0 0 0 1px #ffccc7}.notify-msg.notify-msg-error .notify-msg-icon{background-color:#f34b51}.notify-msg.notify-msg-loading{color:#0fafad;background-color:#e7fdfc;box-shadow:0 0 2px 0 rgba(0,1,1,.01),0 0 0 1px #c2faf9}.notify-msg_loading{flex-shrink:0;width:20px;height:20px;position:relative}.notify-msg-circular{-webkit-animation:notify-msg-rotate 2s linear infinite both;animation:notify-msg-rotate 2s linear infinite both;transform-origin:center center;height:18px!important;width:18px!important}.notify-msg-path{stroke-dasharray:1,200;stroke-dashoffset:0;stroke:#0fafad;-webkit-animation:notify-msg-dash 1.5s ease-in-out infinite;animation:notify-msg-dash 1.5s ease-in-out infinite;stroke-linecap:round}@-webkit-keyframes notify-msg-rotate{100%{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes notify-msg-rotate{100%{transform:translate(-50%,-50%) rotate(360deg)}}@-webkit-keyframes notify-msg-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes notify-msg-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.notify-msg.notify-msg-info .notify-msg-wait{fill:#0fafad}.notify-msg.notify-msg-success .notify-msg-wait{fill:#4ebb23}.notify-msg.notify-msg-warning .notify-msg-wait{fill:#f1b306}.notify-msg.notify-msg-error .notify-msg-wait{fill:#f34b51}.notify-msg.notify-msg-loading .notify-msg-wait{fill:#0fafad}.notify-msg.notify-msg-alert .notify-msg-wait{fill:#999}.notify-msg.notify-msg-alert .notify-msg-content,.notify-msg.notify-msg-confirm .notify-msg-content{font-size:18px}.notify-msg.notify-msg-alert .notify-msg-wait{display:block;width:100px;height:auto;margin:auto;margin-top:30px}.notify-msg.notify-msg-confirm .notify-msg-wait{display:inline-block;width:100px;height:auto;margin:auto}.notify-msg.notify-msg-confirm .notify-msg-content{display:block;margin-bottom:30px}.notify-msg.notify-msg-alert .notify-msg-wait .btnOk,.notify-msg.notify-msg-confirm .notify-msg-wait .btnOk{line-height:30px;border-radius:4px;background-color:#0069d9;border:1px solid #0062cc;color:#fff;width:100px;cursor:pointer}.notify-msg.notify-msg-confirm .btnCancel{line-height:30px;border-radius:4px;background-color:#fff;border:1px solid #ddd;color:#666;width:100px;cursor:pointer;margin-left:6px}.notify-msg-pointer{cursor:pointer}@-webkit-keyframes notify-msg_info{0%{stroke:#0fafad}to{stroke:#0fafad;stroke-dasharray:0 100}}@keyframes notify-msg_info{0%{stroke:#0fafad}to{stroke:#0fafad;stroke-dasharray:0 100}}@-webkit-keyframes notify-msg_success{0%{stroke:#4eb127}to{stroke:#4eb127;stroke-dasharray:0 100}}@keyframes notify-msg_success{0%{stroke:#4eb127}to{stroke:#4eb127;stroke-dasharray:0 100}}@-webkit-keyframes notify-msg_warning{0%{stroke:#fcbc0b}to{stroke:#fcbc0b;stroke-dasharray:0 100}}@keyframes notify-msg_warning{0%{stroke:#fcbc0b}to{stroke:#fcbc0b;stroke-dasharray:0 100}}@-webkit-keyframes notify-msg_error{0%{stroke:#eb262d}to{stroke:#eb262d;stroke-dasharray:0 100}}@keyframes notify-msg_error{0%{stroke:#eb262d}to{stroke:#eb262d;stroke-dasharray:0 100}}.notify-msg-fade-in{-webkit-animation:notify-msg-fade .2s ease-out both;animation:notify-msg-fade .2s ease-out both}.notify-msg-fade-out{animation:notify-msg-fade .3s linear reverse both}@-webkit-keyframes notify-msg-fade{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,-80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0,0)}}@keyframes notify-msg-fade{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,-80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0,0)}}.notify-msg-fade-in-b{-webkit-animation:notify-msg-fade-b .2s ease-out both;animation:notify-msg-fade-b .2s ease-out both}.notify-msg-fade-out-b{animation:notify-msg-fade-b .3s linear reverse both}@-webkit-keyframes notify-msg-fade-b{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0,0)}}@keyframes notify-msg-fade-b{0%{opacity:0;transform:translate(-50%,0);transform:translate3d(-50%,80%,0)}to{opacity:1;transform:translate(-50%,0);transform:translate3d(-50%,0%,0)}}.notify-msg.notify-msg-alert,.notify-msg.notify-msg-confirm{display:block;box-shadow:0 0 6px 2px rgba(0,0,0,.1);background-color:#fff;border:1px solid #ccc}.bounceIn,.bounceOut{-webkit-animation-duration:.45s;-moz-animation-duration:.45s;-o-animation-duration:.45s;animation-duration:.45s}@keyframes bounceIn{0%{opacity:0;filter:alpha(opacity=0)}100%{opacity:1;filter:alpha(opacity=100)}}.bounceIn{-webkit-animation-name:bounceIn;-moz-animation-name:bounceIn;-o-animation-name:bounceIn;animation-name:bounceIn}@keyframes bounceOut{0%{opacity:1;filter:alpha(opacity=100)}100%{opacity:0;filter:alpha(opacity=0)}}.bounceOut{-webkit-animation-name:bounceOut;-moz-animation-name:bounceOut;-o-animation-name:bounceOut;animation-name:bounceOut}.notify-none{display:none}.notify-modal{z-index: 99891014;left:0;top:0;width:100%;height:100%;background:#000;opacity:0.6;filter:alpha(opacity=60);position:fixed;transition:height .3s ease,padding .3s ease}\n "; + _css.innerHTML = cssStr; + + if (head.children.length) { + head.insertBefore(_css, head.children[0]); + } else { + head.appendChild(_css); + } + } + } + + return notify; +}); + +function tips(_msg, _type) { + if (_type === "warning") { + notify.warning(_msg); + } else if (_type === "success") { + notify.success(_msg); + } else if (_type === "info") { + notify.info(_msg); + } else if (_type === "error") { + notify.error(_msg); + } else if (_type === "loading") { + notify.loading(_msg); + } +} \ No newline at end of file