| | |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title>浙江中扬 - 自动化立体仓库 - AS / RS</title> |
| | | <title>浙江中扬 - 自动化立体仓库 - WCS</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"> |
| | |
| | | font-size: 18px; |
| | | font-weight: 400; |
| | | /*margin-left: 5px;*/ |
| | | } |
| | | |
| | | /* 弹窗样式 */ |
| | | .popup { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | background-color: rgba(0,0,0,0.5); |
| | | display: none; |
| | | justify-content: center; |
| | | align-items: center; |
| | | z-index: 9999; |
| | | } |
| | | |
| | | .popup-content { |
| | | background-color: #fff; |
| | | padding: 20px; |
| | | border-radius: 5px; |
| | | box-shadow: 0px 0px 20px rgba(0,0,0,0.3); |
| | | text-align: center; |
| | | } |
| | | |
| | | /* AI助手抽屉动画 */ |
| | | @keyframes slideInRight { |
| | | from { transform: translate3d(100%, 0, 0); opacity: 0; } |
| | | to { transform: translate3d(0, 0, 0); opacity: 1; } |
| | | } |
| | | |
| | | @keyframes slideOutRight { |
| | | from { transform: translate3d(0, 0, 0); opacity: 1; } |
| | | to { transform: translate3d(100%, 0, 0); opacity: 0; } |
| | | } |
| | | |
| | | .ai-drawer-layer { |
| | | box-shadow: -8px 0 24px rgba(0, 0, 0, 0.15) !important; |
| | | border-radius: 8px 0 0 8px !important; |
| | | overflow: hidden; |
| | | animation: slideInRight 0.5s cubic-bezier(0.16, 1, 0.3, 1); |
| | | } |
| | | |
| | | .ai-drawer-layer-close { |
| | | animation: slideOutRight 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards !important; |
| | | } |
| | | </style> |
| | | </head> |
| | |
| | | <!-- <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" lay-unselect id="fakeShow" style="display: none;user-select: none;margin-right: 10px;"> |
| | | <div style="color: red;" id="fakeShowText">仿真模拟运行中</div> |
| | | </li> |
| | | <li class="layui-nav-item" lay-unselect id="licenseShow" style="display: none;user-select: none;"> |
| | | <div style="color: red;">许可证有效期:<span id="licenseDays">29</span>天</div> |
| | | <div style="color: red;">临时许可证有效期:<span id="licenseDays">29</span>天</div> |
| | | </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> |
| | |
| | | <div class="layui-body"></div> |
| | | <!-- 底部 --> |
| | | <div class="layui-footer layui-text"> |
| | | copyright © 2023 浙江中扬立库技术有限公司 all rights reserved. |
| | | copyright © 2026 浙江中扬立库技术有限公司 all rights reserved. |
| | | <span class="pull-right">Version 1.0.0</span> |
| | | </div> |
| | | |
| | |
| | | <div class="layuimini-loader-inner"></div> |
| | | </div> |
| | | |
| | | <!-- 弹窗内容 --> |
| | | <div class="popup" id="popup"> |
| | | <div class="popup-content"> |
| | | <h2 style="font-size: 28px;margin-bottom: 10px;">许可证即将过期</h2> |
| | | <div id="popup-text" style="font-size: 28px;color: red"></div> |
| | | <button style="background-color: #007bff;color: #fff;border: none;padding: 10px 20px;border-radius: 5px;cursor: pointer;font-size: 16px;" onclick="hidePopup()">关闭</button> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 右下角SVG动画 --> |
| | | <div id="ai-assistant-btn" style="position: fixed; bottom: 40px; right: 20px; z-index: 9999; cursor: pointer;"> |
| | | </div> |
| | | |
| | | <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> |
| | | 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 () { |
| | | // 注入AI助手图标 |
| | | $('#ai-assistant-btn').html(getAiIconHtml(60, 60)); |
| | | |
| | | if ("" === localStorage.getItem('token')) { |
| | | top.location.href = baseUrl + "/login"; |
| | | } |
| | | }); |
| | | |
| | | // 显示弹窗 |
| | | function showPopup(res) { |
| | | document.getElementById('popup').style.display = 'block'; |
| | | // 获取弹出窗口内容的容器元素 |
| | | var popupText = document.getElementById('popup-text'); |
| | | // 假设后台返回的字符串为 responseString |
| | | if (res!==""){ |
| | | // 获取当前日期 |
| | | const currentDate = new Date(); |
| | | // 创建新日期对象并添加天数 |
| | | const newDate = new Date(); |
| | | newDate.setDate(currentDate.getDate() + res + 1); |
| | | // 将字符串设置为弹窗内容的文本 |
| | | popupText.textContent = "许可证将于" + new Intl.DateTimeFormat('zh-CN').format(newDate) + "过期,剩余有效期:" + res + "天!"; |
| | | }else { |
| | | document.getElementById('popup').style.display = 'none'; |
| | | } |
| | | } |
| | | |
| | | // 隐藏弹窗 |
| | | function hidePopup() { |
| | | document.getElementById('popup').style.display = 'none'; |
| | | } |
| | | |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | |
| | | admin.changeTheme("theme-colorful"); |
| | | } |
| | | } |
| | | |
| | | let fakeRunning = false |
| | | setInterval(function () { |
| | | $.ajax({ |
| | | url: baseUrl + "/openapi/getFakeSystemRunStatus", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'GET', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | if(res.data.isFake) { |
| | | $("#fakeShow").show() |
| | | let running = res.data.running |
| | | if (running) { |
| | | $("#fakeShowText").text("仿真模拟运行中") |
| | | } else { |
| | | $("#fakeShowText").text("仿真模拟未运行") |
| | | } |
| | | fakeRunning = running |
| | | }else { |
| | | $("#fakeShow").hide() |
| | | } |
| | | }else { |
| | | top.location.href = baseUrl + "/login"; |
| | | } |
| | | } |
| | | }); |
| | | }, 1000); |
| | | |
| | | $("#fakeShow").on("click", function () { |
| | | if (fakeRunning) { |
| | | layer.confirm('确定要停止仿真模拟吗?', function (index) { |
| | | layer.close(index); |
| | | $.ajax({ |
| | | url: baseUrl + "/openapi/stopFakeSystem", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | layer.msg("仿真模拟已停止", {icon: 1}); |
| | | $("#fakeShowText").text("仿真模拟未运行") |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | } else { |
| | | layer.confirm('确定要启动仿真模拟吗?', function (index) { |
| | | layer.close(index); |
| | | $.ajax({ |
| | | url: baseUrl + "/openapi/startFakeSystem", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | layer.msg("仿真模拟已启动", {icon: 1}); |
| | | $("#fakeShowText").text("仿真模拟运行中") |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | $.ajax({ |
| | | url: baseUrl + "/menu/auth", |
| | |
| | | $("#licenseShow").show() |
| | | $("#licenseDays").html(days) |
| | | } |
| | | |
| | | if (days <= 15) { |
| | | showPopup(days) |
| | | } |
| | | }else { |
| | | top.location.href = baseUrl + "/login"; |
| | | } |
| | |
| | | var url = logout.getAttribute('href'); |
| | | logout.setAttribute('href', baseUrl + "/login"); |
| | | |
| | | // AI助手图标悬浮提示 |
| | | $('#ai-assistant-btn').on('mouseenter', function(){ |
| | | this.index = layer.tips('AI助手', this, { |
| | | tips: [1, '#333'], // 上方显示,深色背景 |
| | | time: -1 // 不自动关闭 |
| | | }); |
| | | }).on('mouseleave', function(){ |
| | | layer.close(this.index); |
| | | }).on('click', function () { |
| | | layer.open({ |
| | | type: 2, |
| | | title: false, // 隐藏默认标题栏,更简洁 |
| | | closeBtn: 0, // 隐藏关闭按钮,点击遮罩关闭 |
| | | shadeClose: false, // 改为手动控制关闭,以便播放动画 |
| | | shade: 0.1, |
| | | area: ['600px', '100%'], |
| | | offset: 'r', // 右侧悬浮 |
| | | anim: -1, // 禁用默认动画,使用CSS动画 |
| | | isOutAnim: false, |
| | | skin: 'ai-drawer-layer', // 自定义皮肤 |
| | | content: 'ai/diagnosis.html', |
| | | success: function(layero, index){ |
| | | // 背景模糊效果 |
| | | var shadeId = layero.attr('id').replace('layui-layer', 'layui-layer-shade'); |
| | | var $shade = $('#' + shadeId); |
| | | $shade.css({ |
| | | 'backdrop-filter': 'blur(3px)', |
| | | 'transition': 'opacity 0.8s' |
| | | }); |
| | | |
| | | // 点击遮罩关闭(带动画) |
| | | $shade.on('click', function() { |
| | | layero.addClass('ai-drawer-layer-close'); |
| | | $shade.css('opacity', 0); |
| | | setTimeout(function(){ |
| | | layer.close(index); |
| | | }, 400); |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | }); |
| | | </script> |
| | | <script type="text/html" id="menuTpl"> |