layui--记录

news2024/11/26 2:27:23

layui

行点击事件:点了没反应?

 //监听行工具事件
    layui.table.on('tool(demo)', function (obj) {
      //alert(222) 
    });

原因:检查下id与lay-filter是否一致;id与lay-filter必须一致。

 <table id="demo" lay-filter="demo"></table>

【layui】使用table编辑功能,滚动条位置固定不变,无感刷新

使用table 单元格编辑功能时,每次里焦触发成功后手动调用了table.reload函数,导致滚动条初始化到顶部。

  1. 定义变量
   // 重载表格---保持滚动条位置
    let tableScroll = {
      scrollTob: 0,
      scrollLeft: 0,
    }; 
  1. 在table 的done函数中进行表格滚动
	done: function (res, curr, count) { 
	// 重载表格---保持滚动条位置
	    $('.layui-table-body').scrollTop(tableScroll.scrollTob);
	    $('.layui-table-body').scrollLeft(tableScroll.scrollLeft);
	    tableScroll.scrollTob = 0;
	    tableScroll.scrollLeft = 0; 
	},
  1. 在表格编辑后,表格刷新前先记录滚动条位置
	// 重载表格---保持滚动条位置
	var scrollTop = ($('.layui-table-body') && $('.layui-table-body').length > 1) ? $('.layui-table-body')[0].scrollTop : $('.layui-table-body').scrollTop;
	var scrollLeft = ($('.layui-table-body') && $('.layui-table-body').length > 1) ? $('.layui-table-body')[0].scrollLeft : $('.layui-table-body').scrollLeft;
	tableScroll.scrollTob = scrollTop == 0 ? tableScroll.scrollTob : scrollTop;
	tableScroll.scrollLeft = scrollLeft;
	
	layui.table.reload('test', { data: productList });

    // var tipsValComp;
    // // 1.找到触发的事件对象(绑定全局)  2.事件处理程序
    // $('body').on('mouseover', '.hoverPerDay', function () {
    //   var ovText = $(this).text();
    //   // var html = "<p style='word-wrap:break-word;width: 150px;'>" + ovText + "</p>";
    //   var html = `
    //   <div class="hoverDIV_PerDay" style="">
    //       <div class="compName" style="">公司1公司1公司1公司1公司1公司1公司1公司1</div>
    //       <div class="item">
    //         <div>库存:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>时间:</div>
    //         <div><span class="sub_cont">2023-08-17</span></div>
    //       </div>
    //       <div class="item">
    //         <div>状态:</div>
    //         <div><span class="sub_cont">正常 </span></div>
    //       </div>
    //     </div>`;
    //   //  layer.tips('默认向右', this);
    //   tipsValComp = layer.tips(html, this, { tips: [3, '#fff', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });
    // });
    // //鼠标移出
    // $('body').on('mouseout', '.hoverPerDay', function () {
    //   layer.close(tipsValComp);
    // });


    // var tipsValPerDay;
    // // 1.找到触发的事件对象(绑定全局)  2.事件处理程序
    // $('body').on('mouseover', '.hoverPerComp', function () {
    //   var ovText = $(this).text();
    //   // var html = "<p style='word-wrap:break-word;width: 150px;'>" + ovText + "</p>";
    //   var html = `
    //   <div class="hoverDIV_PerComp" style="">
    //       <div class="compName" style="">公司1公司1公司1公司1公司1公司1公司1公司1</div>
    //       <div class="item">
    //         <div>库存容量:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>库存上限:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>库存下限:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>平均每日消耗(估):</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //     </div>`;
    //   //  layer.tips('默认向右', this);
    //   tipsValPerDay = layer.tips(html, this, { tips: [3, '#fff', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });
    // });
    // //鼠标移出
    // $('body').on('mouseout', '.hoverPerComp', function () {
    //   layer.close(tipsValPerDay);
    // });



问题:在时间筛选的时候遇到了难题,表格重载后,表头没有按照重载方法传入的cols参数展示,而是还是展示原先的表头

原因:经过一番排查后发现原因,layui中 table.reload(ID, options) 在接收options中的参数中,如果参数是数组形式,那并不会完全替换历史参数,而是覆盖到对应长度。如果之前传入参数是[1,2,3,4],重载传入参数是[a,b.c],那后台获取到的参数是[a,b,c,4],这就是为什么我在筛选日期为2月后,表头还是展示到30天(新传入的表头29项,和之前的30项合并后,任然是30项)这个问题是真的坑啊

解决:这个问题解决起来并不复杂,而是复杂在了发现问题的原因,实际解决只需要一行关键代码就好,在table的render方法的回调函数中,将cols字段初始化就可以了: this.cols = [ ];

 done:function (res,curr,count) {
        this.cols = []; //(关键代码)将cols初始化,否则表格重载时无法正确重新渲染表头
    }
 table.reload('test', {
            cols: [cols],
            where: {
              "data": encodeURI(JSON.stringify(data.field).replaceAll("\"", "\\\""))
            },
            page: {
              curr: 1
            }
          });
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <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="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
  <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
  <link rel="stylesheet" href="../../open.css" media="all">
  <style>
    .layui-table td,
    .layui-table th {
      font-size: 12px !important;
    }

    .layui-table-cell {
      height: 28px;
      line-height: 28px;
      padding: 0px !important;
    }

    .layui-table-view .layui-table td,
    .layui-table-view .layui-table th {
      padding: 0 !important;
    }

    .layui-layer-content {
      width: fit-content !important;
    }
  </style>
</head>

<body>

  <div class="layui-fluid">
    <div class="layui-row layui-col-space15">
      <div class="layui-col-md12">
        <div class="layui-card" style="">
          <div class="layui-card-body">
            <form class="layui-form layui-form-pane" action="">
              <div class="layui-form-item">
                <div class="layui-inline">
                  <label class="layui-form-label">客户</label>
                  <div class="layui-input-inline">
                    <input type="text" id="supplyName" name="supplyName" autocomplete="off" class="layui-input"
                      placeholder="请输入客户">
                    <input type="text" id="supply" name="supply" style="display:none;">
                  </div>
                </div>
                <div class="layui-inline">
                  <label class="layui-form-label">月份</label>
                  <div class="layui-input-inline">
                    <input type="text" id="currMonth" name="currMonth" autocomplete="off" class="layui-input"
                      placeholder="选择月份">
                  </div>
                </div>
                <div class="layui-inline">
                  <button type="button" class="layui-btn layui-btn layui-btn-normal" lay-submit lay-filter="search">
                    <i class="layui-icon">&#xe615;</i>搜索
                  </button>
                  <button type="reset" class="layui-btn layui-btn layui-btn-danger">
                    <i class="layui-icon">&#xe669;</i>重置
                  </button>
                </div>
                <!-- 图例 -->
                <div class="lenged_box">
                  <div class="lenged_item">
                    <div class="lenged_up"></div>
                    <div>超过上限</div>
                  </div>
                  <div class="lenged_item">
                    <div class="lenged_down"></div>
                    <div>超过下限</div>
                  </div>
                  <div class="lenged_item">
                    <div class="lenged_today"></div>
                    <div>今日时间</div>
                  </div>
                  <div class="lenged_item">
                    <div class="lenged_prev"></div>
                    <div>预测时间</div>
                  </div>
                </div>
              </div>
            </form>
            <div class="layui-row" style="">
              <table class="layui-hide" id="test" lay-filter="test"></table>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  <script src="../../../layuiadmin/layui/layui.all.js"></script>
  <script src="../../utils.js"></script>
  <script type="text/javascript">
    // 设置卡片高度
    $('.layui-card-body').css('height', $(window).height() - 32);
    //执行一个laydate实例
    layui.laydate.render({
      elem: '#currMonth',
      type: 'month',
    });
    // 获取表头 
    // var d = {
    //   fn: "customerAction",
    //   md: "selectCustomerInvTitleList"
    // }
    // httpRequestPost("/MngServlet", d, function (res) {
    //   console.log(res);
    //   if (res.rt == 0) {
    //     var cols = res.data;
    //     // 获取data
    //     layui.table.render({
    //       id: 'test',
    //       elem: '#test',
    //       title: '入库计划单',
    //       height: 'full-80',
    //       url: contextPath + '/MngServlet',
    //       method: 'post',
    //       where: {
    //         fn: "customerAction",
    //         md: "selectCustomerInvList"
    //       },
    //       contentType: 'application/json',
    //       parseData: function (res) { //res 即为原始返回的数据
    //         return {
    //           "code": res.rt, //解析接口状态
    //           "data": res.data, //解析数据列表
    //           "count": res.count,
    //           "msg": res.msg
    //         };
    //       },
    //       cols: cols,
    //       done: function (res, curr, count, origin) {
    //         // 获取所有表头
    //         var totalArr = $('.layui-table-header th');
    //         var today = 999;//今日日期
    //         totalArr.each(function (index, item) {
    //           var currTh = $(this).attr('data-field').split('num')[1];//获取表头的data-field:num28
    //           const date = new Date().getDate();//
    //           if (Number(currTh) === Number(date)) {
    //             // 相等就是今日
    //             today = index;//赋值今日
    //             $(this).css({ 'background': '#1e9fff', 'color': '#fff', })
    //           } else if (index > today) {
    //             // 大于今日就是未来
    //             $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
    //           }
    //         });
    //       }

    //     });

    //   }
    // })
    // // td上下限颜色
    // function tdColor (title, up, lower, num, d) {
    //   if (title >= up) {
    //     return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${num}" οnmοuseοver="showPerDay(${title}, ${up}, ${lower},${num},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffcdce;color:#ff3839"> ${title}</div> `
    //   }
    //   if (title <= lower) {
    //     return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${num}" οnmοuseοver="showPerDay(${title},${up}, ${lower},${num},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffecc6;color:#ff9202"> ${title}</div> `
    //   }
    //   return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${num}" οnmοuseοver="showPerDay(${title}, ${up}, ${lower},${num},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();"> ${title}</div> `
    // }
    // // td公司
    // function tdComp (d) {
    //   return `<div class="hoverPerComp" id="tdPerDay${d.customerId}"   οnmοuseοver="showComp('${d.customerName}',${d.customerId},${d.invLimit}, ${d.invUp}, ${d.invLow},${d.invDaily});" οnmοuseleave="closeTipsComp();"><div class="">${d.customerName}</div><img src="../../img/icon/charts.png" alt=""></div>`
    // }


    function checkDate (params) {
      if (params < 10) {
        params = "0" + params;
      } else {
        params = params + "";
      }
      return params
    }

    let daysList = [];
    let cols = [];
    let queryYear = new Date().getFullYear();   //默认获取当前年;//需要查询的年份
    let queryMonth = checkDate(new Date().getMonth() + 1);  //默认获取当前月;//需要查询的月份

    getCurrMonthDays(queryYear, queryMonth);
    //自动显示本月日期
    function getCurrMonthDays (year, month) {
      daysList = [];
      cols = [];

      //获取当前月有多少天
      let day = new Date(year, month, 0).getDate();

      let current_month_days = [];
      for (let i = 0; i < day; i++) {
        let d = i + 1;
        if (d < 10) {
          current_month_days[i] = parseInt("0" + d);
        } else {
          current_month_days[i] = d;
        }
      }
      // console.log("月份测试", current_month_days);
      daysList = current_month_days;
      for (let a = 0; a < daysList.length; a++) {
        cols.push({
          title: `${daysList[a]} `,
          width: "50",
          align: "center",
          field: `num${daysList[a]}`,
          // templet: `<div>{{tdColor(d.num${daysList[a]}, d.invUp, d.invLow,${daysList[a]}, d)}</div> `,
          templet: function (d) {
            var s = 'num' + daysList[a];
            var title = d[s];//当前单元格的数值
            if (d.title >= d.invUp) {
              return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title}, ${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffcdce;color:#ff3839"> ${title}</div> `
            }
            if (d.title <= d.invLow) {
              return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title},${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffecc6;color:#ff9202"> ${title}</div> `
            }
            return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title}, ${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();"> ${title}</div> `

          },
        })
      }
      cols.unshift(
        { title: "序号", type: "numbers", width: "40" },
        {
          field: "customerName", title: '客户名称', width: "90", event: "openCompCharts",
          templet: "<div>{{tdComp(d)}}</div>",
          templet: function (d) {
            return `<div class="hoverPerComp" id="tdPerDay${d.customerId}" οnmοuseοver="showComp('${d.customerName}',${d.customerId},${d.invLimit}, ${d.invUp}, ${d.invLow},${d.invDaily});"  οnmοuseleave="closeTipsComp();">
              <div class="">${d.customerName}</div>
              <img src="../../img/icon/charts.png" alt="">
            </div>`
          }
        }
      );
    };


    // hoverPerDay 
    var tipsPerDay;
    function showPerDay (title, up, lower, num, customerId, customerName) {
      // console.log(title, up, lower, num, customerId, customerName);
      // console.log('显示的信息');
      var currYM = new Date().toLocaleDateString().split('/')[0] + '-' + new Date().toLocaleDateString().split('/')[1] + '-';//'2023/8/2'
      var html = `
      <div class="hoverDIV_PerDay">
          <div class="compName">${customerName}</div>
          <div class="item">
            <div>库存:</div>
            <div><span class="sub_cont">${title}</span> T</div>
          </div>
          <div class="item">
            <div>时间:</div>
            <div><span class="sub_cont">${currYM}${num}</span></div>
          </div>
          <div class="item">
            <div>状态:</div>
            <div><span class="sub_cont" style="${title >= up ? 'color:#ff3839' : (title <= lower ? 'color:#ff9202' : '')}">${title >= up ? '超过上限' : (title <= lower ? '小于下限' : '正常')}</span></div>
          </div>
        </div> `;
      // tipsPerDay = layer.tips('默认向右', this);
      var node = `#tdPerDay${customerId}${num} `;
      // console.log($(`#tdPerDay${ title }${ num } `));
      tipsPerDay = layer.tips(html, node, { tips: [3, '#fff', 'width: fit-content;', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });//
    }
    function closeTipsPerDay () {//关闭显示的信息
      // console.log('关闭显示的信息');
      layer.close(tipsPerDay);
    }
    // hoverPerComp
    var tipsPerComp;
    function showComp (customerName, customerId, invLimit, invUp, invLow, invDaily) {
      // console.log(customerName, customerId, invLimit, invUp, invLow, invDaily);
      // console.log('显示的信息');
      var currYM = new Date().toLocaleDateString().split('/')[0] + '-' + new Date().toLocaleDateString().split('/')[1] + '-';//'2023/8/2'
      var html = `
      <div class="hoverDIV_PerDay">
          <div class="compName">${customerName}</div>
          <div class="item">
            <div>库存容量:</div>
            <div><span class="sub_cont">${invLimit}</span> T</div>
          </div>
          <div class="item">
            <div>库存上限:</div>
            <div><span class="sub_cont">${invUp}</span> T</div>
          </div>
          <div class="item">
            <div>库存下限:</div>
            <div><span class="sub_cont">${invLow}</span> T</div>
          </div>
          <div class="item">
            <div>每日平均消耗(估):</div>
            <div><span class="sub_cont">${invDaily}</span> T</div>
          </div>
        </div> `;
      // tipsPerComp = layer.tips('默认向右', this);
      var node = `#tdPerDay${customerId} `;
      // console.log($(`#tdPerDay${ title }${ num }`));
      tipsPerComp = layer.tips(html, node, { tips: [3, '#fff', 'width: fit-content;', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });//
    }
    function closeTipsComp () {//关闭显示的信息
      // console.log('关闭显示的信息');
      layer.close(tipsPerComp);
    }


    layui.use(
      ['table', 'form'],
      function () {
        var table = layui.table;
        var form = layui.form;
        form.on('submit(search)', function (data) {

          // console.log($('#currMonth').val());//2023-02 
          // 重新获取表头
          queryYear = $('#currMonth').val().split('-')[0];   //默认获取当前年;//需要查询的年份
          queryMonth = $('#currMonth').val().split('-')[1];  //默认获取当前月;//需要查询的月份
          getCurrMonthDays(queryYear, queryMonth);
          // console.log(cols, daysList);
          table.reload('test', {
            cols: [cols],
            where: {
              "data": encodeURI(JSON.stringify(data.field).replaceAll("\"", "\\\""))
            },
            page: {
              curr: 1
            }
          });
          return false;
        });


        // 获取data
        layui.table.render({
          id: 'test',
          elem: '#test',
          title: '入库计划单',
          height: 'full-80',
          url: contextPath + '/MngServlet',
          method: 'post',
          where: {
            fn: "customerAction",
            md: "selectCustomerInvList"
          },
          contentType: 'application/json',
          parseData: function (res) { //res 即为原始返回的数据
            return {
              "code": res.rt, //解析接口状态
              "data": res.data, //解析数据列表
              "count": res.count,
              "msg": res.msg
            };
          },
          cols: [cols],
          done: function (res, curr, count, origin) {
            this.cols = []; //(关键代码)将cols初始化,否则表格重载时无法正确重新渲染表头


            // 获取所有表头
            var totalArr = $('.layui-table-header th');
            var today = 999;//今日日期

            totalArr.each(function (index, item) {
              // console.log(queryYear, queryMonth);//2023 '08'
              if ((index === 0) || (index === 1)) {
                return
              }
              var currTh = $(this).attr('data-field').split('num')[1];//获取表头的data-field:num28
              const date = new Date().getDate();//--今日日期:2
              // var fullDate = new Date().toLocaleDateString();//'2023/8/2'   
              var currYY = new Date().getFullYear();   //默认获取当前年;//需要查询的年份
              var currMM = checkDate(new Date().getMonth() + 1);  //默认获取当前月;//需要查询的月份

              // 1:比较年

              if (Number(queryYear) > Number(currYY)) {
                //如果 未来--全部用绿色
                $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
              } else if (Number(queryYear) < Number(currYY)) {
                //如果 过去--全部用默认
                $(this).css({ 'background': '#f2f2f2', 'color': '#666', })
              } else if (Number(queryYear) == Number(currYY)) {
                // 2:比较月

                if (Number(queryMonth) > Number(currMM)) {
                  //如果 未来--全部用绿色
                  $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
                } else if (Number(queryMonth) < Number(currMM)) {
                  //如果 过去--全部用默认
                  $(this).css({ 'background': '#f2f2f2', 'color': '#666', })
                } else if (Number(queryMonth) == Number(currMM)) {
                  // 3:比较日

                  if (Number(currTh) === Number(date)) {
                    // 相等就是今日
                    today = index;//赋值今日
                    $(this).css({ 'background': '#1e9fff', 'color': '#fff', })
                  } else if (index > today) {
                    // 大于今日就是未来
                    $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
                  } else {
                    $(this).css({ 'background': '#f2f2f2', 'color': '#666', })
                  }
                }
              }



            });
          }

        });







        //监听单元格事件
        table.on('tool(test)', function (obj) {
          var data = obj.data;
          // console.log(data);
          if (obj.event === 'openCompCharts') {
            layer.open({
              title: data.customerName,
              type: 2,
              area: ['60%', '80%'],
              content: './customerCharts.html?customerId=' + data.customerId
            });
          }
        });


        $(document).on("click", "div[lay-id='test'] .layui-table-body table.layui-table tbody tr", function () {
          //获取行下标
          var index = parseInt($(this).parents('tr').prevObject.context.dataset.index);
          //获取到表对象
          $(".layui-table-body tr ").attr({ "style": "background:#FFFFFF" });//其他tr恢复原样
          $(".layui-table-body tr[data-index=" + index + "]").attr({ "style": "background:#dcdcdc" });//改变当前tr颜色	
        })

        //点击复选框取消冒泡(这里默认复选框在table第一列)(只要点在复选框外就会触发行选,取消其他的复选框)
        $(document).on("click", "tr td:first-child", function (e) {
          e.stopPropagation();
        });


      });

  </script>
</body>

</html>

日期控件:限制可选日期(月份):最多到下月

在这里插入图片描述

    // 默认当月
    $("#currMonth").val(layui.util.toDateString(get_today(), 'yyyy-MM'));

    // 设置最大可选月份
    function maxMonth () {
      var year = new Date().getFullYear();   //默认获取当前年;//需要查询的年份
      var month = new Date().getMonth() + 1;   //默认获取当前年;//需要查询的年份
      //获取当前月有多少天
      var day = new Date(year, month, 0).getDate();
      if (month == 12) {
        year = year + 1;
        month = 0;
      }
      // console.log(year + '-' + checkDate(month + 1) + '-' + day);
      return year + '-' + checkDate(month + 1) + '-' + day;
    }

    //执行一个laydate实例
    layui.laydate.render({
      elem: '#currMonth',
      type: 'month',
      max: maxMonth(),
      showBottom: false,
      change: function (value) {
        timeNoConfirm('currMonth', value);
        //TODO
      }
    });

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

适配器设计模式

目录 一、适配器模式1.类适配器模式2.对象适配器模式3.接口适配器 二、适配器模式应用场景三、适配器模式的优缺点 一、适配器模式 B站&#xff1a;java架构师 定义&#xff1a;适配器模式把一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而…

idea 打 jar 包以及运行使用

1. 在 idea 右侧点击 maven 2. 点击Lifecycle——》clean 运行 3. 点击 Lifecycle——》compile 4. 点击 Lifecycle——》package 5. 打成的 jar 包可以在 target中找到 6. jar 包的名字和版本可以在 pom.xml文件中设置 7. 注意事项&#xff1a;打 jar 包的时候 test 里的 tes…

【算法刷题-双指针篇】

目录 1.leetcode-27. 移除元素2.leetcode-344. 反转字符串3.leetcode-剑指 Offer 05. 替换空格4.leetcode-206. 反转链表5.leetcode-19. 删除链表的倒数第 N 个结点6.leetcode-面试题 02.07. 链表相交7.leetcode-142. 环形链表 II8.leetcode-15. 三数之和9.leetcode-18. 四数之…

PROFINET简介及其实现

PROFINET是一个开放式的工业以太网通讯协定&#xff0c;主要由西门子公司和PROFIBUS & PROFINET国际协会所提出。PROFINET应用TCP/IP及资讯科技的相关标准&#xff0c;是实时的工业以太网。自2003年起&#xff0c;PROFINET是IEC 61158及IEC 61784标准中的一部分。 三种通信…

Aspose导出word使用记录

背景&#xff1a;Aspose系列的控件&#xff0c;功能实现都比较强大&#xff0c;可以实现多样化的报表设计及输出。 通过这次业务机会&#xff0c;锂宝碳审核中业务功需要实现Word文档表格的动态导出功能&#xff0c;因此学习了相关内容&#xff0c;在学习和参考了官方API文档的…

解决legend数据过多,使用滚动,但进行后图形样式发生变化

前言&#xff1a; 滚动前&#xff1a; 滚动后&#xff1a; 滚动前后&#xff0c;饼状图中的内容除了“城市规划”和“城市管理部件”两个分类进行了位置的交换&#xff0c;没有其他的变化&#xff0c;数据也没有增加&#xff0c;但是&#xff0c;样式就是不知道为啥发生了变化。…

vue3实现日历日期选择(不使用任何插件,纯javaScript实现)

个人项目地址: SubTopH前端开发个人站 (自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面) SubTopH前端开发个人站https://subtop.gitee.io/subtoph.github.io/#/home 以上 👆 是个人前端项目,欢…

【vue】this.$nextTick解决this.$refs undefined的问题

说明 1、发邮件页面分成两个部分&#xff1a;模态框页面&#xff08;头部和底部&#xff09;和form页面&#xff08;操作按钮&#xff09; 2、点击回复按钮&#xff0c;要将发件人信息带到模态框页面&#xff0c;给定默认值且禁止收件人下拉选择&#xff08;多个邮箱&#xff…

OpenGL精简案例一

文章目录 案例一 绘制点线面定义Renderer顶点着色器片段着色器内置的特殊变量 应用场景工具ShaderHelper工具 TextResourceReader效果图如下 结论 案例一 绘制点线面 定义Renderer import android.content.Context; import android.opengl.GLES20; import android.opengl.GLSu…

Quasi-eccentricity Error Modeling and Compensation in Vision Metrology

论文&#xff1a;Quasi-eccentricity Error Modeling and Compensation in Vision Metrology 中文&#xff1a;视觉计量中准偏心误差建模与补偿 论文地址&#xff1a;Sci-Hub | Quasi-eccentricity error modeling and compensation in vision metrology. Measurement Scienc…

ATA-L系列水声功率放大器——应用场景介绍

ATA-L系列是一款宽频带能输出较大功率的单通道放大器。最大输出1200Vrms电压&#xff0c;6500VA功率&#xff0c;可驱动0~100%的阻性或非阻性负载&#xff0c;客户可根据测试需求灵活调节。 图&#xff1a;ATA-L系列水声功率放大器 国产品牌安泰电子自主研发的ATA-L系列水声功率…

将 Llama2 中文模型接入 FastGPT,再将 FastGPT 接入任意 GPT 套壳应用,真刺激!

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&#xff01; Llama2 是Facebook 母公司 Meta 发布的开源可商用大模型&#xff0c;国内的…

安防视频监控/视频集中存储/云存储平台EasyCVR平台无法取消共享通道该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度…

〔019〕Stable Diffusion 之 单图中绘制多人分区域写提示词 篇

✨ 目录 &#x1f388; 下载区域绘制插件&#x1f388; 区域绘制使用&#x1f388; 参数讲解和基础使用&#x1f388; Lora 自组&#x1f388; Lora 自组的使用&#x1f388; 分区扩散&#x1f388; 分区域提示 &#x1f388; 下载区域绘制插件 在绘制图片时&#xff0c;经常绘…

服务器数据恢复-vmware ESXI虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 从物理机迁移一台虚拟机到ESXI&#xff0c;迁移后做了一个快照。该虚拟机上部署了一个SQLServer数据库&#xff0c;存放了5年左右的数据。ESXI上有数十台虚拟机&#xff0c;EXSI连接了一台EVA存储&#xff0c;所有的虚拟机都在EVA存储上。 服务…

问道管理:2023股票印花税是多少钱?2023印花税新规?

在a股市场上&#xff0c;投资者交易股票需求交纳必定的佣钱费用、过户费用以及印花税&#xff0c;其间印花税率和过户费率是固定的&#xff0c;而佣钱费率不同的证券公司有所不同&#xff0c;那么&#xff0c;2023股票印花税是多少钱&#xff1f;2023印花税新规&#xff1f;下面…

【设计模式】Head First 设计模式——桥模式 C++实现

设计模式最大的作用就是在变化和稳定中间寻找隔离点&#xff0c;然后分离它们&#xff0c;从而管理变化。将变化像小兔子一样关到笼子里&#xff0c;让它在笼子里随便跳&#xff0c;而不至于跳出来把你整个房间给污染掉。 设计思想 桥模式。将抽象部分(业务功能)与实现部分(平…

vue项目使用svg实现一个物体沿着线条实时运动;svg图像放大缩小;svg中的文字居中显示

效果如上 html部分 <svg width"500px" height"500px" viewBox"0 0 400 400"><!-- 绘制连线 --><template v-for"(point, index) in points"><line :x1"point.x" :y1"point.y" :x2"in…

联邦学习FedAvg-基于去中心化数据的深度网络高效通信学习

随着计算机算力的提升&#xff0c;机器学习作为海量数据的分析处理技术&#xff0c;已经广泛服务于人类社会。 然而&#xff0c;机器学习技术的发展过程中面临两大挑战&#xff1a;一是数据安全难以得到保障&#xff0c;隐私泄露问题亟待解决&#xff1b;二是网络安全隔离和行业…

【HCIP】18.防火墙

区域隔离&#xff0c;以防火墙的接口为中心定义区域&#xff0c;在防火墙中不同区域互访使用策略来进行控制 NGFW&#xff0c;下一代防火墙&#xff0c;除了是否对他通过进行判断&#xff0c;也可以对安全进行判断&#xff08;例如是否是病毒&#xff0c;DDOS攻击&#xff09;…