Authored by 王涛

Merge branch 'master-500-dev-ztq1' into 'master-500-dev'

Master 500 dev ztq1



See merge request !739
1 -<title>日志视图</title> 1 +<title>快照管理</title>
2 <iframe src="/vue3/index.html#/vue3/snapshot" frameborder="0" class="layadmin-iframe" style="height: 99.5%!important;"/> 2 <iframe src="/vue3/index.html#/vue3/snapshot" frameborder="0" class="layadmin-iframe" style="height: 99.5%!important;"/>
  1 +<title>快照概览</title>
  2 +<iframe src="/vue3/index.html#/vue3/snapshotOverview" frameborder="0" class="layadmin-iframe" style="height: 99.5%!important;"/>
@@ -161,6 +161,12 @@ const routes = [{ @@ -161,6 +161,12 @@ const routes = [{
161 name: 'snapshotHistory', 161 name: 'snapshotHistory',
162 component: () => myImport('views/snapshot/history/index') 162 component: () => myImport('views/snapshot/history/index')
163 }, 163 },
  164 + //快照概览
  165 + {
  166 + path: '/vue3/snapshotOverview',
  167 + name: 'snapshotOverview',
  168 + component: () => myImport('views/snapshotOverview/index')
  169 + },
164 ]; 170 ];
165 171
166 // hash模式: createWebHashHistory 172 // hash模式: createWebHashHistory
1 <div class="container" :style="{'height':height+'px','max-height':height+'px'}"> 1 <div class="container" :style="{'height':height+'px','max-height':height+'px'}">
2 <div class="cm-card" :style="{'min-height':height+'px','max-height':height+'px','height':'100%','padding-top':'3px'}"> 2 <div class="cm-card" :style="{'min-height':height+'px','max-height':height+'px','height':'100%','padding-top':'3px'}">
3 <div class="search"> 3 <div class="search">
4 - <div class="condition">  
5 - <el-form  
6 - ref="ruleFormRef"  
7 - :model="ruleForm"  
8 - :rules="rules"  
9 - label-width="0px"  
10 - class="demo-ruleForm"  
11 - :size="formSize"  
12 - status-icon  
13 - > 4 + <div class="condition esData-conditon" style="justify-content: space-between;width: 100%;">
  5 + <el-form :inline="true">
  6 + <el-form-item>
  7 + <el-input clearable :size="$global.elementConfig.size.input" v-model="queryParams.keyword" placeholder="关键字检索" />
  8 + </el-form-item>
  9 + <el-form-item>
  10 + <el-select clearable :size="$global.elementConfig.size.input" v-model="queryParams.bizType" placeholder="资源类型">
  11 + <el-option label="Zone one" value="shanghai" />
  12 + <el-option label="Zone two" value="beijing" />
  13 + </el-select>
  14 + </el-form-item>
  15 + <el-form-item>
  16 + <el-select clearable :size="$global.elementConfig.size.input" v-model="queryParams.devType" placeholder="业务类型">
  17 + <el-option label="Zone one" value="shanghai" />
  18 + <el-option label="Zone two" value="beijing" />
  19 + </el-select>
  20 + </el-form-item>
  21 + <el-form-item>
  22 + <el-button :size="$global.elementConfig.size.button" type="primary">查询</el-button>
  23 + </el-form-item>
14 </el-form> 24 </el-form>
  25 + <el-button-group>
  26 + <el-button @click="handleBtnGroup(0)" :type="btnGroupType==0?'primary':''">今天</el-button>
  27 + <el-button @click="handleBtnGroup(1)" :type="btnGroupType==1?'primary':''">近七日</el-button>
  28 + <el-button @click="handleBtnGroup(2)" :type="btnGroupType==2?'primary':''">近30天</el-button>
  29 + <el-button @click="handleBtnGroup(3)" :type="btnGroupType==3?'primary':''">近90天</el-button>
  30 + <el-button @click="handleBtnGroup(4)" :type="btnGroupType==4?'primary':''">自定义</el-button>
  31 + </el-button-group>
15 </div> 32 </div>
16 </div> 33 </div>
  34 +
  35 + <el-row :gutter="20" style="padding: 3px 10px;">
  36 + <el-col :span="8">
  37 + <h3 style="text-align: left;color:#2b9eef;">资源类型快照量TOP5</h3>
  38 + <div ref="bizChartsRefs" style="width: 100%;height: 320px;border: 1px solid #e4e4e4;"></div>
  39 + </el-col>
  40 + <el-col :span="8">
  41 + <h3 style="text-align: left;color:#2b9eef;">业务系统快照量TOP5</h3>
  42 + <div ref="devChartsRefs" style="width: 100%;height: 320px;border: 1px solid #e4e4e4;"></div>
  43 + </el-col>
  44 + <el-col :span="8">
  45 + <h3 style="text-align: left;color:#2b9eef;">快照量</h3>
  46 + <div ref="snapshotChartsRefs" style="width: 100%;height: 320px;border: 1px solid #e4e4e4;"></div>
  47 + </el-col>
  48 + </el-row>
  49 +
  50 + <div class="search-table">
  51 + <h3 style="text-align: left;color:#2b9eef;">快照信息</h3>
  52 + <cm-table-page :columns="tableData.columns" :dataList="tableData.dataList"
  53 + :height="height - 110"
  54 + :loading="false"
  55 + :pageSize="search.pageSize"
  56 + :showBorder="true"
  57 + :showIndex="true"
  58 + :showPage="true"
  59 + :showSelection="false"
  60 + :showTools="true"
  61 + :total="tableData.count"
  62 + @loaddata="loaddata">
  63 + <template #tools="{scope}">
  64 + <div class="list-handle">
  65 + <span class="icon-bg" style="color: #69a1f6">
  66 + <i class="el-icon-document"></i>
  67 + </span>
  68 + <span class="icon-bg" style="color:#dd3532">
  69 + <i class="el-icon-delete"></i>
  70 + </span>
  71 + </div>
  72 + </template>
  73 + </cm-table-page>
  74 + </div>
17 </div> 75 </div>
18 </div> 76 </div>
@@ -5,12 +5,272 @@ export default { @@ -5,12 +5,272 @@ export default {
5 const {proxy} = Vue.getCurrentInstance(); 5 const {proxy} = Vue.getCurrentInstance();
6 let height = Vue.ref(window.innerHeight); 6 let height = Vue.ref(window.innerHeight);
7 let formSize = Vue.ref('default'); 7 let formSize = Vue.ref('default');
  8 + let queryParams = Vue.ref({
  9 + keyword:undefined,
  10 + bizType:undefined,
  11 + devType:undefined,
  12 + })
  13 + let btnGroupType = Vue.ref(0);
  14 + let search = Vue.ref({
  15 + program: '',
  16 + sortBy: 'dbTime',
  17 + scopeBy: 'dbTimeStr.keyword',
  18 + keyword: '',
  19 + type: 'syslog',
  20 + pageNum: 1,
  21 + pageSize: 10,
  22 + dateTime: [],
  23 + resType: '',
  24 + });
  25 + //表格字段
  26 + let tableData = Vue.ref({
  27 + count: 0,
  28 + dataList: [
  29 + {
  30 + logDate:"PC服务器",
  31 + resName:"稽核服务器jhxc1",
  32 + resTypeName:"95.16.16.93",
  33 + host:"陈婷婷",
  34 + type:"",
  35 + program:"高鹏",
  36 + message:"刘文",
  37 + }, {
  38 + logDate:"",
  39 + resName:"",
  40 + resTypeName:"",
  41 + host:"",
  42 + type:"",
  43 + program:"",
  44 + message:"",
  45 + },{
  46 + logDate:"",
  47 + resName:"",
  48 + resTypeName:"",
  49 + host:"",
  50 + type:"",
  51 + program:"",
  52 + message:"",
  53 + },
  54 + ],
  55 + columns: [
  56 + {
  57 + prop: 'logDate',
  58 + label: '资源类型',
  59 + sortable: true,
  60 + align: 'center',
  61 + width: '250',
  62 + },
  63 + {
  64 + prop: 'resName',
  65 + label: '资源名称',
  66 + sortable: true,
  67 + align: 'center',
  68 + width: '250'
  69 + },
  70 + {
  71 + prop: 'resTypeName',
  72 + label: 'IP地址',
  73 + sortable: true,
  74 + align: 'center',
  75 + width: '200'
  76 + }, {
  77 + prop: 'host',
  78 + label: '负责人',
  79 + sortable: true,
  80 + align: 'center',
  81 + width: '200'
  82 + }, {
  83 + prop: 'type',
  84 + label: '所属业务系统',
  85 + sortable: true,
  86 + align: 'center',
  87 + width: '200'
  88 + },
  89 + {
  90 + prop: 'program',
  91 + label: '业务系统负责人',
  92 + sortable: true,
  93 + align: 'center',
  94 + width: '200'
  95 + },
  96 + {
  97 + prop: 'message',
  98 + label: '快照负责人',
  99 + sortable: true,
  100 + align: 'center',
  101 + width: '200'
  102 + },
  103 + {
  104 + prop: 'message',
  105 + label: '快照创建时间',
  106 + sortable: true,
  107 + align: 'center',
  108 + width: '200'
  109 + },
  110 + ]
  111 + })
8 112
  113 + let loaddata = ({page, limit}) => {
  114 + search.value.pageNum = page;
  115 + search.value.pageSize = limit;
  116 + getDataList();
  117 + }
  118 + // 获取列表
  119 + let getDataList = () => {
  120 +
  121 + };
  122 +
  123 + // 按钮组点击事件
  124 + let handleBtnGroup = (val)=>{
  125 + console.log(btnGroupType.value);
  126 + btnGroupType.value = val;
  127 + console.log(val);
  128 + };
  129 +
  130 + // echarts
  131 + let bizChartsRefs = Vue.ref(null);
  132 + let devChartsRefs = Vue.ref(null);
  133 + let snapshotChartsRefs = Vue.ref(null)
  134 + let getEcharts = ()=>{
  135 + let bizCharts = echarts.init(bizChartsRefs.value);
  136 + let bizOption = {
  137 + grid:{
  138 + top:"14%",
  139 + bottom:"8%"
  140 + },
  141 + tooltip: {
  142 + trigger: 'item'
  143 + },
  144 + color:"#60a0f7",
  145 + xAxis: {
  146 + type: 'category',
  147 + data: ['PC服务器', '虚拟化', '共享存储', '路由器', '数据库'],
  148 + axisTick:false,
  149 + },
  150 + yAxis: {
  151 + type: 'value',
  152 + axisLine:{
  153 + show:true,
  154 + },
  155 + //分隔线样式
  156 + splitLine:{
  157 + show:true,
  158 + lineStyle:{
  159 + type:'dashed'
  160 + }
  161 + }
  162 + },
  163 + series: [
  164 + {
  165 + data: [120, 200, 150, 80, 70,],
  166 + type: 'bar',
  167 + barWidth: 26,//设置柱状图大小
  168 + itemStyle:{
  169 + borderRadius:[20,20,0,0]
  170 + }
  171 + }
  172 + ]
  173 + }
  174 + bizCharts.setOption(bizOption);
  175 +
  176 + let devCharts = echarts.init(devChartsRefs.value);
  177 + let devOption = {
  178 + grid:{
  179 + top:"14%",
  180 + bottom:"8%"
  181 + },
  182 + tooltip: {
  183 + trigger: 'item'
  184 + },
  185 + color:"#60a0f7",
  186 + xAxis: {
  187 + type: 'category',
  188 + data: ['电子税务局', '税库银系统', '电子底账', '出口退税', '数字人事'],
  189 + axisTick:false,
  190 + },
  191 + yAxis: {
  192 + type: 'value',
  193 + axisLine:{
  194 + show:true,
  195 + },
  196 + //分隔线样式
  197 + splitLine:{
  198 + show:true,
  199 + lineStyle:{
  200 + type:'dashed'
  201 + }
  202 + }
  203 + },
  204 + series: [
  205 + {
  206 + data: [120, 200, 150, 80, 70,],
  207 + type: 'bar',
  208 + barWidth: 26,//设置柱状图大小
  209 + itemStyle:{
  210 + borderRadius:[20,20,0,0]
  211 + }
  212 + }
  213 + ]
  214 + }
  215 + devCharts.setOption(devOption);
  216 +
  217 + let snapshotCharts = echarts.init(snapshotChartsRefs.value);
  218 + let shapshotOption = {
  219 + grid:{
  220 + top:"14%",
  221 + bottom:"8%"
  222 + },
  223 + tooltip: {
  224 + trigger: 'item'
  225 + },
  226 + color:"#60a0f7",
  227 + xAxis: {
  228 + type: 'category',
  229 + data: ['07-06', '07-05', '07-04', '07-03', '07-02'],
  230 + axisTick:false,
  231 + },
  232 + yAxis: {
  233 + type: 'value',
  234 + axisLine:{
  235 + show:true,
  236 + },
  237 + //分隔线样式
  238 + splitLine:{
  239 + show:true,
  240 + lineStyle:{
  241 + type:'dashed'
  242 + }
  243 + }
  244 + },
  245 + series: [
  246 + {
  247 + data: [120, 200, 150, 80, 70,],
  248 + type: 'bar',
  249 + barWidth: 26,//设置柱状图大小
  250 + itemStyle:{
  251 + borderRadius:[20,20,0,0]
  252 + }
  253 + }
  254 + ]
  255 + }
  256 + snapshotCharts.setOption(shapshotOption);
  257 + }
9 258
  259 + Vue.onMounted(()=>{
  260 + getEcharts();
  261 + })
10 262
11 return{ 263 return{
12 height, 264 height,
13 - formSize 265 + formSize,
  266 + queryParams,
  267 + tableData,
  268 + search,
  269 + btnGroupType,
  270 + bizChartsRefs,
  271 + devChartsRefs,
  272 + snapshotChartsRefs,
  273 + handleBtnGroup,
14 } 274 }
15 } 275 }
16 } 276 }
  1 +<div class="container" :style="{'height':height+'px','max-height':height+'px'}">
  2 + <div class="cm-card" :style="{'min-height':height+'px','max-height':height+'px','height':'100%','padding-top':'3px'}">
  3 + <div class="search">
  4 + <div class="condition esData-conditon" style="justify-content: end;width: 100%;">
  5 + <el-button-group>
  6 + <el-button @click="handleBtnGroup(0)" :type="btnGroupType==0?'primary':''">今天</el-button>
  7 + <el-button @click="handleBtnGroup(1)" :type="btnGroupType==1?'primary':''">近七日</el-button>
  8 + <el-button @click="handleBtnGroup(2)" :type="btnGroupType==2?'primary':''">近30天</el-button>
  9 + <el-button @click="handleBtnGroup(3)" :type="btnGroupType==3?'primary':''">近90天</el-button>
  10 + <el-button @click="handleBtnGroup(4)" :type="btnGroupType==4?'primary':''">自定义</el-button>
  11 + </el-button-group>
  12 + </div>
  13 + </div>
  14 +
  15 + <el-row :gutter="20" style="padding: 3px 10px;">
  16 + <el-col :span="12">
  17 + <h3 style="text-align: left;color:#2b9eef;">资源类型快照量TOP5</h3>
  18 + <div ref="bizChartsRefs" style="width: 100%;height: 320px;border: 1px solid #e4e4e4;"></div>
  19 + </el-col>
  20 + <el-col :span="12">
  21 + <h3 style="text-align: left;color:#2b9eef;">业务系统快照量TOP5</h3>
  22 + <div ref="devChartsRefs" style="width: 100%;height: 320px;border: 1px solid #e4e4e4;"></div>
  23 + </el-col>
  24 + <el-col :span="12">
  25 + <h3 style="text-align: left;color:#2b9eef;">人员快照量</h3>
  26 + <div ref="peopleSSChartsRefs" style="width: 100%;height: 320px;border: 1px solid #e4e4e4;"></div>
  27 + </el-col>
  28 + <el-col :span="12">
  29 + <h3 style="text-align: left;color:#2b9eef;">快照量</h3>
  30 + <div ref="snapshotChartsRefs" style="width: 100%;height: 320px;border: 1px solid #e4e4e4;"></div>
  31 + </el-col>
  32 + </el-row>
  33 +
  34 +
  35 + <div class="search-table">
  36 + <h3 style="text-align: left;color:#2b9eef;">快照信息</h3>
  37 + <cm-table-page :columns="tableData.columns" :dataList="tableData.dataList"
  38 + :height="height - 110"
  39 + :loading="false"
  40 + :pageSize="search.pageSize"
  41 + :showBorder="true"
  42 + :showIndex="true"
  43 + :showPage="true"
  44 + :showSelection="false"
  45 + :showTools="true"
  46 + :total="tableData.count"
  47 + @loaddata="loaddata">
  48 + <template #tools="{scope}">
  49 + <div class="list-handle">
  50 + <span class="icon-bg" style="color: #69a1f6">
  51 + <i class="el-icon-document"></i>
  52 + </span>
  53 + <span class="icon-bg" style="color:#dd3532">
  54 + <i class="el-icon-delete"></i>
  55 + </span>
  56 + </div>
  57 + </template>
  58 + </cm-table-page>
  59 + </div>
  60 + </div>
  61 +</div>
  1 +export default {
  2 + name:"snapshotOverview",
  3 + template:"",
  4 + setup(props,{attrs,slots,emit}){
  5 + const {proxy} = Vue.getCurrentInstance();
  6 + let height = Vue.ref(window.innerHeight);
  7 + let btnGroupType = Vue.ref(0);
  8 + let search = Vue.ref({
  9 + program: '',
  10 + sortBy: 'dbTime',
  11 + scopeBy: 'dbTimeStr.keyword',
  12 + keyword: '',
  13 + type: 'syslog',
  14 + pageNum: 1,
  15 + pageSize: 10,
  16 + dateTime: [],
  17 + resType: '',
  18 + });
  19 + //表格字段
  20 + let tableData = Vue.ref({
  21 + count: 0,
  22 + dataList: [
  23 + {
  24 + logDate:"PC服务器",
  25 + resName:"稽核服务器jhxc1",
  26 + resTypeName:"95.16.16.93",
  27 + host:"陈婷婷",
  28 + type:"",
  29 + program:"高鹏",
  30 + message:"刘文",
  31 + }, {
  32 + logDate:"",
  33 + resName:"",
  34 + resTypeName:"",
  35 + host:"",
  36 + type:"",
  37 + program:"",
  38 + message:"",
  39 + },{
  40 + logDate:"",
  41 + resName:"",
  42 + resTypeName:"",
  43 + host:"",
  44 + type:"",
  45 + program:"",
  46 + message:"",
  47 + },
  48 + ],
  49 + columns: [
  50 + {
  51 + prop: 'logDate',
  52 + label: '资源类型',
  53 + sortable: true,
  54 + align: 'center',
  55 + width: '250',
  56 + },
  57 + {
  58 + prop: 'resName',
  59 + label: '资源名称',
  60 + sortable: true,
  61 + align: 'center',
  62 + width: '250'
  63 + },
  64 + {
  65 + prop: 'resTypeName',
  66 + label: 'IP地址',
  67 + sortable: true,
  68 + align: 'center',
  69 + width: '200'
  70 + }, {
  71 + prop: 'host',
  72 + label: '负责人',
  73 + sortable: true,
  74 + align: 'center',
  75 + width: '200'
  76 + }, {
  77 + prop: 'type',
  78 + label: '所属业务系统',
  79 + sortable: true,
  80 + align: 'center',
  81 + width: '200'
  82 + },
  83 + {
  84 + prop: 'program',
  85 + label: '业务系统负责人',
  86 + sortable: true,
  87 + align: 'center',
  88 + width: '200'
  89 + },
  90 + {
  91 + prop: 'message',
  92 + label: '快照负责人',
  93 + sortable: true,
  94 + align: 'center',
  95 + width: '200'
  96 + },
  97 + {
  98 + prop: 'message',
  99 + label: '快照创建时间',
  100 + sortable: true,
  101 + align: 'center',
  102 + width: '200'
  103 + },
  104 + ]
  105 + })
  106 +
  107 + let loaddata = ({page, limit}) => {
  108 + search.value.pageNum = page;
  109 + search.value.pageSize = limit;
  110 + getDataList();
  111 + }
  112 + // 获取列表
  113 + let getDataList = () => {
  114 +
  115 + };
  116 +
  117 + // 按钮组点击事件
  118 + let handleBtnGroup = (val)=>{
  119 + btnGroupType.value = val;
  120 + };
  121 +
  122 + // echarts
  123 + let bizChartsRefs = Vue.ref(null);
  124 + let devChartsRefs = Vue.ref(null);
  125 + let snapshotChartsRefs = Vue.ref(null);
  126 + let peopleSSChartsRefs = Vue.ref(null);
  127 + let getEcharts = ()=>{
  128 + let bizCharts = echarts.init(bizChartsRefs.value);
  129 + let bizOption = {
  130 + grid:{
  131 + top:"14%",
  132 + bottom:"8%"
  133 + },
  134 + tooltip: {
  135 + trigger: 'item'
  136 + },
  137 + color:"#60a0f7",
  138 + xAxis: {
  139 + type: 'category',
  140 + data: ['PC服务器', '虚拟化', '共享存储', '路由器', '数据库'],
  141 + axisTick:false,
  142 + },
  143 + yAxis: {
  144 + type: 'value',
  145 + axisLine:{
  146 + show:true,
  147 + },
  148 + //分隔线样式
  149 + splitLine:{
  150 + show:true,
  151 + lineStyle:{
  152 + type:'dashed'
  153 + }
  154 + }
  155 + },
  156 + series: [
  157 + {
  158 + data: [120, 200, 150, 80, 70,],
  159 + type: 'bar',
  160 + barWidth: 26,//设置柱状图大小
  161 + itemStyle:{
  162 + borderRadius:[20,20,0,0]
  163 + }
  164 + }
  165 + ]
  166 + }
  167 + bizCharts.setOption(bizOption);
  168 +
  169 + let devCharts = echarts.init(devChartsRefs.value);
  170 + let devOption = {
  171 + grid:{
  172 + top:"14%",
  173 + bottom:"8%"
  174 + },
  175 + tooltip: {
  176 + trigger: 'item'
  177 + },
  178 + color:"#60a0f7",
  179 + xAxis: {
  180 + type: 'category',
  181 + data: ['电子税务局', '税库银系统', '电子底账', '出口退税', '数字人事'],
  182 + axisTick:false,
  183 + },
  184 + yAxis: {
  185 + type: 'value',
  186 + axisLine:{
  187 + show:true,
  188 + },
  189 + //分隔线样式
  190 + splitLine:{
  191 + show:true,
  192 + lineStyle:{
  193 + type:'dashed'
  194 + }
  195 + }
  196 + },
  197 + series: [
  198 + {
  199 + data: [120, 200, 150, 80, 70,],
  200 + type: 'bar',
  201 + barWidth: 26,//设置柱状图大小
  202 + itemStyle:{
  203 + borderRadius:[20,20,0,0]
  204 + }
  205 + }
  206 + ]
  207 + }
  208 + devCharts.setOption(devOption);
  209 +
  210 + let snapshotCharts = echarts.init(snapshotChartsRefs.value);
  211 + let shapshotOption = {
  212 + grid:{
  213 + top:"14%",
  214 + bottom:"8%"
  215 + },
  216 + tooltip: {
  217 + trigger: 'item'
  218 + },
  219 + color:"#EF8166",
  220 + xAxis: {
  221 + type: 'value',
  222 + axisLine:{
  223 + show:true,
  224 + },
  225 + //分隔线样式
  226 + splitLine:{
  227 + show:true,
  228 + lineStyle:{
  229 + type:'dashed'
  230 + }
  231 + }
  232 + },
  233 + yAxis: {
  234 + type: 'category',
  235 + data: ['07-06', '07-05', '07-04', '07-03', '07-02'],
  236 + axisTick:false,
  237 + },
  238 + series: [
  239 + {
  240 + data: [120, 200, 150, 80, 70,],
  241 + type: 'bar',
  242 + barWidth: 26,//设置柱状图大小
  243 + itemStyle:{
  244 + borderRadius:[0,20,20,0]
  245 + }
  246 + }
  247 + ]
  248 + }
  249 + snapshotCharts.setOption(shapshotOption);
  250 +
  251 + let peopleSSCharts = echarts.init(peopleSSChartsRefs.value);
  252 + let peopleOption = {
  253 + grid:{
  254 + top:"14%",
  255 + bottom:"8%"
  256 + },
  257 + //color:"#60a0f7",
  258 + tooltip: {
  259 + trigger: 'item'
  260 + },
  261 + legend: {
  262 + orient: 'vertical',
  263 + top:"middle",
  264 + right:"10%",
  265 + itemWidth:35,
  266 + icon:"rect",
  267 + },
  268 + series: [
  269 + {
  270 + data: [
  271 + { value: 1048, name: '张三' },
  272 + { value: 735, name: '李四' },
  273 + { value: 580, name: '赵二' },
  274 + { value: 484, name: '王五' },
  275 + { value: 300, name: '赵六' }
  276 + ],
  277 + center: ['40%', '50%'],
  278 + type: 'pie',
  279 + //高亮状态的扇区和标签样式。
  280 + emphasis: {
  281 + label: {
  282 + show: true
  283 + },
  284 + itemStyle: {
  285 + shadowBlur: 10,
  286 + shadowOffsetX: 0,
  287 + shadowColor: 'rgba(0, 0, 0, 0.5)'
  288 + }
  289 + },
  290 + label: {
  291 + show: false
  292 + },
  293 + }
  294 + ]
  295 + }
  296 + peopleSSCharts.setOption(peopleOption);
  297 + }
  298 +
  299 + Vue.onMounted(()=>{
  300 + getEcharts();
  301 + })
  302 +
  303 + Vue.onMounted(()=>{
  304 +
  305 + })
  306 + return {
  307 + height,
  308 + search,
  309 + tableData,
  310 + btnGroupType,
  311 + handleBtnGroup,
  312 + bizChartsRefs,
  313 + devChartsRefs,
  314 + snapshotChartsRefs,
  315 + peopleSSChartsRefs,
  316 + }
  317 + }
  318 +}
@@ -256,6 +256,12 @@ const routes = [{ @@ -256,6 +256,12 @@ const routes = [{
256 name: 'snapshotHistory', 256 name: 'snapshotHistory',
257 component: () => myImport('views/snapshot/history/index') 257 component: () => myImport('views/snapshot/history/index')
258 }, 258 },
  259 + //快照概览
  260 + {
  261 + path: '/vue3/snapshotOverview',
  262 + name: 'snapshotOverview',
  263 + component: () => myImport('views/snapshotOverview/index')
  264 + },
259 ]; 265 ];
260 266
261 // hash模式: createWebHashHistory 267 // hash模式: createWebHashHistory