基于Echarts的可视化项目

整体的效果

在这里插入图片描述

概览区域

在这里插入图片描述

 <!-- 概览区域模块制作 -->
      <div class="panel overview">
        <div class="inner">
          <ul>
            <li>
              <h4>2190</h4>
              <span>
                <i class="icon-dot"></i>
                设备总数
              </span>
            </li>
            <li class="item">
              <h4>190</h4>
              <span>
                <i class="icon-dot" style="color: #6acca3"></i>
                季度新增
              </span>
            </li>
            <li>
              <h4>3,001</h4>
              <span>
                <i class="icon-dot" style="color: #6acca3"></i>
                运营设备
              </span>
            </li>
            <li>
              <h4>108</h4>
              <span>
                <i class="icon-dot" style="color: #ed3f35"></i>
                异常设备
              </span>
            </li>
          </ul>
        </div>
      </div>

公共样式设置

/*清除元素默认的内外边距  */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/*让所有斜体 不倾斜*/
em,
i {
  font-style: normal;
}
/*去掉列表前面的小点*/
li {
  list-style: none;
}
/*图片没有边框   去掉图片底侧的空白缝隙*/
img {
  border: 0; /*ie6*/
  vertical-align: middle;
}
/*让button 按钮 变成小手*/
button {
  cursor: pointer;
}
/*取消链接的下划线*/
a {
  color: #666;
  text-decoration: none;
}

a:hover {
  color: #e33333;
}
h4 {
  font-weight: 400;
}
body {
  background: url(../images/bg.jpg) no-repeat 0 0 / cover;
  /* background-size: cover; */
}
/* // 实现rem适配 */
@media screen and (max-width: 1024px) {
  html {
    font-size: 42.66px !important;
  }
}

@media screen and (min-width: 1920px) {
  html {
    font-size: 80px !important;
  }
}

.viewport {
  display: flex;
  min-width: 1024px;
  max-width: 1920px;
  margin: 0 auto;
  padding: 1.625rem 0.25rem 0;
  background: url(../images/logo.png) no-repeat 0 0 / contain;
  min-height: 780px;
}
.viewport .column {
  flex: 3;
  /* background-color: pink; */
}
.viewport .column:nth-child(2) {
  flex: 4;
  margin: 0.4rem 0.25rem 0;
}
/* 公共面板样式  */
.panel {
  position: relative;
  border: 15px solid transparent;
  border-width: .6375rem 0.475rem 0.25rem 1.65rem;
  border-image-source: url(../images/border.png);
  border-image-slice: 51 38 20 132;
  margin-bottom: 0.25rem;
}
.inner {
  position: absolute;
  top: -0.6375rem;
  left: -1.65rem;
  right: -0.475rem;
  bottom: -0.25rem;
  padding: 0.3rem 0.45rem;
  /* background-color: red; */
}
.panel h3 {
  font-size: 0.25rem;
  color: #fff;
  font-weight: 400;
}
/* 概览区域模块制作 */
 .overview {
  height: 1.375rem;
}
.overview ul {
  display: flex;
  justify-content: space-between;
}

.overview ul li h4 {
  font-size: .35rem;
  color:#fff;
  margin: 0 0 .1rem .06rem;
}

.overview ul li span {
  font-size: .2rem;
  color:#4c9bfd;
}

监控区域

在这里插入图片描述

<!-- 监控区域模块制作 -->
      <div class="panel monitor">
        <div class="inner">
          <div class="tabs">
            <a href="javascript:;" class="active">故障设备监控</a>
            <a href="javascript:;" >异常设备监控</a>
          </div>
          <div class="content" style="display:block">
            <div class="head">
              <span class="col">故障时间</span>
              <span class="col">设备地址</span>
              <span class="col">异常代码</span>
            </div>
            <div class="marquee-view">
              <div class="marquee">
                <div class="row">
                  <span class="col">20180701</span>
                  <span class="col">11北京市昌平西路金燕龙写字楼</span>
                  <span class="col">1000001</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190601</span>
                  <span class="col">北京市昌平区城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190704</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000003</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20180701</span>
                  <span class="col">北京市昌平区建路金燕龙写字楼</span>
                  <span class="col">1000004</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190701</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000005</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190701</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000006</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190701</span>
                  <span class="col">北京市昌平区建西路金燕龙写字楼</span>
                  <span class="col">1000007</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190701</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000008</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190701</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000009</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190710</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000010</span>
                  <span class="icon-dot"></span>
                </div>
              </div>
            </div>
          </div>
          <div class="content">
            <div class="head">
              <span class="col">异常时间</span>
              <span class="col">设备地址</span>
              <span class="col">异常代码</span>
            </div>
            <div class="marquee-view">
              <div class="marquee">
                <div class="row">
                  <span class="col">20190701</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000001</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190701</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190703</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190704</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190705</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190706</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190707</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190708</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190709</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
                <div class="row">
                  <span class="col">20190710</span>
                  <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                  <span class="col">1000002</span>
                  <span class="icon-dot"></span>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
/* 监控区域模块制作 */
.monitor {
  height: 6rem;
}
.monitor .inner {
  padding: 0.3rem 0;
  display: flex;
  flex-direction: column;
}
.monitor .tabs {
  padding: 0 0.45rem;
  margin-bottom: 0.225rem;
  display: flex;
}
.monitor .tabs a {
  color: #1950c4;
  font-size: 0.225rem;
  padding: 0 0.3375rem;
}
.monitor .tabs a:first-child {
  padding-left: 0;
  border-right: 0.025rem solid #00f2f1;
}
.monitor .tabs a.active {
  color: #fff;
}
.monitor .content {
  flex: 1;
  position: relative;
  display: none;
}
.monitor .head {
  display: flex;
  justify-content: space-between;
  line-height: 1.05;
  background-color: rgba(255, 255, 255, 0.1);
  padding: 0.15rem 0.45rem;
  color: #68d8fe;
  font-size: 0.175rem;
}
.monitor .marquee-view {
  position: absolute;
  top: 0.5rem;
  bottom: 0;
  width: 100%;
  overflow: hidden;
}

.monitor .row {
  display: flex;
  justify-content: space-between;
  line-height: 1.05;
  font-size: 0.15rem;
  color: #61a8ff;
  padding: 0.15rem 0.45rem;
}
.monitor .row .icon-dot {
  position: absolute;
  left: 0.2rem;
  opacity: 0;
}
.monitor .row:hover {
  background-color: rgba(255, 255, 255, 0.1);
  color: #68d8fe;
}
.monitor .row:hover .icon-dot {
  opacity: 1;
}
.monitor .col:first-child {
  width: 1rem;
}
.monitor .col:nth-child(2) {
  width: 2.5rem;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
.monitor .col:nth-child(3) {
  width: 1rem;
}

.marquee-view .marquee {
  animation:move 15s linear infinite;
}

@keyframes move {
  0% {
  }
  100%{
    transform:translateY(-50%);
  }
}

.marquee-view .marquee:hover {
  animation-play-state:paused;
}

// 监控区域模块制作
(function(){
  $(".monitor .tabs").on("click","a",function(){
    $(this)
    .addClass("active")
    .siblings("a")
    .removeClass("active");

    // console.log($(this).index())
    // 选取对应索引号的content
    $(".monitor .content")
    .eq($(this).index())
    .show()
    .siblings(".content")
    .hide();
  });
  $(".marquee-view .marquee").each(function(){
    // console.log($(this))
    var rows = $(this)
    .children()
    .clone();
    $(this).append(rows);
  });
})();

点位模块

在这里插入图片描述

<!-- 点位模块制作 -->
      <div class="point panel">
        <div class="inner">
          <h3>点位分布统计</h3>
          <div class="chart">
            <div class="pie"></div>
            <div class="data">
              <div class="item">
                <h4>320,11</h4>
                <span>
                  <i class="icon-dot" style="color: #ed3f35"></i>
                  点位总数
                </span>
              </div>
              <div class="item">
                <h4>418</h4>
                <span>
                  <i class="icon-dot" style="color: #eacf19"></i>
                  本月新增
                </span>
              </div>
            </div>
          </div>
        </div>
      </div>
/* 点位模块制作 */
.point {
  height: 4.25rem;
}
.point .chart {
  display: flex;
  margin-top: 0.3rem;
  justify-content: space-between;
}
.point .pie {
  width: 3.9rem;
  height: 3rem;
  margin-left: -0.125rem;
  /* background-color: pink; */
}
.point .data {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 2.1rem;
  padding: .45rem .375rem;
  box-sizing: border-box;
  background-image: url(../images/rect.png);
  background-size: cover;
}
.point h4 {
  margin-bottom: 0.15rem;
  font-size: .35rem;
  color: #fff;
}
.point span {
  display: block;
  color: #4c9bfd;
  font-size: .2rem;
}
//点位分布统计模块
(function(){
  //实例化对象
  var myChart = echarts.init(document.
    querySelector(".pie"));
  // 指定配置项和对象
  var option = {
    tooltip: {
      trigger: "item",
      formatter: "{a} <br/>{b} : {c} ({d}%)"
    },
    // 注意颜色写的位置
    color: [
      "#006cff",
      "#60cda0",
      "#ed8884",
      "#ff9f7f",
      "#0096ff",
      "#9fe6b8",
      "#32c5e9",
      "#1d9dff"
    ],
    series: [
      {
        name: "点位统计",
        type: "pie",
        // 如果radius是百分比则必须加引号
        radius: ["10%", "70%"],
        center: ["50%", "50%"],
        roseType: "radius",
        data: [
          { value: 20, name: "云南" },
          { value: 26, name: "北京" },
          { value: 24, name: "山东" },
          { value: 25, name: "河北" },
          { value: 20, name: "江苏" },
          { value: 25, name: "浙江" },
          { value: 30, name: "四川" },
          { value: 42, name: "湖北" }
        ],
        // 修饰饼形图文字相关的样式 label对象
        label: {
          fontSize: 10
        },
        // 修饰引导线样式
        labelLine: {
          // 连接到图形的线长度
          length: 6,
          // 连接到文字的线长度
          length2: 8
        }
      }
    ]
  };
  // 配置项和数据给我们的实例化对象
  myChart.setOption(option);

  // 当我们的浏览器缩放的时候,图表也等比例缩放
  window.addEventListener('resize',function(){
    // 让我们的图表调用resize这个方法
    myChart.resize();
  })
})();

用户模块

在这里插入图片描述

<!-- 用户模块 -->
      <div class="users panel">
        <div class="inner">
          <h3>全国用户总量统计</h3>
          <div class="chart">
            <div class="bar"></div>
            <div class="data">
              <div class="item">
                <h4>120,899</h4>
                <span>
                  <i class="icon-dot" style="color: #ed3f35"></i>
                  用户总量
                </span>
              </div>
              <div class="item">
                <h4>248</h4>
                <span>
                  <i class="icon-dot" style="color: #eacf19"></i>
                  本月新增
                </span>
              </div>
            </div>
          </div>
        </div>
      </div>
/* 用户模块 */
.users {
  height: 4.25rem;
  display: flex;
}
.users .chart {
  display: flex;
  margin-top: .3rem;
}
.users .bar {
  width: 7.35rem;
  height: 3rem;
  /* background-color: pink; */
}
.users .data {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 2.1rem;
  padding: .45rem .375rem;
  box-sizing: border-box;
  background-image: url(../images/rect.png);
  background-size: cover;
}
.users h4 {
  margin-bottom: .15rem;
  font-size: .35rem;
  color: #fff;
}
.users span {
  display: block;
  color: #4c9bfd;
  font-size: 0.2rem;
}
(function() {
  var item = {
    name:'',
    value:1200,
    // 修改当前柱子的样式
    itemStyle: {
      color:"#254065"
    },
    // 鼠标放到柱子上面,不会高亮显示
    emphasis: {
      itemStyle: {
        color:"#254065"
      }
    },
    // 鼠标经过柱子不显示提示框组件
    tooltip: {
      extraCssText:"opacity:0"
    }
  };
  // 1.实例化对象
  var myChart = echarts.init(document.querySelector(".bar"));
  // 2.指定配置和数据
  var option = {
    // 修改线性渐变色方式 1
    color: new echarts.graphic.LinearGradient(
      // (x1,y2) 点到点 (x2,y2) 之间进行渐变
      0, 0, 0, 1,
      [
          { offset: 0, color: '#00fffb' }, // 0 起始颜色
          { offset: 1, color: '#0061ce' }  // 1 结束颜色
    ]
    ),
    // 工具提示
    tooltip: {
      // 触发类型  经过轴触发axis  经过轴触发item
      trigger: 'item',
      // 轴触发提示才有效
      // axisPointer: {    
      //   // 默认为直线,可选为:'line' 线效果 | 'shadow' 阴影效果       
      //   type: 'shadow'        
      // }
    },
    // 图表边界控制
    grid: {
      // 距离 上右下左 的距离
      left: '0%',
      right: '3%',
      bottom: '3%',
      top:'3%',
      // 是否包含文本
      containLabel: true,
      show:true,
      borderColor:'rgba(0,240,255,0.3)'
    },
    // 控制x轴
    xAxis: [
      {
        // 使用类目,必须有data属性
        type: "category",
        // 使用 data 中的数据设为刻度文字
        // data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
        data: [
          "上海",
          "广州",
          "北京",
          "深圳",
          "合肥",
          "",
          "......",
          "",
          "杭州",
          "厦门",
          "济南",
          "成都",
          "重庆"
        ],
        // 刻度设置
        axisTick: {
          // true意思:图形在刻度中间
          // false意思:图形在刻度之间
          alignWithLabel: false,
          // 把X轴的刻度隐藏
          show:false
        },
        axisLabel: {
          //代表显示所有x轴标签显示
          interval:0,
          color:"#4c9bfd"
        },
        // x轴这条线的颜色样式
        axisLine: {
          lineStyle:{
            color:'rgba(0,240,255,0.3)'
          }
        }
      }
    ],
    // 控制y轴
    yAxis: [
      {
        // 使用数据的值设为刻度文字
        type: 'value',
        axisTick: {
          // true意思:图形在刻度中间
          // false意思:图形在刻度之间
          alignWithLabel: false,
          show:false
        },
        axisLabel: {
          color:"#4c9bfd"
        },
        // x轴这条线的颜色样式
        axisLine: {
          lineStyle:{
            color:'rgba(0,240,255,0.3)'
          }
        },
        // y轴的分割线修改颜色
        splitLine:{
          lineStyle: {
            color:'rgba(0,240,255,0.3)',
          }
        }
      }
    ],
    // 控制x轴
    series: [
      {
        // 图表数据名称
        name: '用户统计',
        // 图表类型
        type: 'bar',
        // 柱子宽度
        barWidth: '60%',
        // 数据
        // data:[100,200,300,400]
        data: [
          2100,
          1900,
          1700,
          1560,
          1400,
          item,
          item,
          item,
          900,
          750,
          600,
          480,
          240
        ],
      }
    ]
  };
  // 3.把配置给实例对象
  myChart.setOption(option);
  window.addEventListener("resize",function(){
    myChart.resize()
  })
})();

订单模块

在这里插入图片描述

 <!-- 订单 -->
      <div class="order panel">
        <div class="inner">
          <!-- 筛选 -->
          <div class="filter">
            <a href="javascript:;"  class="active">365天</a>
            <a href="javascript:;" >90天</a>
            <a href="javascript:;" >30天</a>
            <a href="javascript:;" >24小时</a>
          </div>
          <!-- 数据 -->
          <div class="data">
            <div class="item">
              <h4>20,301,987</h4>
              <span>
                <i class="icon-dot" style="color: #ed3f35;"></i>
                订单量
              </span>
            </div>
            <div class="item">
              <h4>99834</h4>
              <span>
                <i class="icon-dot" style="color: #eacf19;"></i>
                销售额(万元)
              </span>
            </div>
          </div>
        </div>
      </div>
.order {
  height: 1.875rem;
}
.order .filter {
  display: flex;
}
.order .filter a {
  display: block;
  height: 0.225rem;
  line-height: 1;
  padding: 0 0.225rem;
  color: #1950c4;
  font-size: 0.225rem;
  border-right: 0.025rem solid #00f2f1;
}
.order .filter a:first-child {
  padding-left: 0;
}
.order .filter a:last-child {
  border-right: none;
}
.order .filter a.active {
  color: #fff;
  font-size: 0.25rem;
}
.order .data {
  display: flex;
  margin-top: 0.25rem;
}
.order .item {
  width: 50%;
}
.order h4 {
  font-size: 0.35rem;
  color: #fff;
  margin-bottom: 0.125rem;
}
.order span {
  display: block;
  color: #4c9bfd;
  font-size: 0.2rem;
}
// 订单功能
(function(){
  // 1. 准备数据
  var data = {
    day365: { orders: '20,301,987', amount: '99834' },
    day90: { orders: '301,987', amount: '9834' },
    day30: { orders: '1,987', amount: '3834' },
    day1: { orders: '987', amount: '834' }
  }
  // 获取显示 订单数量 容器
  var $h4Orders = $('.order h4:eq(0)')
  // 获取显示 金额数量 容器
  var $h4Amount = $('.order h4:eq(1)')
  $('.order').on('click','.filter a',function(){
    // 2. 点击切换激活样式
    $(this).addClass('active').siblings().removeClass('active')
    // 3. 点击切换数据
    var currdata = data[this.dataset.key]
    $h4Orders.html(currdata.orders)
    $h4Amount.html(currdata.amount)
  })
  // 4. 开启定时器切换数据
  var index = 0
  var $allTab = $('.order .filter a')
  setInterval(function(){
    index ++ 
    if (index >= 4) index = 0
    $allTab.eq(index).click()
  },5000)
})();

销售额统计模块

在这里插入图片描述

<!-- 销售额 -->
      <div class="sales panel">
        <div class="inner">
          <div class="caption">
            <h3>销售额统计</h3>
            <a href="javascript:;" class="active" data-type="year"></a>
            <a href="javascript:;" data-type="quarter"></a>
            <a href="javascript:;" data-type="month"></a>
            <a href="javascript:;" data-type="week"></a>
          </div>
          <div class="chart">
            <div class="label">单位:万</div>
            <div class="line"></div>
          </div>
        </div>
      </div>
.sales {
  height: 3.1rem;
}
.sales .caption {
  display: flex;
  line-height: 1;
}
.sales h3 {
  height: 0.225rem;
  padding-right: 0.225rem;
  border-right: 0.025rem solid #00f2f1;
}
.sales a {
  padding: 0.05rem;
  font-size: 0.2rem;
  margin: -0.0375rem 0 0 0.2625rem;
  border-radius: 0.0375rem;
  color: #0bace6;
}
.sales a.active {
  background-color: #4c9bfd;
  color: #fff;
}
.sales .inner {
  display: flex;
  flex-direction: column;
}
.sales .chart {
  flex: 1;
  padding-top: 0.1875rem;
  position: relative;
}
.sales .label {
  position: absolute;
  left: 0.525rem;
  top: 0.225rem;
  color: #4996f5;
  font-size: 0.175rem;
}
.sales .line {
  width: 100%;
  height: 100%;
  /* background-color: pink; */
}

//销售统计模块
(function(){
  //准备数据
  var data = {
    year: [
      [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],
      [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]
    ],
    quarter: [
      [23, 75, 12, 97, 21, 67, 98, 21, 43, 64, 76, 38],
      [43, 31, 65, 23, 78, 21, 82, 64, 43, 60, 19, 34]
    ],
    month: [
      [34, 87, 32, 76, 98, 12, 32, 87, 39, 36, 29, 36],
      [56, 43, 98, 21, 56, 87, 43, 12, 43, 54, 12, 98]
    ],
    week: [
      [43, 73, 62, 54, 91, 54, 84, 43, 86, 43, 54, 53],
      [32, 54, 34, 87, 32, 45, 62, 68, 93, 54, 54, 24]
    ]
  }
  // 1.实例化对象
  var myChart =echarts.init(document.querySelector(".line"));
  // 2. 指定配置和数据
  var option = {
    color:['#00f2f1','#ed3f35'],
    tooltip: {
      //通过坐标轴来触发
      trigger: "axis"
    },
    legend: {
      //距离容器10%
      right:"19%",
      //修饰图例颜色
      textStyle: {
        color:"#4c9bfd",
      },
      // 如果series里面设置了name,此时图例组件中的data可以省略
      // data: ["预期销售额", "实际销售额"]
    },
    grid: {
      top:"20%",
      left: "3%",
      right: "4%",
      bottom: "3%",
      show:true,
      borderColor:"#012f4a",
      containLabel: true
    },

    xAxis: {
      type: "category",
      //去除轴内间距
      boundaryGap: false,
      data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
      // 去除刻度
      axisTick: {
        show:false,
      },

      //修饰刻度标签颜色
      axisLabel: {
        interval:0,
        color:"#4c9bfd",
      },

      // 去除X轴坐标颜色
      axisLine: {
        show:false,
      }
    },
    yAxis: {
      type: "value",
      // 去除刻度
      axisTick: {
        show:false,
      },

      //修饰刻度标签颜色
      axisLabel: {
        interval:0,
        color:"#4c9bfd",
      },

      // 去除Y轴分割线的颜色
      splitLine: {
        lineStyle:{
          color:"012f4a"
        }
      }
    },
    series: [
      
      {
        name: "预期销售额",
        type: "line",
        stack: "总量",
        //是否让线条圆滑显示
        smooth:true,
        data: data.year[0]
      },
      {
        name: "实际销售额",
        type: "line",
        stack: "总量",
        smooth:true,
        data: data.year[1]
      }
    ]
  };
  // 3.将配置和数据给实例化对象
  myChart.setOption(option);
  window.addEventListener("resize",function(){
    myChart.resize()
  })

  //4.tab切换效果制作
  //2.点击切换效果
  $(".sales .caption").on("click","a",function(){
    //点击当前a 高亮显示 调用active
    index = $(this).index()-1;
    $(this)
      .addClass("active")
      .siblings("a")
      .removeClass("active")
      //拿到当前A的 自定义属性值
      // console.log(this.dataset.type);
      //根据拿到的值,去找数据
      // console.log(data.year)
      // console.log(data["year"])
      // console.log(data[this.dataset.type])
      var arr = data[this.dataset.type];
      // console.log(arr);
      //根据拿到的数据,重新渲染series里面的data值
      option.series[0].data = arr[0];
      option.series[1].data = arr[1];
      // 重新把配置好的数据给实例化对象
      myChart.setOption(option);
  });
  // 开启定时器每个3S,自动让a触发点击事件即可
  var as = $(".sales .caption a");
  var index = 0;
  var timer = setInterval(function() {
    index++;
    if(index>=4) index=0;
    as.eq(index).click();
  },1000);
  // 鼠标经过sales,关闭定时器,离开开启定时器
  $('.sales').hover(function() {
    clearInterval(timer);
  },function() {
    clearInterval(timer);
    timer = setInterval(function() {
      index++;
      if(index>=4) index=0;
      as.eq(index).click();
    },1000);
  })
  
})();

渠道分布与季度模块

在这里插入图片描述

 <!-- 渠道 季度 -->
     <div class="wrap">
      <div class="channel panel">
        <div class="inner">
          <h3>渠道分布</h3>
          <div class="data">
            <div class="radar"></div>
          </div>
        </div>
      </div>
      <div class="quarter panel">
        <div class="inner">
          <h3>一季度销售进度</h3>
          <div class="chart">
            <div class="box">
              <div class="gauge"></div>
              <div class="label">75<small> %</small></div>
            </div>
            <div class="data">
              <div class="item">
                <h4>1,321</h4>
                <span>
                  <i class="icon-dot" style="color: #6acca3"></i>
                  销售额(万元)
                </span>
              </div>
              <div class="item">
                <h4>150%</h4>
                <span>
                  <i class="icon-dot" style="color: #ed3f35"></i>
                  同比增长
                </span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
/* 渠道区块 */
.wrap {
  display: flex;
}
.channel,
.quarter {
  flex: 1;
  height: 2.9rem;
}
.channel {
  margin-right: 0.25rem;
}
.channel .data {
  overflow: hidden;
}
.channel .data .radar {
  height: 2.1rem;
  width: 100%;
  /* background-color: pink; */
}
.channel h4 {
  color: #fff;
  font-size: 0.4rem;
  margin-bottom: 0.0625rem;
}
.channel small {
  font-size: 50%;
}
.channel span {
  display: block;
  color: #4c9bfd;
  font-size: 0.175rem;
}
/* 季度区块 */
.quarter .inner {
  display: flex;
  flex-direction: column;
  margin: 0 -0.075rem;
}
.quarter .chart {
  flex: 1;
  padding-top: 0.225rem;
}
.quarter .box {
  position: relative;
}
.quarter .label {
  transform: translate(-50%, -30%);
  color: #fff;
  font-size: 0.375rem;
  position: absolute;
  left: 50%;
  top: 50%;
}
.quarter .label small {
  font-size: 50%;
}
.quarter .gauge {
  height: 1.05rem;
}
.quarter .data {
  display: flex;
  justify-content: space-between;
}
.quarter .item {
  width: 50%;
}
.quarter h4 {
  color: #fff;
  font-size: 0.3rem;
  margin-bottom: 0.125rem;
}
.quarter span {
  display: block;
  width: 100%;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  color: #4c9bfd;
  font-size: 0.175rem;
}
//渠道分布模块
(function() {
  var myChart = echarts.init(document.querySelector('.radar'));
   // 2.指定配置
  //  var dataBJ = [[155, 39, 156, 0.46, 88, 6, 100]];
  //  var lineStyle = {
  //    normal: {
  //      width: 1,
  //      opacity: 0.5
  //    }
  //  };
   var option = {
    //  backgroundColor: "#161627",
    tooltip: {
      show:true,
      position:["20%","5%"]
    },
     radar: {
       indicator: [
        { name: '机场', max: 100 },
        { name: '商场', max: 100 },
        { name: '火车站', max: 100 },
        { name: '汽车站', max: 100 },
        { name: '地铁', max: 100 }
       ],
       //修改雷达图的大小
       radius:"60%",
       shape: "circle",
       //指示器轴的分割段数(分割的圆圈个数)
       splitNumber: 4,
       name: {
        //修饰雷达图文字的颜色
         textStyle: {
           color: "#4c9bfd"
         }
       },
      //  分割圆圈线条的样式
       splitLine: {
         lineStyle: {
           color:"rgba(255,255,255,0.5)"
         }
       },
       splitArea: {
         show: false
       },
       //坐标轴的线,修改为白色半透明
       axisLine: {
         lineStyle: {
           color: "rgba(255,255,255,0.5)"
         }
       }
     },
     series: [
       {
         name: "北京",
         type: "radar",
         //填充区域的线条颜色
         lineStyle: {
             normal: {
              color:"#fff",
               width: 1,
               opacity: 0.5
             }
           },
         data: [[155, 39, 156, 0.46, 88, 6, 100]],
         //设置图形标记(小圆点)
         symbol: "circle",
        //  设置小圆点大小
         symbolSize:5,
         //设置小圆点颜色
         itemStyle: {
           color: "#fff"
         },
         //让小圆点显示数据
         label: {
          show:true,
          fontSize:10
         },
         //修饰区域填充的背景颜色
         areaStyle: {
          color:"rgba(238,197,102,0.6)",
          //  opacity: 0.1
         }
       }
     ]
   };
   // 3.把配置和数据给对象
   myChart.setOption(option);
   window.addEventListener("resize",function(){
    myChart.resize()
  })
})();

//半圆形做法:把一个饼图分成三段,下面一段颜色设为透明即可
// 销售模块 饼形图 半圆形 设置方式
(function() {
  // 1. 实例化对象
  var myChart = echarts.init(document.querySelector(".gauge"));
  // 2. 指定数据和配置
  var option = {
    series: [
      {
        name: "销售进度",
        type: "pie",
        //放大图形,第一个参数是内部圆的半径,第二个参数是外部圆的半径
        radius: ["130%", "150%"],
        //移动下位置,套住50%的文字
        center:["48%","80%"],
        //是否启用防止标签重叠策略
        // avoidLabelOverlap: false,
        labelLine: {
          normal: {
            show: false
          }
        },
        //饼形图的起始角度为180,不是旋转角度
        startAngle:180,
        //鼠标经过不需要放大偏移图形
        hoverOffset:0,
        data: 
        [
          { value: 100,
            itemStyle:{
              // 修改线性渐变色方式 1
              color: new echarts.graphic.LinearGradient(
                // (x1,y2) 点到点 (x2,y2) 之间进行渐变
                0, 0, 0, 1,
                [
                    { offset: 0, color: '#00fffb' }, // 0 起始颜色
                    { offset: 1, color: '#0061ce' }  // 1 结束颜色
                ]
              ),
            }
          }, 
          { value: 100,
            itemStyle:{
              color:"#12274d"
            }
          }, 
          { value: 200,
            itemStyle:{
              color:"transparent"
            }
          }
        ]
      }
    ]
  };
  // 3. 把数据和配置给实例对象
  myChart.setOption(option);
  window.addEventListener("resize",function(){
    myChart.resize()
  })
})();

排行榜模块

在这里插入图片描述

<!-- 排行榜 -->
    <div class="top panel">
      <div class="inner">
        <div class="all">
          <h3>全国热榜</h3>
          <ul>
            <li>
              <i class="icon-cup1" style="color: #d93f36;"></i>
              可爱多
            </li>
            <li>
              <i class="icon-cup2" style="color: #68d8fe;"></i>
              娃哈啥
            </li>
            <li>
              <i class="icon-cup3" style="color: #4c9bfd;"></i>
              喜之郎
            </li>
          </ul>
        </div>
        <div class="province">
          <h3>各省热销 <i class="date">// 近30日 //</i></h3>
          <div class="data">
            <ul class="sup">
             <!--  <li>
                <span>北京</span>
                <span>25,179 <s class="icon-up"></s></span>
              </li>
              <li>
                <span>河北</span>
                <span>23,252 <s class="icon-down"></s></span>
              </li>
              <li>
                <span>上海</span>
                <span>20,760 <s class="icon-up"></s></span>
              </li>
              <li>
                <span>江苏</span>
                <span>23,252 <s class="icon-down"></s></span>
              </li>
              <li>
                <span>山东</span>
                <span>20,760 <s class="icon-up"></s></span>
              </li> -->
            </ul>
            <ul class="sub">
              <!-- <li><span></span><span> <s class="icon-up"></s></span></li> -->
            </ul>
          </div>
        </div>
      </div>
    </div>
/* 排行榜 */
.top {
  height: 3.5rem;
}
.top .inner {
  display: flex;
}
.top .all {
  display: flex;
  flex-direction: column;
  width: 2.1rem;
  color: #4c9bfd;
  font-size: 0.175rem;
  vertical-align: middle;
}
.top .all ul {
  padding-left: 0.15rem;
  margin-top: 0.15rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
}
.top .all li {
  overflow: hidden;
}
.top .all [class^="icon-"] {
  font-size: 0.45rem;
  vertical-align: middle;
  margin-right: 0.15rem;
}
.top .province {
  flex: 1;
  display: flex;
  flex-direction: column;
  color: #fff;
}
.top .province i {
  padding: 0 0.15rem;
  margin-top: 0.0625rem;
  float: right;
  font-style: normal;
  font-size: 0.175rem;
  color: #0bace6;
}
.top .province s {
  display: inline-block;
  transform: scale(0.8);
  text-decoration: none;
}
.top .province .icon-up {
  color: #dc3c33;
}
.top .province .icon-down {
  color: #36be90;
}
.top .province .data {
  flex: 1;
  display: flex;
  margin-top: 0.175rem;
}
.top .province ul {
  flex: 1;
  line-height: 1;
  margin-bottom: 0.175rem;
}
.top .province ul li {
  display: flex;
  justify-content: space-between;
}
.top .province ul span {
  display: block;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.top .province ul.sup {
  font-size: 0.175rem;
}
.top .province ul.sup li {
  color: #4995f4;
  padding: 0.15rem;
}
.top .province ul.sup li.active {
  color: #a3c6f2;
  background-color: rgba(10, 67, 188, 0.2);
}
.top .province ul.sub {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  font-size: 0.15rem;
  background-color: rgba(10, 67, 188, 0.2);
}
.top .province ul.sub li {
  color: #52ffff;
  padding: 0.125rem 0.175rem;
}
.clock {
  position: absolute;
  top: -0.45rem;
  right: 0.5rem;
  font-size: 0.25rem;
  color: #0bace6;
}
.clock i {
  margin-right: 5px;
  font-size: 0.25rem;
}
@media screen and (max-width: 1600px) {
  .top span {
    transform: scale(0.9);
  }
  .top .province ul.sup li {
    padding: 0.125rem 0.15rem;
  }
  .top .province ul.sub li {
    padding: 0.0625rem 0.15rem;
  }
  .quarter span {
    transform: scale(0.9);
  }
}
//全国热榜模块
(function() {
  // 准备数据
  var hotData = [
    {
      city: '北京',  // 城市
      sales: '25, 179',  // 销售额
      flag: true, //  上升还是下降
      brands: [   //  品牌种类数据
        { name: '可爱多', num: '9,086', flag: true },
        { name: '娃哈哈', num: '8,341', flag: true },
        { name: '喜之郎', num: '7,407', flag: false },
        { name: '八喜', num: '6,080', flag: false },
        { name: '小洋人', num: '6,724', flag: false },
        { name: '好多鱼', num: '2,170', flag: true },
      ]
    },
    {
      city: '河北',
      sales: '23,252',
      flag: false,
      brands: [
        { name: '可爱多', num: '3,457', flag: false },
        { name: '娃哈哈', num: '2,124', flag: true },
        { name: '喜之郎', num: '8,907', flag: false },
        { name: '八喜', num: '6,080', flag: true },
        { name: '小洋人', num: '1,724', flag: false },
        { name: '好多鱼', num: '1,170', flag: false },
      ]
    },
    {
      city: '上海',
      sales: '20,760',
      flag: true,
      brands: [
        { name: '可爱多', num: '2,345', flag: true },
        { name: '娃哈哈', num: '7,109', flag: true },
        { name: '喜之郎', num: '3,701', flag: false },
        { name: '八喜', num: '6,080', flag: false },
        { name: '小洋人', num: '2,724', flag: false },
        { name: '好多鱼', num: '2,998', flag: true },
      ]
    },
    {
      city: '江苏',
      sales: '23,252',
      flag: false,
      brands: [
        { name: '可爱多', num: '2,156', flag: false },
        { name: '娃哈哈', num: '2,456', flag: true },
        { name: '喜之郎', num: '9,737', flag: true },
        { name: '八喜', num: '2,080', flag: true },
        { name: '小洋人', num: '8,724', flag: true },
        { name: '好多鱼', num: '1,770', flag: false },
      ]
    },
     {
      city: '山东',
      sales: '20,760',
      flag: true,
      brands: [
        { name: '可爱多', num: '9,567', flag: true },
        { name: '娃哈哈', num: '2,345', flag: false },
        { name: '喜之郎', num: '9,037', flag: false },
        { name: '八喜', num: '1,080', flag: true },
        { name: '小洋人', num: '4,724', flag: false },
        { name: '好多鱼', num: '9,999', flag: true },
      ]
    }
  ]
  // 2.根据数据渲染各省热销sup模块内容
  // 遍历hotData对象
  var supHTML = ""
  $.each(hotData,function(index,item) {
    // console.log(item);
    supHTML += `<li>
    <span>${item.city}</span>
    <span>${item.sales}<s class=${item.flag? "icon-up" : "icon-down"}></s></span>
  </li>`;
  });
  $(".sup").html(supHTML);

  // 3.当鼠标进入tab的时候
  // 鼠标经过当前的li 要高亮显示(用到事件委托)
  $(".province .sup").on("mouseenter","li",function() {
    index = $(this).index();
    render($(this));
  });
  //声明一个函数,里面设置sup当前li高亮,还有对应的品牌对象渲染
  function render(that) {
    that
      .addClass("active")
      .siblings()
      .removeClass();

    // 拿到当前城市的品牌对象
    // console.log($(this).index());
    // 可以通过hotData[$(this).index()] 得到当前的城市
    // console.log(hotData[$(this).index()]);
    // 我们可以通过hotData[$(this).index()].brands 拿到的是城市对象的品牌种类
    // console.log(hotData[$(this).index()].brands);
    // 开始遍历品牌数组
    var subHTML = "";
    $.each(hotData[that.index()].brands,function(index,item){
      // 是对应城市的每一个品牌对象
      // console.log(item);
    subHTML += `<li><span>${item.name}</span><span> ${item.num}<s class=
    ${item.flag ? "icon-up" : "icon-down"}
    ></s></span></li>`;
    });
    // 把生成的6个小li字符串给 sub dom盒子
    $(".sub").html(subHTML);
  }
  //默认把第一个li处于鼠标经过状态
  var lis =$(".province .sup li");
  lis.eq(0).mouseenter();
  
  //开启定时器
  var index = 0;
  var timer = setInterval(function(){
    index++;
    if(index >=5) index = 0;
    // lis.eq(index).mouseenter();
    render(lis.eq(index));
  },2000);

  $(".province .sup").hover(
    //鼠标经过事件
    function(){
      clearInterval(timer);
    },
    // 鼠标离开事件
    function(){
      clearInterval(timer);
      timer = setInterval(function(){
        index++;
        if(index >=5) index = 0;
        // lis.eq(index).mouseenter();
        render(lis.eq(index));
      },2000);
    }
  );
})();

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 基于springboot+vue在线外卖点餐系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

深度学习的新进展:探索人工智能的未来

文章目录 &#x1f4d1;引言深度学习技术概述计算机视觉领域的深度应用自然语言处理的深度革命跨领域应用的深度拓展深度学习的挑战与未来展望结语 &#x1f4d1;引言 在科技日新月异的今天&#xff0c;深度学习作为人工智能领域的一颗璀璨明珠&#xff0c;正在引领着技术创新…

ElasticSearch分词器和相关性详解

目录 ES分词器详解 基本概念 分词发生时期 分词器的组成 切词器&#xff1a;Tokenizer 词项过滤器&#xff1a;Token Filter 停用词 同义词 字符过滤器&#xff1a;Character Filter HTML 标签过滤器&#xff1a;HTML Strip Character Filter 字符映射过滤器&#x…

linux系统zabbix监控配置电话告警

电话报警 睿象云官网操作zabbix-server主机操作睿象云操作zabbix-server的web页面操作 睿象云官网&#xff1a;https://www.aiops.com/ 睿象云官网操作 登录睿象云平台后点击智能告警平台 在集成栏选择监控工具选择zabbix 填写应用名称保存并获取key zabbix-server主机操…

php基础学习之文件包含

描述 在一个php脚本中&#xff0c;将另一个php文件包含进来&#xff0c;合作实现某种功能 这个描述看起来似乎和C/Java等语言的头文件/包有点类似&#xff0c;但本质是不一样的 打个比方&#xff1a; C/Java的头文件/包更像是一个工具箱&#xff0c;存放各种很完善的工具&#…

找不到目标和方向,怎么办?

现代社会里&#xff0c;许多人常见的症状&#xff0c;就是「空心病」。 什么是空心病呢&#xff1f;类似这样&#xff1a; 我知道要有目标&#xff0c;但我就是不知道想做什么&#xff0c;感觉对一切事物都提不起兴趣&#xff0c;没有动力&#xff0c;怎么办&#xff1f; 这个…

骑士遍历初级版

时间限制&#xff1a;1秒 内存限制&#xff1a;128M 题目描述 如图&#xff0c;从左下角A点出发&#xff0c;马只能向右走&#xff0c;根据马走日字的规则&#xff0c;究竟如何走才能到达右上角B点 输入描述 两个整数x、y&#xff0c;代表右上角B点的坐标&#xff0c…

AcWing 112. 雷达设备(区间贪心)

[题目概述] 假设海岸是一条无限长的直线&#xff0c;陆地位于海岸的一侧&#xff0c;海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上&#xff0c;且雷达的监测范围为 d&#xff0c;当小岛与某雷达的距离不超过 d 时&#xff0c;该小岛可以被雷…

Excel练习:日历

Excel练习&#xff1a;日历 ‍ 题目&#xff1a;制作日历 ‍ ​​ 用rows和columns函数计算日期单元格偏移量 一个公式填充所有日期单元格 ​​ ‍

FT2232调试记录(2)

FT2232调试记录 &#xff08;1&#xff09;获取当前连接的FTDI设备通道个数:&#xff08;2&#xff09;获取当前连接的设备通道的信息:&#xff08;3&#xff09;配置SPI的通道:&#xff08;4&#xff09;如何设置GPIO:&#xff08;5&#xff09;DEMO测试&#xff1a; FT2232调…

Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)

目录 Unity 工具之 UniWebView 内嵌网页/浏览器到应用中&#xff0c;并且根据UGUI大小放置&#xff08;简单适配UGUI&#xff09; 一、简单介绍 二、UniWebView 组件上的几个参数属性选项介绍 三、一些关键接口介绍 四、Transition 五、Memory Management&#xff08;内存…

OJ刷题:找出单身狗1,2【建议收藏点赞】

目录 1. 单身狗12. 单身狗2 1. 单身狗1 代码实现&#xff1a; #include <stdio.h>int main() {int arr[] { 1,2,3,2,1 };int sz sizeof(arr) / sizeof(arr[0]);int i 0;int tmp 0;for (i 0; i < sz; i){tmp ^ arr[i];}printf("%d\n", tmp);return 0; …

微信小程序介绍、账号申请、开发者工具目录结构详解及小程序配置

目录 一、微信小程序介绍 1.什么是小程序&#xff1f; 2.小程序可以干什么&#xff1f; 3.微信小程序特点 二、账号申请 1.账号注册 2.测试号申请 三、安装开发工具 四、开发小程序 五、目录结构 JSON 配置 小程序配置 app.json 工具配置 project.config.json 页…

PHP毕业设计图片分享网站76t17

图片分享网站主要是为了提高工作人员的工作效率和更方便快捷的满足用户&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性&#xff0c;遵循开发的系统优化的原则&#xff0c;…

Linux 查看 系统基本信息 uname

基本用法&#xff1a; 在终端中输入"uname"即可显示系统的内核名称。 可以结合不同的参数使用&#xff0c;获取更详细的系统信息。 常见参数&#xff1a; “-s”&#xff1a;显示操作系统名称。 “-n”&#xff1a;显示网络节点主机名。 “-r”&#xff1a;显示内核版…

【初中生讲机器学习】9. 我是怎么用朴素贝叶斯实现垃圾邮件分类的?真的超全!

创建时间&#xff1a;2024-02-14 最后编辑时间&#xff1a;2024-02-15 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…

Java学习第十四节之多维数组和Arrays类讲解

多维数组 package array;public class ArrayDemo05 {public static void main(String[] args) {//[4][2] 面向对象/*1,2 array[0]2,3 array[1]3,4 array[2]4,5 array[3]*/int[][] array {{1,2},{2,3},{3,4},{4,5}};for (int i 0; i <array.length; i) {for (int…

Pandas数据库大揭秘:read_sql、to_sql 参数详解与实战篇【第81篇—Pandas数据库】

Pandas数据库大揭秘&#xff1a;read_sql、to_sql 参数详解与实战篇 Pandas是Python中一流的数据处理库&#xff0c;而数据库则是数据存储和管理的核心。将两者结合使用&#xff0c;可以方便地实现数据的导入、导出和分析。本文将深入探讨Pandas中用于与数据库交互的两个关键方…

Linux 基础/子目录分配/文件路径

在Linux系统中&#xff0c;整个系统只具有一个根目录“/”&#xff0c;用斜杠表示。根目录是整个文件系统的顶层目录&#xff0c;在他下面可以创建其他的目录和文件。 Linux中的子目录分配&#xff1a; /bin - 基本命令的二进制文件&#xff0c;这些命令可供所有用户使用&am…

数据结构第十四天(树的存储/双亲表示法)

目录 前言 概述 接口&#xff1a; 源码&#xff1a; 测试函数&#xff1a; 运行结果&#xff1a; 往期精彩内容 前言 孩子&#xff0c;一定要记得你的父母啊&#xff01;&#xff01;&#xff01; 哈哈&#xff0c;今天开始学习树结构中的双亲表示法&#xff0c;让孩…