From 8efbcfef1ccb88c0f4020dc5bbfd271ab403ac1d Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期二, 29 三月 2022 16:30:09 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/tpl/theme/img/theme-cyan.png      |    0 
 src/main/webapp/static/css/loader.css                   |   59 ++
 src/main/webapp/views/tpl/theme/img/theme-pink.png      |    0 
 src/main/webapp/views/tpl/theme/img/ic_loading.gif      |    0 
 src/main/webapp/views/tpl/alarm-detl.html               |   52 ++
 src/main/webapp/views/tpl/theme/img/theme-admin.png     |    0 
 src/main/webapp/views/tpl/theme/img/theme-colorful.png  |    0 
 src/main/webapp/views/tpl/tpl-theme.html                |  229 +++++++++
 src/main/webapp/views/tpl/theme/img/theme-red.png       |    0 
 src/main/webapp/views/tpl/theme/img/theme-green.png     |    0 
 src/main/webapp/views/order/order.html                  |   19 
 src/main/webapp/views/tpl/theme/img/theme-my.png        |    0 
 src/main/webapp/views/tpl/theme/img/icon_date.png       |    0 
 src/main/webapp/views/tpl/tpl-note.html                 |  206 ++++++++
 src/main/webapp/static/image/favicon.ico                |    0 
 src/main/webapp/static/layui/lay/modules/contextMenu.js |  228 +++++++++
 src/main/webapp/views/index.html                        |  371 ++++++--------
 src/main/webapp/views/tpl/theme/img/theme-blue.png      |    0 
 src/main/webapp/views/tpl/theme/img/theme-white.png     |    0 
 src/main/webapp/views/tpl/theme/img/icon_search.png     |    0 
 src/main/webapp/views/tpl/theme/img/theme-purple.png    |    0 
 src/main/webapp/static/layui/lay/modules/index.js       |  302 ++++++++++++
 22 files changed, 1,249 insertions(+), 217 deletions(-)

diff --git a/src/main/webapp/static/css/loader.css b/src/main/webapp/static/css/loader.css
new file mode 100644
index 0000000..6990738
--- /dev/null
+++ b/src/main/webapp/static/css/loader.css
@@ -0,0 +1,59 @@
+/**鍒濆鍖栧姞杞藉眰*/
+.layuimini-loader {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: #ffffff;
+    z-index: 999999;
+}
+
+.layuimini-loader .layuimini-loader-inner {
+    display: block;
+    position: relative;
+    left: 50%;
+    top: 50%;
+    width: 150px;
+    height: 150px;
+    margin: -75px 0 0 -75px;
+    border-radius: 50%;
+    border: 3px solid transparent;
+    border-top-color: #1E9FFF;
+    animation: spin 2s linear infinite;
+}
+
+.layuimini-loader .layuimini-loader-inner:before {
+    content: "";
+    position: absolute;
+    top: 5px;
+    left: 5px;
+    right: 5px;
+    bottom: 5px;
+    border-radius: 50%;
+    border: 3px solid transparent;
+    border-top-color: #1E9FFF;
+    animation: spin 3s linear infinite;
+}
+
+.layuimini-loader .layuimini-loader-inner:after {
+    content: "";
+    position: absolute;
+    top: 15px;
+    left: 15px;
+    right: 15px;
+    bottom: 15px;
+    border-radius: 50%;
+    border: 3px solid transparent;
+    border-top-color: #1E9FFF;
+    animation: spin 1.5s linear infinite;
+}
+
+@keyframes spin {
+    0% {
+        transform: rotate(0deg);
+    }
+    to {
+        transform: rotate(1turn);
+    }
+}
diff --git a/src/main/webapp/static/image/favicon.ico b/src/main/webapp/static/image/favicon.ico
new file mode 100644
index 0000000..86d5e0a
--- /dev/null
+++ b/src/main/webapp/static/image/favicon.ico
Binary files differ
diff --git a/src/main/webapp/static/layui/lay/modules/contextMenu.js b/src/main/webapp/static/layui/lay/modules/contextMenu.js
new file mode 100644
index 0000000..2655031
--- /dev/null
+++ b/src/main/webapp/static/layui/lay/modules/contextMenu.js
@@ -0,0 +1,228 @@
+/** 鍙抽敭鑿滃崟妯″潡 date:2019-02-08   License By http://easyweb.vip */
+layui.define(["jquery"], function (exports) {
+    var $ = layui.jquery;
+
+    var contextMenu = {
+        // 缁戝畾鍏冪礌
+        bind: function (elem, items) {
+            $(elem).bind('contextmenu', function (e) {
+                contextMenu.show(items, e.clientX, e.clientY, e);
+                return false;
+            });
+        },
+        // 鍦ㄦ寚瀹氬潗鏍囨樉绀鸿彍鍗�
+        show: function (items, x, y, e) {
+            var xy = 'left: ' + x + 'px; top: ' + y + 'px;';
+            var htmlStr = '<div class="ctxMenu" style="' + xy + '">';
+            htmlStr += contextMenu.getHtml(items, '');
+            htmlStr += '   </div>';
+            contextMenu.remove();
+            $('body').append(htmlStr);
+            // 璋冩暣婧㈠嚭浣嶇疆
+            var $ctxMenu = $('.ctxMenu');
+            if (x + $ctxMenu.outerWidth() > contextMenu.getPageWidth()) {
+                x -= $ctxMenu.outerWidth();
+            }
+            if (y + $ctxMenu.outerHeight() > contextMenu.getPageHeight()) {
+                y = y - $ctxMenu.outerHeight();
+                if (y < 0) {
+                    y = 0;
+                }
+            }
+            $ctxMenu.css({'top': y, 'left': x});
+            // 娣诲姞item鐐瑰嚮浜嬩欢
+            contextMenu.setEvents(items, e);
+            // 鏄剧ず瀛愯彍鍗曚簨浠�
+            $('.ctxMenu-item').on('mouseenter', function (e) {
+                e.stopPropagation();
+                $(this).parent().find('.ctxMenu-sub').css('display', 'none');
+                if (!$(this).hasClass('haveMore')) return;
+                var $item = $(this).find('>a');
+                var $sub = $(this).find('>.ctxMenu-sub');
+                var top = $item.offset().top - $('body,html').scrollTop();
+                var left = $item.offset().left + $item.outerWidth() - $('body,html').scrollLeft();
+                if (left + $sub.outerWidth() > contextMenu.getPageWidth()) {
+                    left = $item.offset().left - $sub.outerWidth();
+                }
+                if (top + $sub.outerHeight() > contextMenu.getPageHeight()) {
+                    top = top - $sub.outerHeight() + $item.outerHeight();
+                    if (top < 0) {
+                        top = 0;
+                    }
+                }
+                $(this).find('>.ctxMenu-sub').css({
+                    'top': top,
+                    'left': left,
+                    'display': 'block'
+                });
+            })/*.on('mouseleave', function () {
+                $(this).find('>.ctxMenu-sub').css('display', 'none');
+            })*/;
+        },
+        // 绉婚櫎鎵�鏈�
+        remove: function () {
+            var ifs = parent.window.frames;
+            for (var i = 0; i < ifs.length; i++) {
+                var tif = ifs[i];
+                try {
+                    tif.layui.jquery('body>.ctxMenu').remove();
+                } catch (e) {
+                }
+            }
+            try {
+                parent.layui.jquery('body>.ctxMenu').remove();
+            } catch (e) {
+            }
+        },
+        // 璁剧疆浜嬩欢鐩戝惉
+        setEvents: function (items, event) {
+            $('.ctxMenu').off('click').on('click', '[lay-id]', function (e) {
+                var itemId = $(this).attr('lay-id');
+                var item = getItemById(itemId, items);
+                item.click && item.click(e, event);
+            });
+
+            function getItemById(id, list) {
+                for (var i = 0; i < list.length; i++) {
+                    var one = list[i];
+                    if (id == one.itemId) {
+                        return one;
+                    } else if (one.subs && one.subs.length > 0) {
+                        var temp = getItemById(id, one.subs);
+                        if (temp) {
+                            return temp;
+                        }
+                    }
+                }
+            }
+        },
+        // 鏋勫缓鏃犻檺绾�
+        getHtml: function (items, pid) {
+            var htmlStr = '';
+            for (var i = 0; i < items.length; i++) {
+                var item = items[i];
+                item.itemId = 'ctxMenu-' + pid + i;
+                if (item.subs && item.subs.length > 0) {
+                    htmlStr += '<div class="ctxMenu-item haveMore" lay-id="' + item.itemId + '">';
+                    htmlStr += '<a>';
+                    if (item.icon) {
+                        htmlStr += '<i class="' + item.icon + ' ctx-icon"></i>';
+                    }
+                    htmlStr += item.name;
+                    htmlStr += '<i class="layui-icon layui-icon-right icon-more"></i>';
+                    htmlStr += '</a>';
+                    htmlStr += '<div class="ctxMenu-sub" style="display: none;">';
+                    htmlStr += contextMenu.getHtml(item.subs, pid + i);
+                    htmlStr += '</div>';
+                } else {
+                    htmlStr += '<div class="ctxMenu-item" lay-id="' + item.itemId + '">';
+                    htmlStr += '<a>';
+                    if (item.icon) {
+                        htmlStr += '<i class="' + item.icon + ' ctx-icon"></i>';
+                    }
+                    htmlStr += item.name;
+                    htmlStr += '</a>';
+                }
+                htmlStr += '</div>';
+                if (item.hr == true) {
+                    htmlStr += '<hr/>';
+                }
+            }
+            return htmlStr;
+        },
+        // 鑾峰彇css浠g爜
+        getCommonCss: function () {
+            var cssStr = '.ctxMenu, .ctxMenu-sub {';
+            cssStr += '        max-width: 250px;';
+            cssStr += '        min-width: 110px;';
+            cssStr += '        background: white;';
+            cssStr += '        border-radius: 2px;';
+            cssStr += '        padding: 5px 0;';
+            cssStr += '        white-space: nowrap;';
+            cssStr += '        position: fixed;';
+            cssStr += '        z-index: 2147483647;';
+            cssStr += '        box-shadow: 0 2px 4px rgba(0, 0, 0, .12);';
+            cssStr += '        border: 1px solid #d2d2d2;';
+            cssStr += '        overflow: visible;';
+            cssStr += '   }';
+
+            cssStr += '   .ctxMenu-item {';
+            cssStr += '        position: relative;';
+            cssStr += '   }';
+
+            cssStr += '   .ctxMenu-item > a {';
+            cssStr += '        font-size: 14px;';
+            cssStr += '        color: #666;';
+            cssStr += '        padding: 0 26px 0 35px;';
+            cssStr += '        cursor: pointer;';
+            cssStr += '        display: block;';
+            cssStr += '        line-height: 36px;';
+            cssStr += '        text-decoration: none;';
+            cssStr += '        position: relative;';
+            cssStr += '   }';
+
+            cssStr += '   .ctxMenu-item > a:hover {';
+            cssStr += '        background: #f2f2f2;';
+            cssStr += '        color: #666;';
+            cssStr += '   }';
+
+            cssStr += '   .ctxMenu-item > a > .icon-more {';
+            cssStr += '        position: absolute;';
+            cssStr += '        right: 5px;';
+            cssStr += '        top: 0;';
+            cssStr += '        font-size: 12px;';
+            cssStr += '        color: #666;';
+            cssStr += '   }';
+
+            cssStr += '   .ctxMenu-item > a > .ctx-icon {';
+            cssStr += '        position: absolute;';
+            cssStr += '        left: 12px;';
+            cssStr += '        top: 0;';
+            cssStr += '        font-size: 15px;';
+            cssStr += '        color: #666;';
+            cssStr += '   }';
+
+            cssStr += '   .ctxMenu hr {';
+            cssStr += '        background-color: #e6e6e6;';
+            cssStr += '        clear: both;';
+            cssStr += '        margin: 5px 0;';
+            cssStr += '        border: 0;';
+            cssStr += '        height: 1px;';
+            cssStr += '   }';
+
+            cssStr += '   .ctx-ic-lg {';
+            cssStr += '        font-size: 18px !important;';
+            cssStr += '        left: 11px !important;';
+            cssStr += '    }';
+            return cssStr;
+        },
+        // 鑾峰彇娴忚鍣ㄩ珮搴�
+        getPageHeight: function () {
+            return document.documentElement.clientHeight || document.body.clientHeight;
+        },
+        // 鑾峰彇娴忚鍣ㄥ搴�
+        getPageWidth: function () {
+            return document.documentElement.clientWidth || document.body.clientWidth;
+        },
+    };
+
+    // 鐐瑰嚮浠绘剰浣嶇疆鍏抽棴鑿滃崟
+    $(document).off('click.ctxMenu').on('click.ctxMenu', function () {
+        contextMenu.remove();
+    });
+
+    // 鐐瑰嚮鏈夊瓙鑿滃崟鐨勮妭鐐逛笉鍏抽棴鑿滃崟
+    $(document).off('click.ctxMenuMore').on('click.ctxMenuMore', '.ctxMenu-item', function (e) {
+        if ($(this).hasClass('haveMore')) {
+            if (e !== void 0) {
+                e.preventDefault();
+                e.stopPropagation();
+            }
+        } else {
+            contextMenu.remove();
+        }
+    });
+
+    $('head').append('<style id="ew-css-ctx">' + contextMenu.getCommonCss() + '</style>');
+    exports("contextMenu", contextMenu);
+});
\ No newline at end of file
diff --git a/src/main/webapp/static/layui/lay/modules/index.js b/src/main/webapp/static/layui/lay/modules/index.js
new file mode 100644
index 0000000..93d9297
--- /dev/null
+++ b/src/main/webapp/static/layui/lay/modules/index.js
@@ -0,0 +1,302 @@
+/** EasyWeb iframe v3.1.8 date:2020-05-04 License By http://easyweb.vip */
+
+layui.define(['layer', 'element', 'admin'], function (exports) {
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var element = layui.element;
+    var admin = layui.admin;
+    var setter = admin.setter;
+    var headerDOM = '.layui-layout-admin>.layui-header';
+    var sideDOM = '.layui-layout-admin>.layui-side>.layui-side-scroll';
+    var bodyDOM = '.layui-layout-admin>.layui-body';
+    var tabDOM = bodyDOM + '>.layui-tab';
+    var titleDOM = bodyDOM + '>.layui-body-header';
+    var tabFilter = 'admin-pagetabs';
+    var navFilter = 'admin-side-nav';
+    var tabEndCall = {};  // Tab鍏抽棴鐨勪簨浠跺洖璋�
+    var mIsAddTab = false;  // 鏄惁鏄坊鍔燭ab锛屾坊鍔燭ab鐨勬椂鍊欏垏鎹笉鑷姩鍒锋柊
+    var index = {homeUrl: undefined, mTabPosition: undefined, mTabList: []};
+
+    /** 娓叉煋涓讳綋閮ㄥ垎 */
+    index.loadView = function (param) {
+        if (!param.menuPath) return layer.msg('url涓嶈兘涓虹┖', {icon: 2, anim: 6});
+        if (setter.pageTabs) {  // 澶氭爣绛炬ā寮�
+            var flag;  // 閫夐」鍗℃槸鍚﹀凡娣诲姞
+            $(tabDOM + '>.layui-tab-title>li').each(function () {
+                if ($(this).attr('lay-id') === param.menuPath) flag = true;
+            });
+            if (!flag) {  // 娣诲姞閫夐」鍗�
+                if (index.mTabList.length + 1 >= setter.maxTabNum) {
+                    layer.msg('鏈�澶氭墦寮�' + setter.maxTabNum + '涓�夐」鍗�', {icon: 2, anim: 6});
+                    return admin.activeNav(index.mTabPosition);
+                }
+                mIsAddTab = true;
+                element.tabAdd(tabFilter, {
+                    id: param.menuPath, title: '<span class="title">' + (param.menuName || '') + '</span>',
+                    content: '<iframe class="admin-iframe" lay-id="' + param.menuPath + '" src="' + param.menuPath +
+                        '" onload="layui.index.hideLoading(this);" frameborder="0"></iframe>'
+                });
+                admin.showLoading({elem: $('iframe[lay-id="' + param.menuPath + '"]').parent(), size: ''});
+                if (param.menuPath !== index.homeUrl) index.mTabList.push(param);  // 璁板綍tab
+                if (setter.cacheTab) admin.putTempData('indexTabs', index.mTabList);  // 缂撳瓨tab
+            }
+            if (!param.noChange) element.tabChange(tabFilter, param.menuPath);  // 鍒囨崲鍒版tab
+        } else {  // 鍗曟爣绛炬ā寮�
+            admin.activeNav(param.menuPath);
+            var $contentDom = $(bodyDOM + '>div>.admin-iframe');
+            if ($contentDom.length === 0) {
+                $(bodyDOM).html([
+                    '<div class="layui-body-header">',
+                    '   <span class="layui-body-header-title"></span>',
+                    '   <span class="layui-breadcrumb pull-right" lay-filter="admin-body-breadcrumb" style="visibility: visible;"></span>',
+                    '</div>',
+                    '<div style="-webkit-overflow-scrolling: touch;">',
+                    '   <iframe class="admin-iframe" lay-id="', param.menuPath, '" src="', param.menuPath, '"',
+                    '      onload="layui.index.hideLoading(this);" frameborder="0"></iframe>',
+                    '</div>'].join(''));
+                admin.showLoading({elem: $('iframe[lay-id="' + param.menuPath + '"]').parent(), size: ''});
+            } else {
+                admin.showLoading({elem: $contentDom.parent(), size: ''});
+                $contentDom.attr('lay-id', param.menuPath).attr('src', param.menuPath);
+            }
+            $('[lay-filter="admin-body-breadcrumb"]').html(index.getBreadcrumbHtml(param.menuPath));
+            index.mTabList.splice(0, index.mTabList.length);
+            if (param.menuPath === index.homeUrl) {
+                index.mTabPosition = undefined;
+                index.setTabTitle($(param.menuName).text() || $(sideDOM + ' [lay-href="' + index.homeUrl + '"]').text() || '涓婚〉');
+            } else {
+                index.mTabPosition = param.menuPath;
+                index.mTabList.push(param);
+                index.setTabTitle(param.menuName);
+            }
+            if (!setter.cacheTab) return;
+            admin.putTempData('indexTabs', index.mTabList);
+            admin.putTempData('tabPosition', index.mTabPosition);
+        }
+        if (admin.getPageWidth() <= 768) admin.flexible(true); // 绉诲姩绔嚜鍔ㄦ敹璧蜂晶瀵艰埅
+    };
+
+    /** 鍔犺浇涓婚〉 */
+    index.loadHome = function (param) {
+        var cacheTabs = admin.getTempData('indexTabs');  // 鑾峰彇缂撳瓨tab
+        var cachePosition = admin.getTempData('tabPosition');
+        var recover = (param.loadSetting === undefined || param.loadSetting) && (setter.cacheTab && cacheTabs && cacheTabs.length > 0);
+        index.homeUrl = param.menuPath;
+        param.noChange = cachePosition ? recover : false;
+        if (setter.pageTabs || !recover) index.loadView(param);
+        if (recover) {  // 鎭㈠缂撳瓨tab
+            for (var i = 0; i < cacheTabs.length; i++) {
+                cacheTabs[i].noChange = cacheTabs[i].menuPath !== cachePosition;
+                if (!cacheTabs[i].noChange || (setter.pageTabs && !param.onlyLast)) index.loadView(cacheTabs[i]);
+            }
+        }
+        admin.removeLoading(undefined, false);
+    };
+
+    /** 鎵撳紑tab */
+    index.openTab = function (param) {
+        if (window !== top && !admin.isTop() && top.layui && top.layui.index) return top.layui.index.openTab(param);
+        if (param.end) tabEndCall[param.url] = param.end;
+        index.loadView({menuPath: param.url, menuName: param.title});
+    };
+
+    /** 鍏抽棴tab */
+    index.closeTab = function (url) {
+        if (window !== top && !admin.isTop() && top.layui && top.layui.index) return top.layui.index.closeTab(url);
+        element.tabDelete(tabFilter, url);
+    };
+
+    /** 璁剧疆鏄惁璁板繂Tab */
+    index.setTabCache = function (isCache) {
+        if (window !== top && !admin.isTop() && top.layui && top.layui.index) return top.layui.index.setTabCache(isCache);
+        admin.putSetting('cacheTab', isCache);
+        if (!isCache) return index.clearTabCache();
+        admin.putTempData('indexTabs', index.mTabList);
+        admin.putTempData('tabPosition', index.mTabPosition);
+    };
+
+    /** 娓呴櫎tab璁板繂 */
+    index.clearTabCache = function () {
+        admin.putTempData('indexTabs', null);
+        admin.putTempData('tabPosition', null);
+    };
+
+    /** 璁剧疆tab鏍囬 */
+    index.setTabTitle = function (title, tabId) {
+        if (window !== top && !admin.isTop() && top.layui && top.layui.index) return top.layui.index.setTabTitle(title, tabId);
+        if (setter.pageTabs) {
+            if (!tabId) tabId = $(tabDOM + '>.layui-tab-title>li.layui-this').attr('lay-id');
+            if (tabId) $(tabDOM + '>.layui-tab-title>li[lay-id="' + tabId + '"] .title').html(title || '');
+        } else if (title) {
+            $(titleDOM + '>.layui-body-header-title').html(title);
+            $(titleDOM).addClass('show');
+            $(headerDOM).css('box-shadow', '0 1px 0 0 rgba(0, 0, 0, .03)');
+        } else {
+            $(titleDOM).removeClass('show');
+            $(headerDOM).css('box-shadow', '');
+        }
+    };
+
+    /** 鑷畾涔塼ab鏍囬 */
+    index.setTabTitleHtml = function (html) {
+        if (window !== top && !admin.isTop() && top.layui && top.layui.index) return top.layui.index.setTabTitleHtml(html);
+        if (setter.pageTabs) return;
+        if (!html) return $(titleDOM).removeClass('show');
+        $(titleDOM).html(html);
+        $(titleDOM).addClass('show');
+    };
+
+    /** 鑾峰彇闈㈠寘灞� */
+    index.getBreadcrumb = function (tabId) {
+        if (!tabId) tabId = $(bodyDOM + '>div>.admin-iframe').attr('lay-id');
+        var breadcrumb = [];
+        var $href = $(sideDOM).find('[lay-href="' + tabId + '"]');
+        if ($href.length > 0) breadcrumb.push($href.text().replace(/(^\s*)|(\s*$)/g, ''));
+        while (true) {
+            $href = $href.parent('dd').parent('dl').prev('a');
+            if ($href.length === 0) break;
+            breadcrumb.unshift($href.text().replace(/(^\s*)|(\s*$)/g, ''));
+        }
+        return breadcrumb;
+    };
+
+    /** 鑾峰彇闈㈠寘灞戠粨鏋� */
+    index.getBreadcrumbHtml = function (tabId) {
+        var breadcrumb = index.getBreadcrumb(tabId);
+        var htmlStr = tabId === index.homeUrl ? '' : ('<a ew-href="' + index.homeUrl + '">棣栭〉</a>');
+        for (var i = 0; i < breadcrumb.length - 1; i++) {
+            if (htmlStr) htmlStr += '<span lay-separator="">/</span>';
+            htmlStr += ('<a><cite>' + breadcrumb[i] + '</cite></a>');
+        }
+        return htmlStr;
+    };
+
+    /** 鍏抽棴loading */
+    index.hideLoading = function (url) {
+        if (typeof url !== 'string') url = $(url).attr('lay-id');
+        admin.removeLoading($('iframe[lay-id="' + url + '"],' + bodyDOM + ' iframe[lay-id]').parent(), false);
+    };
+
+    /** 绉诲姩璁惧閬僵灞� */
+    var siteShadeDom = '.layui-layout-admin .site-mobile-shade';
+    if ($(siteShadeDom).length === 0) $('.layui-layout-admin').append('<div class="site-mobile-shade"></div>');
+    $(siteShadeDom).click(function () {
+        admin.flexible(true);
+    });
+
+    /** 琛ュ厖tab鐨刣om */
+    if (setter.pageTabs && $(tabDOM).length === 0) {
+        $(bodyDOM).html([
+            '<div class="layui-tab" lay-allowClose="true" lay-filter="', tabFilter, '" lay-autoRefresh="', setter.tabAutoRefresh == 'true', '">',
+            '   <ul class="layui-tab-title"></ul><div class="layui-tab-content"></div>',
+            '</div>',
+            '<div class="layui-icon admin-tabs-control layui-icon-prev" ew-event="leftPage"></div>',
+            '<div class="layui-icon admin-tabs-control layui-icon-next" ew-event="rightPage"></div>',
+            '<div class="layui-icon admin-tabs-control layui-icon-down">',
+            '   <ul class="layui-nav" lay-filter="admin-pagetabs-nav">',
+            '      <li class="layui-nav-item" lay-unselect>',
+            '         <dl class="layui-nav-child layui-anim-fadein">',
+            '            <dd ew-event="closeThisTabs" lay-unselect><a>鍏抽棴褰撳墠鏍囩椤�</a></dd>',
+            '            <dd ew-event="closeOtherTabs" lay-unselect><a>鍏抽棴鍏跺畠鏍囩椤�</a></dd>',
+            '            <dd ew-event="closeAllTabs" lay-unselect><a>鍏抽棴鍏ㄩ儴鏍囩椤�</a></dd>',
+            '         </dl>',
+            '      </li>',
+            '   </ul>',
+            '</div>'
+        ].join(''));
+        element.render('nav', 'admin-pagetabs-nav');
+    }
+
+    /** 渚у鑸偣鍑荤洃鍚� */
+    element.on('nav(' + navFilter + ')', function (elem) {
+        var $that = $(elem);
+        var href = $that.attr('lay-href');
+        if (!href || href === '#') return;
+        if (href.indexOf('javascript:') === 0) return new Function(href.substring(11))();
+        var name = $that.attr('ew-title') || $that.text().replace(/(^\s*)|(\s*$)/g, '');
+        var end = $that.attr('ew-end');
+        try {
+            if (end) end = new Function(end);
+            else end = undefined;
+        } catch (e) {
+            console.error(e);
+        }
+        index.openTab({url: href, title: name, end: end});
+        layui.event.call(this, 'admin', 'side({*})', {href: href});
+    });
+
+    /** tab鍒囨崲鐩戝惉 */
+    element.on('tab(' + tabFilter + ')', function () {
+        var layId = $(this).attr('lay-id');
+        index.mTabPosition = (layId !== index.homeUrl ? layId : undefined);  // 璁板綍褰撳墠Tab浣嶇疆
+        if (setter.cacheTab) admin.putTempData('tabPosition', index.mTabPosition);
+        admin.activeNav(layId);
+        admin.rollPage('auto');
+        if ($(tabDOM).attr('lay-autoRefresh') == 'true' && !mIsAddTab) admin.refresh(layId, true);  // 鍒囨崲tab鍒锋柊
+        mIsAddTab = false;
+        layui.event.call(this, 'admin', 'tab({*})', {layId: layId});
+    });
+
+    /** tab鍒犻櫎鐩戝惉 */
+    element.on('tabDelete(' + tabFilter + ')', function (data) {
+        var mTab = index.mTabList[data.index - 1];
+        if (mTab) {
+            index.mTabList.splice(data.index - 1, 1);
+            if (setter.cacheTab) admin.putTempData('indexTabs', index.mTabList);
+            tabEndCall[mTab.menuPath] && tabEndCall[mTab.menuPath].call();
+            layui.event.call(this, 'admin', 'tabDelete({*})', {layId: mTab.menuPath});
+        }
+        if ($(tabDOM + '>.layui-tab-title>li.layui-this').length === 0)
+            $(tabDOM + '>.layui-tab-title>li:last').trigger('click');  // 瑙e喅鍒犻櫎鍚庡彲鑳芥棤閫変腑bug
+    });
+
+    /** 澶氱郴缁熷垏鎹簨浠� */
+    $(document).off('click.navMore').on('click.navMore', '[nav-bind]', function () {
+        var navId = $(this).attr('nav-bind');
+        $('ul[lay-filter="' + navFilter + '"]').addClass('layui-hide');
+        $('ul[nav-id="' + navId + '"]').removeClass('layui-hide');
+        $(headerDOM + '>.layui-nav .layui-nav-item').removeClass('layui-this');
+        $(this).parent('.layui-nav-item').addClass('layui-this');
+        if (admin.getPageWidth() <= 768) admin.flexible(false);  // 灞曞紑渚ц竟鏍�
+        layui.event.call(this, 'admin', 'nav({*})', {navId: navId});
+    });
+
+    /** 寮�鍚疶ab鍙抽敭鑿滃崟 */
+    if (setter.openTabCtxMenu && setter.pageTabs) {
+        layui.use('contextMenu', function () {
+            if (!layui.contextMenu) return;
+            $(tabDOM + '>.layui-tab-title').off('contextmenu.tab').on('contextmenu.tab', 'li', function (e) {
+                var layId = $(this).attr('lay-id');
+                layui.contextMenu.show([{
+                    icon: 'layui-icon layui-icon-refresh',
+                    name: '鍒锋柊褰撳墠',
+                    click: function () {
+                        element.tabChange(tabFilter, layId);
+                        if ('true' != $(tabDOM).attr('lay-autoRefresh')) admin.refresh(layId);
+                    }
+                }, {
+                    icon: 'layui-icon layui-icon-close-fill ctx-ic-lg',
+                    name: '鍏抽棴褰撳墠',
+                    click: function () {
+                        admin.closeThisTabs(layId);
+                    }
+                }, {
+                    icon: 'layui-icon layui-icon-unlink',
+                    name: '鍏抽棴鍏朵粬',
+                    click: function () {
+                        admin.closeOtherTabs(layId);
+                    }
+                }, {
+                    icon: 'layui-icon layui-icon-close ctx-ic-lg',
+                    name: '鍏抽棴鍏ㄩ儴',
+                    click: function () {
+                        admin.closeAllTabs();
+                    }
+                }], e.clientX, e.clientY);
+                return false;
+            });
+        });
+    }
+
+    exports('index', index);
+});
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index 730b818..680cb5b 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -1,240 +1,179 @@
 <!DOCTYPE html>
-<html>
+<html lang="en">
 <head>
   <meta charset="utf-8">
-  <title>鑷姩浠撳偍 - 绠$悊绯荤粺</title>
+  <title>涓壃 - 杩愮淮绯荤粺骞冲彴</title>
   <meta name="renderer" content="webkit">
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
   <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
-  <link rel="icon" type="image/x-icon" href="../static/image/log.png" />
-  <link rel="stylesheet" href="../static/layuiadmin/layui/css/layui.css" media="all">
-  <link rel="stylesheet" href="../static/layuiadmin/style/admin.css" media="all">
-  <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
-  <script type="text/javascript" src="../static/js/common.js"></script>
-  <script type="text/javascript" src="../static/layuiadmin/layui/layui.js"></script>
+  <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />
+  <link rel="stylesheet" href="../static/layui/css/layui.css" media="all">
+  <link rel="stylesheet" href="../static/css/admin.css?v=318" media="all">
+  <link rel="stylesheet" href="../static/css/loader.css" media="all">
   <style>
-    .layui-layout-admin .layui-footer {
-      box-sizing: border-box;
-      background-color: #fff;
-      z-index: 999;
-      height: 30px;
-      padding: 0;
-      font-size: 13px;
-      margin: 0;
-      line-height: 30px;
+    .layui-logo img {
+      width: 25px;
     }
-    .layui-layout-admin .layui-footer a {
-      color: #3573ab;
-      font-weight: bold
-    }
-
-    .layui-layout-admin .layui-logo {
-      letter-spacing: 2px;
-      font-size: 22px;
-      height: 110px;
-      padding: 20px 10px;
-      font-weight: bolder;
-      /*color: #2c7dc2;*/
-      color: #f3f3f3;
-      text-align: center;
-      line-height: 40px;
-    }
-    .layadmin-side-shrink .layui-layout-admin .layui-logo {
-      background-image: none;
-    }
-    .layui-side-menu .layui-nav {
-      margin-top: 110px;
+    .layui-logo cite {
+      font-size: 18px;
+      font-weight: 400;
+      /*margin-left: 5px;*/
     }
   </style>
 </head>
 <body class="layui-layout-body">
+<div class="layui-layout layui-layout-admin">
+  <!-- 澶撮儴 -->
+  <div class="layui-header">
+    <div class="layui-logo">
+      <img src="../static/image/logo.png" style="display: inline-block; width: 60%;height: auto">
+      <!--          <span style="margin-top: 0; letter-spacing: 10px">涓壃绔嬪簱</span>-->
+      <!--          <img src="../static/image/logo.svg"/>-->
+      <!--          <cite>涓壃 - Zoneyung</cite>-->
+    </div>
 
-  <div id="LAY_app">
-    <div class="layui-layout layui-layout-admin">
-      <div class="layui-header">
-        <!-- 澶撮儴鍖哄煙 -->
-        <ul id="cool-header-left" class="layui-nav layui-layout-left">
-          <li class="layui-nav-item layadmin-flexible" lay-unselect>
-            <a href="javascript:;" layadmin-event="flexible" title="渚ц竟浼哥缉">
-              <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
-            </a>
-          </li>
-          <!--<li class="layui-nav-item layui-hide-xs" lay-unselect>-->
-            <!--<a lay-href="report/viewLocMap.html?resourceId=10286" title="Map">-->
-              <!--<i class="layui-icon layui-icon-website"></i>-->
-            <!--</a>-->
-          <!--</li>-->
-          <li class="layui-nav-item" lay-unselect>
-            <a href="javascript:;" layadmin-event="refresh" title="鍒锋柊">
-              <i class="layui-icon layui-icon-refresh-3"></i>
-            </a>
-          </li>
-          <!--<li class="layui-nav-item layui-hide-xs" lay-unselect>-->
-            <!--<input type="text" placeholder="鎼滅储..." autocomplete="off" class="layui-input layui-input-search" layadmin-event="serach" lay-action="template/search.html?keywords=">-->
-          <!--</li>-->
-        </ul>
-        <ul id="cool-header-right" class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
-          
-          <li class="layui-nav-item layui-hide-xs" lay-unselect>
-            <a href="javascript:;" layadmin-event="theme">
-              <i class="layui-icon layui-icon-theme"></i>
-            </a>
-          </li>
-          <li class="layui-nav-item layui-hide-xs" lay-unselect>
-            <a id="activation-icon" href="javascript:;" layadmin-event="note">
-              <i class="layui-icon layui-icon-note"></i>
-            </a>
-          </li>
-          <li class="layui-nav-item layui-hide-xs" lay-unselect>
-            <a href="javascript:;" layadmin-event="fullscreen">
-              <i class="layui-icon layui-icon-screen-full"></i>
-            </a>
-          </li>
-          <li class="layui-nav-item" lay-unselect>
-            <a href="javascript:;">
-              <cite id="person-username">绠$悊鍛�</cite>
-            </a>
-            <dl class="layui-nav-child">
-              <dd><a lay-href="detail.html">鍩烘湰璧勬枡</a></dd>
-              <!--<dd><a lay-href="set/user/password.html">淇敼瀵嗙爜</a></dd>-->
-              <hr>
-              <dd style="text-align: center;"><a id="logout" href="/">閫�鍑�</a></dd>
-            </dl>
-          </li>
-        </ul>
-      </div>
-      
-      <!-- 渚ц竟鑿滃崟 -->
-      <div class="layui-side layui-side-menu">
-        <div class="layui-side-scroll">
-          <div class="layui-logo" lay-href="home/console.html">
-            <img src="../static/image/logo.png" style="display: inline-block; width: 90%;height: auto">
-            <span style="margin-top: 0;letter-spacing: 10px">涓壃绔嬪簱</span>
-          </div>
+    <ul class="layui-nav layui-layout-left">
+      <li class="layui-nav-item" lay-unselect>
+        <a ew-event="flexible" title="渚ц竟浼哥缉"><i class="layui-icon layui-icon-shrink-right"></i></a>
+      </li>
+      <li class="layui-nav-item" lay-unselect>
+        <a ew-event="refresh" title="鍒锋柊"><i class="layui-icon layui-icon-refresh-3"></i></a>
+      </li>
+    </ul>
+    <ul class="layui-nav layui-layout-right">
+      <li class="layui-nav-item" lay-unselect>
+        <a ew-event="note" title="渚跨"><i class="layui-icon layui-icon-note"></i></a>
+      </li>
+      <li class="layui-nav-item layui-hide-xs" lay-unselect>
+        <a ew-event="fullScreen" title="鍏ㄥ睆"><i class="layui-icon layui-icon-screen-full"></i></a>
+      </li>
+      <li class="layui-nav-item" lay-unselect>
+        <a>
+          <cite id="username" style="margin-right: 5px">绠$悊鍛�</cite>
+        </a>
+        <dl class="layui-nav-child">
+          <dd lay-unselect><a ew-href="detail.html?resourceId=8">鍩烘湰璧勬枡</a></dd>
+          <hr>
+          <dd lay-unselect><a id="logout">閫�鍑�</a></dd>
+        </dl>
+      </li>
+      <li class="layui-nav-item" lay-unselect>
+        <a ew-event="theme" title="涓婚"><i class="layui-icon layui-icon-more-vertical"></i></a>
+      </li>
+    </ul>
+  </div>
 
-          <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
-          </ul>
-        </div>
-      </div>
-      <!-- 椤甸潰鏍囩 -->
-      <div class="layadmin-pagetabs" id="LAY_app_tabs">
-        <div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
-        <div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
-        <div class="layui-icon layadmin-tabs-control layui-icon-down">
-          <ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav">
-            <li class="layui-nav-item" lay-unselect>
-              <a href="javascript:;"></a>
-              <dl class="layui-nav-child layui-anim-fadein">
-                <dd layadmin-event="closeThisTabs"><a href="javascript:;">鍏抽棴褰撳墠鏍囩椤�</a></dd>
-                <dd layadmin-event="closeOtherTabs"><a href="javascript:;">鍏抽棴鍏跺畠鏍囩椤�</a></dd>
-                <dd layadmin-event="closeAllTabs"><a href="javascript:;">鍏抽棴鍏ㄩ儴鏍囩椤�</a></dd>
-              </dl>
-            </li>
-          </ul>
-        </div>
-        <div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs">
-          <ul class="layui-tab-title" id="LAY_app_tabsheader">
-            <li lay-id="home/console.html" lay-attr="home/console.html" class="layui-this"><i class="layui-icon layui-icon-home"></i></li>
-          </ul>
-        </div>
-      </div>
-
-      <!-- 涓讳綋鍐呭 -->
-      <div class="layui-body" id="LAY_app_body">
-        <div class="layadmin-tabsbody-item layui-show">
-          <iframe src="home/console.html" frameborder="0" class="layadmin-iframe"></iframe>
-        </div>
-      </div>
-
-      <div class="layui-footer">
-        Copyright 漏 2015 All Rights Reserved. <a href="http://www.zoneyung.com" target="_blank">娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�</a>  淇濈暀鎵�鏈夋潈鍒�
-      </div>
-      <!-- 杈呭姪鍏冪礌锛屼竴鑸敤浜庣Щ鍔ㄨ澶囦笅閬僵 -->
-      <div class="layadmin-body-shade" layadmin-event="shade"></div>
+  <!-- 渚ц竟鏍� -->
+  <div class="layui-side">
+    <div class="layui-side-scroll">
+      <ul id="menu-main" class="layui-nav layui-nav-tree arrow2" lay-filter="admin-side-nav" lay-shrink="_all">
+      </ul>
     </div>
   </div>
 
-  <script>
-  layui.config({
-    base: '../static/layuiadmin/' //闈欐�佽祫婧愭墍鍦ㄨ矾寰�
-  }).extend({
-    index: 'lib/index' //涓诲叆鍙fā鍧�
-  }).use(['index','element'], function () {
-      var element = layui.element;
-      var $ = layui.jquery;
+  <!-- 涓讳綋閮ㄥ垎 -->
+  <div class="layui-body"></div>
+  <!-- 搴曢儴 -->
+  <div class="layui-footer layui-text">
+    copyright 漏 2022 <a href="http://www.zoneyung.com" target="_blank">娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�</a> all rights reserved.
+    <span class="pull-right">Version 1.0.0</span>
+  </div>
 
-      // 鏇挎崲閫�鍑烘寜閽彉閲�
-      var logout = document.getElementById('logout');
-      var url = logout.getAttribute('href');
-      logout.setAttribute('href', baseUrl + url);
+</div>
 
-      $('#person-username').text(localStorage.getItem('username'));
+<!--鍒濆鍖栧姞杞藉眰-->
+<div class="layuimini-loader">
+  <div class="layuimini-loader-inner"></div>
+</div>
 
-      $(function () {
-          if ("" === localStorage.getItem('token')){
-              top.location.href = baseUrl+"/login";
-          }
-
-          // 婵�娲荤爜楠岃瘉
-          $.ajax({
-            url: baseUrl+"/system/activation/auth",
-            dataType:'json',
-            method: 'GET',
-            async: false,
-            success: function (res) {
-              if (res.code === 200) {
-                $("#activation-icon").hide();
-              } else {
-                $("#activation-icon").click();
-              }
-            }
-          });
-
-          getMenu()
-
-          // 娉ㄩ攢
-          $(document).on('click','#logout',function () {
-              localStorage.removeItem("token");
-          });
-
-      });
-
-      // 鍔犺浇鑿滃崟
-      function getMenu() {
-        $.ajax({
-          url: baseUrl+ "/menu/auth",
-          headers: {'token': localStorage.getItem('token')},
-          method: 'POST',
-          success: function (res) {
-            if (res.code === 200){
-              var menuHtml = "";
-              if (res.data != null){
-                for (var i = 0; i < res.data.length; i++) {
-                  menuHtml += '<li data-name="' + res.data[i].menuCode +'" class="layui-nav-item">\n';
-                  menuHtml += '<a href="javascript:;" lay-tips=' +res.data[i].menu+ ' lay-direction="2">\n';
-                  menuHtml += '<i class="layui-icon '+ res.data[i].menuIcon +'"></i>\n';
-                  menuHtml += ' <cite>' +res.data[i].menu+ '</cite>\n';
-                  menuHtml += '</a>\n';
-                  menuHtml += '<dl class="layui-nav-child">\n';
-                  for (var j = 0; j < res.data[i].subMenu.length; j++) {
-                    menuHtml += '<dd><a lay-href="' +res.data[i].subMenu[j].code+ '?resourceId='+ res.data[i].subMenu[j].id + '">' + res.data[i].subMenu[j].name + '</a></dd>\n';
-                  }
-                  menuHtml += '</dl>\n';
-                  menuHtml += '</li>\n';
-                }
-              }
-              $('#LAY-system-side-menu').append(menuHtml);
-              element.init();
-            } else if (res.code === 403){
-              top.location.href = baseUrl+"/login";
-            }else {
-              layer.alert(res.msg)
-            }
-          }
-        });
-      }
+<script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../static/layui/layui.js"></script>
+<script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../static/js/common.js"></script>
+<script>
+  console.log('%c 涓壃绔嬪簱骞冲彴 %c 1.0.0','background-color:rgb(53,73,94);color: #fff;border-radius:2px 0 0 2px;padding:2px 4px;','background-color:rgb(25,190,107);color: #fff;border-radius:0 2px 2px 0;padding:2px 4px;font: 9pt "Apercu Regular", Georgia, "Times New Roman", Times, serif;');
+  $(function () {
+    if ("" === localStorage.getItem('token')) {
+      top.location.href = baseUrl + "/login";
+    }
   });
-  </script>
+
+  layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+  }).extend({
+    notice: 'notice/notice',
+  }).use(['index', 'element', 'layer', 'admin', 'notice'], function () {
+    var $ = layui.jquery;
+    var index = layui.index;
+    var element = layui.element;
+    var layer = layui.layer;
+    var admin = layui.admin;
+    var notice = layui.notice;
+
+    var easywebIframeMsg = localStorage.getItem("easyweb-iframe");
+    if (!isEmpty(easywebIframeMsg)) {
+      var easywebIframeObj = JSON.parse(easywebIframeMsg);
+      if (easywebIframeObj.defaultTheme === undefined) {
+        admin.changeTheme("theme-colorful");
+      }
+    }
+
+    $.ajax({
+      url: baseUrl + "/menu/auth",
+      headers: {'token': localStorage.getItem('token')},
+      method: 'POST',
+      // async: false,
+      success: function (res) {
+        // 鍏抽棴鍔犺浇鍔ㄧ敾
+        $('.layuimini-loader').fadeOut();
+        if (res.code === 200) {
+          var tpl = $('#menuTpl').html();
+          var template = Handlebars.compile(tpl);
+          var html = template(res);
+          $("#menu-main").html(html);
+          element.init();
+        } else if (res.code === 403) {
+          top.location.href = baseUrl + "/login";
+        } else {
+          layer.msg(res.msg, {icon: 2});
+        }
+      }
+    });
+
+    // 榛樿鍔犺浇涓婚〉
+    index.loadHome({
+      menuPath: baseUrl+'/views/home/console.html',
+      menuName: '<i class="layui-icon layui-icon-home"></i>'
+    });
+
+    $('#username').text(localStorage.getItem('username'));
+
+    $(document).on('click','#logout', function () {
+      window.location.href = "login.html";
+      localStorage.removeItem('token');
+      localStorage.removeItem('username');
+      admin.closeAllTabs();
+    });
+
+    // 鏇挎崲閫�鍑烘寜閽彉閲�
+    var logout = document.getElementById('logout');
+    var url = logout.getAttribute('href');
+    logout.setAttribute('href', baseUrl + "/login");
+
+  });
+</script>
+<script type="text/html" id="menuTpl">
+  {{#each data}}
+  <li class="layui-nav-item">
+    <a><i class="layui-icon {{this.menuIcon}}"></i>&emsp;<cite>{{this.menu}}</cite></a>
+    <dl class="layui-nav-child">
+      {{#each this.subMenu}}
+      <dd><a lay-href="{{this.code}}?resourceId={{this.id}}">{{this.name}}</a></dd>
+      {{/each}}
+    </dl>
+  </li>
+  {{/each}}
+</script>
 </body>
 </html>
 
diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html
index f540f1e..101cce5 100644
--- a/src/main/webapp/views/order/order.html
+++ b/src/main/webapp/views/order/order.html
@@ -66,8 +66,25 @@
         </a>
     </span>
 </script>
+<!--<script type="text/html" id="settleTpl">-->
+<!--    <span name="settle" class="layui-badge layui-badge-gray">{{d.settle$}}</span>-->
+<!--</script>-->
 <script type="text/html" id="settleTpl">
-    <span name="settle" class="layui-badge layui-badge-gray">{{d.settle$}}</span>
+    <span name="settle"
+          {{# if( d.settle === 1){ }}
+          class="layui-badge layui-badge-red"
+          {{# }else if(d.settle === 2){ }}
+          class="layui-badge layui-badge-green"
+          {{# }else if(d.settle === 3){ }}
+          class="layui-badge layui-badge-gray"
+          {{# }else if(d.settle === 4){ }}
+          class="layui-badge layui-badge-blue"
+          {{# }else if(d.settle === 5){ }}
+          class="layui-badge layui-badge-gray"
+          {{# }else if(d.settle === 6){ }}
+          class="layui-badge layui-badge-gray"
+          {{# } }}
+    >{{d.settle$}}</span>
 </script>
 <!-- 琛ㄥ崟寮圭獥 -->
 <script type="text/html" id="editDialog">
diff --git a/src/main/webapp/views/tpl/alarm-detl.html b/src/main/webapp/views/tpl/alarm-detl.html
new file mode 100644
index 0000000..1539922
--- /dev/null
+++ b/src/main/webapp/views/tpl/alarm-detl.html
@@ -0,0 +1,52 @@
+<style>
+    pre {
+        font-family: 'DejaVu Sans Mono','Courier New',monospace;
+        padding: 15px 10px;
+        line-height: 17px;
+        margin: 5px;
+        word-wrap: break-word;
+        border: solid 1px #9e9e9e;
+        border-radius: 3px;
+        color: #729fcf;
+    }
+    .string { color: #4e9a06; }
+    .number { color: #ad7fa8; }
+    .boolean { color: #c4a000; }
+    .null { color: #babdb6; }
+    .key { color: #204a87; }
+</style>
+
+<div style="padding: 25px 25px 15px 25px;" id="callbackDialog">
+    <fieldset class="layui-elem-field layui-field-title">
+        <legend>鍩虹淇℃伅</legend>
+    </fieldset>
+    <div class="layui-text" style="margin-bottom: 5px;">
+        浜嬩欢缂栧彿锛歿{d.request}}<br />
+        璁惧缂栧彿锛歿{d.response.sensorId$}}<br />
+        璁惧绫诲瀷锛歿{d.response.sensorType$}}<br />
+    </div>
+    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
+        <legend>鎶ヨ淇℃伅</legend>
+    </fieldset>
+    <div class="layui-text" style="margin-bottom: 5px;">
+        鍙戦�佹椂闂达細{{d.response.createTime$}}<br />
+        鏁呴殰鎻忚堪锛歿{d.response.desc}}<br />
+    </div>
+    <div class="text-center" style="padding-top: 15px;text-align: right">
+        <button class="layui-btn layui-btn-normal" ew-event="closeDialog">鍏抽棴</button>
+    </div>
+</div>
+
+<!-- js閮ㄥ垎 -->
+<script>
+    layui.config({
+        base: baseUrl + "/static/layui/lay/modules/"
+    }).use(['layer', 'admin'], function () {
+        var $ = layui.jquery;
+        var layer = layui.layer;
+        var admin = layui.admin;
+
+        var layerData = admin.getLayerData('#callbackDialog');
+    });
+
+</script>
diff --git a/src/main/webapp/views/tpl/theme/img/ic_loading.gif b/src/main/webapp/views/tpl/theme/img/ic_loading.gif
new file mode 100644
index 0000000..071ecd6
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/ic_loading.gif
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/icon_date.png b/src/main/webapp/views/tpl/theme/img/icon_date.png
new file mode 100644
index 0000000..5a50673
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/icon_date.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/icon_search.png b/src/main/webapp/views/tpl/theme/img/icon_search.png
new file mode 100644
index 0000000..7db69d2
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/icon_search.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-admin.png b/src/main/webapp/views/tpl/theme/img/theme-admin.png
new file mode 100644
index 0000000..6b4696f
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-admin.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-blue.png b/src/main/webapp/views/tpl/theme/img/theme-blue.png
new file mode 100644
index 0000000..33c9d24
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-blue.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-colorful.png b/src/main/webapp/views/tpl/theme/img/theme-colorful.png
new file mode 100644
index 0000000..2cbeba0
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-colorful.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-cyan.png b/src/main/webapp/views/tpl/theme/img/theme-cyan.png
new file mode 100644
index 0000000..368c04f
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-cyan.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-green.png b/src/main/webapp/views/tpl/theme/img/theme-green.png
new file mode 100644
index 0000000..f7a5ca5
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-green.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-my.png b/src/main/webapp/views/tpl/theme/img/theme-my.png
new file mode 100644
index 0000000..9fd7419
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-my.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-pink.png b/src/main/webapp/views/tpl/theme/img/theme-pink.png
new file mode 100644
index 0000000..6088b1e
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-pink.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-purple.png b/src/main/webapp/views/tpl/theme/img/theme-purple.png
new file mode 100644
index 0000000..072f439
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-purple.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-red.png b/src/main/webapp/views/tpl/theme/img/theme-red.png
new file mode 100644
index 0000000..db9922e
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-red.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/theme/img/theme-white.png b/src/main/webapp/views/tpl/theme/img/theme-white.png
new file mode 100644
index 0000000..4b4cb1f
--- /dev/null
+++ b/src/main/webapp/views/tpl/theme/img/theme-white.png
Binary files differ
diff --git a/src/main/webapp/views/tpl/tpl-note.html b/src/main/webapp/views/tpl/tpl-note.html
new file mode 100644
index 0000000..5910e86
--- /dev/null
+++ b/src/main/webapp/views/tpl/tpl-note.html
@@ -0,0 +1,206 @@
+<div class="layui-card-header">鏈湴渚跨</div>
+<div class="note-wrapper"></div>
+<div class="note-empty">
+    <i class="layui-icon layui-icon-face-surprised"></i>
+    <p>娌℃湁渚跨</p>
+</div>
+<div class="btn-circle" id="noteAddBtn" title="娣诲姞渚跨" style="position: absolute;">
+    <i class="layui-icon layui-icon-add-1"></i>
+</div>
+
+<script>
+    layui.use(['layer', 'form', 'util', 'admin'], function () {
+        var $ = layui.jquery;
+        var layer = layui.layer;
+        var util = layui.util;
+        var admin = layui.admin;
+        var dataList = [];  // 渚跨鍒楄〃
+        var $noteWrapper = $('.note-wrapper');
+
+        /* 娓叉煋鍒楄〃 */
+        function renderList() {
+            $noteWrapper.empty();
+            dataList = layui.data(admin.setter.tableName).notes;
+            if (dataList === undefined) dataList = [];
+            for (var i = 0; i < dataList.length; i++) {
+                var item = dataList[i];
+                $noteWrapper.prepend([
+                    '<div class="note-item" data-id="', item.id, '">',
+                    '   <div class="note-item-content">', util.escape(item.content), '</div>',
+                    '   <div class="note-item-time">', item.time, '</div>',
+                    '   <i class="layui-icon layui-icon-close-fill note-item-del"></i>',
+                    '</div>'
+                ].join(''));
+            }
+            $('.note-empty').css('display', dataList.length === 0 ? 'block' : 'none');
+            // 鐐瑰嚮淇敼
+            $('.note-item').click(function () {
+                var index = parseInt($(this).attr('data-id'));
+                showNote(dataList[index]);
+            });
+            // 鐐瑰嚮鍒犻櫎
+            $('.note-item-del').click(function (e) {
+                var id = parseInt($(this).parent().attr('data-id'));
+                layer.confirm('纭鍒犻櫎鍚楋紵', {
+                    skin: 'layui-layer-admin',
+                    shade: .1,
+                    shadeClose: true
+                }, function (index) {
+                    layer.close(index);
+                    dataList.splice(id, 1);
+                    for (var i = 0; i < dataList.length; i++) dataList[i].id = i;
+                    putDataList();
+                    renderList();
+                });
+                e.stopPropagation();
+            });
+        }
+
+        renderList();
+
+        /* 娣诲姞 */
+        $('#noteAddBtn').click(function () {
+            showNote();
+        });
+
+        // 鏄剧ず缂栬緫寮圭獥
+        function showNote(data) {
+            var id = data ? data.id : undefined, content = data ? data.content : '';
+            admin.open({
+                id: 'layer-note-edit',
+                title: '渚跨',
+                type: 1,
+                area: 'auto',
+                offset: '50px',
+                shadeClose: true,
+                content: '<textarea id="noteEditText" placeholder="璇疯緭鍏ュ唴瀹�" style="width: 280px;height: 150px;border: none;color: #666666;word-wrap: break-word;padding: 10px 20px;resize: vertical;">' + content + '</textarea>',
+                success: function () {
+                    $('#noteEditText').change(function () {
+                        content = $(this).val();
+                    });
+                },
+                end: function () {
+                    if (id !== undefined) {
+                        if (!content) {
+                            dataList.splice(id, 1);
+                            for (var i = 0; i < dataList.length; i++) dataList[i].id = i;
+                        } else if (content !== dataList[id].content) {
+                            dataList[id].content = content;
+                            dataList[id].time = util.toDateString(new Date(), 'yyyy-MM-dd HH:mm');
+                        }
+                    } else if (content) {
+                        dataList.push({
+                            id: dataList.length, content: content,
+                            time: util.toDateString(new Date(), 'yyyy-MM-dd HH:mm')
+                        });
+                    }
+                    putDataList();
+                    renderList();
+                }
+            });
+        }
+
+        /* 鏇存柊鏈湴缂撳瓨 */
+        function putDataList() {
+            layui.data(admin.setter.tableName, {key: 'notes', value: dataList});
+        }
+
+    });
+</script>
+
+<style>
+    .note-wrapper {
+        padding: 15px 0 15px 15px;
+        background-color: #fbfbfb;
+        position: absolute;
+        top: 43px;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        overflow-y: auto;
+        -webkit-overflow-scrolling: touch;
+    }
+
+    .note-wrapper .note-item {
+        display: inline-block;
+        width: 110px;
+        padding: 12px;
+        cursor: pointer;
+        position: relative;
+        border-radius: 8px;
+        margin: 0 15px 15px 0;
+        border: 1px solid #eeeeee;
+        background-color: #ffffff;
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none;
+        -webkit-transition: all .3s ease;
+        -moz-transition: all .3s ease;
+        -ms-transition: all .3s ease;
+        -o-transition: all .3s ease;
+        transition: all .3s ease;
+    }
+
+    .note-wrapper .note-item:hover {
+        box-shadow: 0 0 8px rgba(0, 0, 0, .05);
+        -webkit-transform: scale(1.02);
+        -moz-transform: scale(1.02);
+        -ms-transform: scale(1.02);
+        -o-transform: scale(1.02);
+        transform: scale(1.02);
+    }
+
+    .note-wrapper .note-item .note-item-content {
+        color: #666;
+        height: 80px;
+        font-size: 14px;
+        overflow: hidden;
+        word-break: break-all;
+    }
+
+    .note-wrapper .note-item .note-item-time {
+        color: #999;
+        font-size: 12px;
+        margin-top: 8px;
+    }
+
+    .note-wrapper .note-item .note-item-del {
+        position: absolute;
+        top: 2px;
+        right: 2px;
+        color: #FF5722;
+        font-size: 24px;
+        height: 24px;
+        width: 24px;
+        background-color: #fff;
+        border-radius: 50%;
+        visibility: hidden;
+        -webkit-transition: all .3s ease;
+        -moz-transition: all .3s ease;
+        -ms-transition: all .3s ease;
+        -o-transition: all .3s ease;
+        transition: all .3s ease;
+        opacity: 0;
+    }
+
+    .note-wrapper .note-item:hover .note-item-del {
+        visibility: visible;
+        opacity: 1;
+    }
+
+    .note-empty {
+        color: #999;
+        padding: 80px 0;
+        text-align: center;
+        display: none;
+        position: relative;
+        z-index: 1
+    }
+
+    .note-empty .layui-icon {
+        font-size: 60px;
+        margin-bottom: 10px;
+        display: inline-block;
+    }
+</style>
\ No newline at end of file
diff --git a/src/main/webapp/views/tpl/tpl-theme.html b/src/main/webapp/views/tpl/tpl-theme.html
new file mode 100644
index 0000000..7a1add0
--- /dev/null
+++ b/src/main/webapp/views/tpl/tpl-theme.html
@@ -0,0 +1,229 @@
+<div class="layui-card-header">涓婚璁剧疆</div>
+<div class="more-theme-list">
+    <div class="more-theme-item" data-theme="theme-normal">
+        <img src="tpl/theme/img/theme-admin.png"/>
+    </div>
+    <div class="more-theme-item" data-theme="theme-cyan">
+        <img src="tpl/theme/img/theme-cyan.png"/>
+    </div>
+    <div class="more-theme-item" data-theme="theme-white">
+        <img src="tpl/theme/img/theme-white.png"/>
+    </div>
+    <div class="more-theme-item" data-theme="theme-pink">
+        <img src="tpl/theme/img/theme-pink.png"/>
+    </div>
+    <div class="more-theme-item active" data-theme="theme-colorful">
+        <img src="tpl/theme/img/theme-colorful.png"/>
+    </div>
+    <div class="more-theme-item" data-theme="theme-blue">
+        <img src="tpl/theme/img/theme-blue.png"/>
+    </div>
+    <div class="more-theme-item" data-theme="theme-green">
+        <img src="tpl/theme/img/theme-green.png"/>
+    </div>
+    <div class="more-theme-item" data-theme="theme-purple">
+        <img src="tpl/theme/img/theme-purple.png"/>
+    </div>
+<!--    <div class="more-theme-item" data-theme="theme-red">-->
+<!--        <img src="tpl/theme/img/theme-red.png"/>-->
+<!--    </div>-->
+    <div class="more-theme-item" data-theme="theme-my">
+        <img src="tpl/theme/img/theme-my.png"/>
+    </div>
+</div>
+<!-- 瀵艰埅 -->
+<div class="more-menu-list">
+<!--    <a class="more-menu-item" href="https://easyweb.vip/doc/" target="_blank">-->
+<!--        <i class="layui-icon layui-icon-read" style="font-size: 19px;"></i> 寮�鍙戞枃妗�-->
+<!--    </a>-->
+<!--    <a class="more-menu-item" href="https://demo.easyweb.vip/spa" target="_blank">-->
+<!--        <i class="layui-icon layui-icon-tabs" style="font-size: 16px;"></i> &nbsp;spa鐗堟湰-->
+<!--    </a>-->
+<!--    <a class="more-menu-item" href="https://demo.easyweb.vip/theme" target="_blank">-->
+<!--        <i class="layui-icon layui-icon-theme"></i> 涓婚鐢熸垚鍣�-->
+<!--    </a>-->
+</div>
+<!-- 鎺у埗寮�鍏� -->
+<div class="layui-form" style="margin: 25px 0;" lay-filter="more-set-form">
+    <div class="layui-form-item">
+        <label class="set-item-label">椤�&emsp;鑴氾細</label>
+        <div class="set-item-ctrl">
+            <input id="setFooter" lay-filter="setFooter" type="checkbox" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴">
+        </div>
+        <label class="set-item-label"> Tab&nbsp;璁板繂锛�</label>
+        <div class="set-item-ctrl">
+            <input id="setTab" lay-filter="setTab" type="checkbox" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="set-item-label">澶氭爣绛撅細</label>
+        <div class="set-item-ctrl">
+            <input id="setMoreTab" lay-filter="setMoreTab" type="checkbox" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴">
+        </div>
+        <label class="set-item-label">鍒囨崲鍒锋柊锛�</label>
+        <div class="set-item-ctrl">
+            <input id="setRefresh" lay-filter="setRefresh" type="checkbox" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴">
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="set-item-label">瀵艰埅绠ご锛�</label>
+        <div class="set-item-ctrl">
+            <input lay-filter="navArrow" type="radio" value="" title="榛樿" name="navArrow">
+            <input lay-filter="navArrow" type="radio" value="arrow2" title="绠ご" name="navArrow">
+            <input lay-filter="navArrow" type="radio" value="arrow3" title="鍔犲彿" name="navArrow">
+        </div>
+    </div>
+</div>
+
+<script>
+    layui.use(['form', 'admin'], function () {
+        var $ = layui.jquery;
+        var form = layui.form;
+        var admin = layui.admin;
+        var setter = admin.setter;
+        var $body = $('body');
+
+        // 鍒囨崲涓婚
+        var $themItem = $('.more-theme-item');
+        $themItem.click(function () {
+            $themItem.removeClass('active');
+            $(this).addClass('active');
+            admin.changeTheme($(this).data('theme'));
+        });
+        var theme = $body.data('theme');
+        if (theme) {
+            $themItem.removeClass('active');
+            $themItem.filter('[data-theme="' + theme + '"]').addClass('active');
+        }
+
+        // 鍏抽棴/寮�鍚〉鑴�
+        form.on('switch(setFooter)', function (data) {
+            var checked = data.elem.checked;
+            admin.putSetting('closeFooter', !checked);
+            checked ? $body.removeClass('close-footer') : $body.addClass('close-footer');
+        });
+        $('#setFooter').prop('checked', !$body.hasClass('close-footer'));
+
+        // 鍏抽棴/寮�鍚疶ab璁板繂鍔熻兘
+        form.on('switch(setTab)', function (data) {
+            layui.index.setTabCache(data.elem.checked);
+        });
+        $('#setTab').prop('checked', setter.cacheTab);
+
+        // 鍏抽棴/寮�鍚鏍囩
+        form.on('switch(setMoreTab)', function (data) {
+            var checked = data.elem.checked;
+            admin.putSetting('pageTabs', checked);
+            admin.putTempData('indexTabs', undefined);
+            location.reload();
+        });
+        $('#setMoreTab').prop('checked', setter.pageTabs);
+
+        // 鍒囨崲Tab鑷姩鍒锋柊
+        var $mainTab = $('.layui-body>.layui-tab[lay-filter="admin-pagetabs"]');
+        form.on('switch(setRefresh)', function (data) {
+            var checked = data.elem.checked;
+            admin.putSetting('tabAutoRefresh', checked);
+            checked ? $mainTab.attr('lay-autoRefresh', 'true') : $mainTab.removeAttr('lay-autoRefresh');
+        });
+        $('#setRefresh').prop('checked', setter.tabAutoRefresh === true);
+
+        // 瀵艰埅灏忎笁瑙�
+        var $leftNav = $('.layui-layout-admin>.layui-side>.layui-side-scroll>.layui-nav');
+        form.on('radio(navArrow)', function (data) {
+            $leftNav.removeClass('arrow2 arrow3');
+            data.value && $leftNav.addClass(data.value);
+            admin.putSetting('navArrow', data.value);
+        });
+        var navArrow = $leftNav.hasClass('arrow2') ? 'arrow2' : $leftNav.hasClass('arrow3') ? 'arrow3' : '';
+        $('[name="navArrow"][value="' + navArrow + '"]').prop('checked', true);
+
+        form.render('radio', 'more-set-form');
+        form.render('checkbox', 'more-set-form');
+    });
+</script>
+
+<style>
+    /* theme */
+    .more-theme-list {
+        padding-left: 15px;
+        padding-top: 20px;
+        margin-bottom: 10px;
+    }
+
+    .more-theme-item {
+        padding: 4px;
+        margin: 0 6px 15px 0;
+        display: inline-block;
+        border: 1px solid transparent;
+    }
+
+    .more-theme-item img {
+        width: 80px;
+        height: 50px;
+        background: #f5f7f9;
+        box-sizing: border-box;
+        border: 1px solid #f5f7f9;
+        cursor: pointer;
+    }
+
+    .more-theme-item:hover, .more-theme-item.active {
+        border-color: #5FB878;
+    }
+
+    .more-menu-item {
+        color: #595959;
+        height: 50px;
+        line-height: 50px;
+        font-size: 16px;
+        padding: 0 25px;
+        border-bottom: 1px solid #e8e8e8;
+        font-style: normal;
+        display: block;
+    }
+
+    /* menu */
+    .more-menu-item:first-child {
+        border-top: 1px solid #e8e8e8;
+    }
+
+    .more-menu-item:hover {
+        color: #595959;
+        background: #f6f6f6;
+    }
+
+    .more-menu-item .layui-icon {
+        font-size: 18px;
+        padding-right: 10px;
+    }
+
+    .more-menu-item:after {
+        color: #8c8c8c;
+        right: 16px;
+        content: "\e602";
+        position: absolute;
+        font-family: layui-icon !important;
+    }
+
+    .more-menu-item.no-icon:after {
+        display: none;
+    }
+
+    /* setting from */
+    .set-item-label {
+        height: 38px;
+        line-height: 38px;
+        padding-left: 20px;
+        display: inline-block;
+    }
+
+    .set-item-ctrl {
+        height: 38px;
+        line-height: 38px;
+        display: inline-block;
+    }
+
+    .set-item-ctrl > * {
+        margin: 0 !important;
+    }
+</style>

--
Gitblit v1.9.1