#AI
Junjie
8 小时以前 d600bbc25fb2e306d92cffafe2d7aa601daa536b
src/main/webapp/views/index.html
@@ -2,7 +2,7 @@
<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">
@@ -17,6 +17,50 @@
      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>
@@ -43,11 +87,11 @@
<!--      <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;">
      <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>
@@ -80,7 +124,7 @@
  <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>
@@ -91,6 +135,19 @@
  <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>
@@ -98,10 +155,37 @@
<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/"
@@ -221,6 +305,10 @@
            $("#licenseShow").show()
            $("#licenseDays").html(days)
          }
          if (days <= 15) {
             showPopup(days)
          }
        }else {
          top.location.href = baseUrl + "/login";
        }
@@ -247,6 +335,48 @@
    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">