提交: 现版本 项目管理详情 基础代码

This commit is contained in:
23688nl 2022-08-29 14:30:21 +08:00
parent 080790fedb
commit 65e41e390f
14 changed files with 244 additions and 117 deletions

View File

@ -26,3 +26,12 @@ export function listProjectTableFilter(query) {
params: query params: query
}); });
} }
// 查询 项目 型号
export function statProject(query) {
return request({
url: "/iot/project/projectStat",
method: "get",
params: query
});
}

View File

@ -304,7 +304,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import SelectTableWrap from "@/components/SelectTable/index"; import SelectTableWrap from "@/components/SelectTable/index";
///// /////
// import DetailsWrapNew from './profileV2/details' import DetailsWrapNew from './profileV2/details'
export default { export default {
name: "Project", name: "Project",
@ -313,7 +313,7 @@ export default {
Treeselect, Treeselect,
DetailsWrap, DetailsWrap,
SelectTableWrap, SelectTableWrap,
// DetailsWrapNew DetailsWrapNew
}, },
data() { data() {
return { return {

View File

@ -33,7 +33,7 @@
<div :class="tableSelectList && tableSelectList.length > 0 ? 'operate-onekey-on' : 'operate-onekey-on but-disable'" @click="handleChildStatus('false')"> <div :class="tableSelectList && tableSelectList.length > 0 ? 'operate-onekey-on' : 'operate-onekey-on but-disable'" @click="handleChildStatus('false')">
一键分闸 一键分闸
</div> </div>
<el-select v-model="queryParams.prodKey" style="margin-left: 5xp; width: 120px;" placeholder="请选择项目类型" size="small"> <el-select v-model="queryParams.prodKey" style="margin-left: 5xp; width: 130px;" placeholder="请选择项目类型" size="small">
<el-option <el-option
v-for="dict in projectModelList" v-for="dict in projectModelList"
:key="dict.prodKey" :key="dict.prodKey"
@ -47,13 +47,14 @@
</div> </div>
<div class="device-children-center"> <div class="device-children-center">
<e-dynamic-table <e-dynamic-table
:border="false" :border="true"
:loading="tableLoading" :loading="tableLoading"
:tableTotal="0" :tableTotal="deviceTotal"
:queryParams="queryParams" :queryParams="queryParams"
:tableList="tableList" :tableList="tableList"
:filterList="[...defaultFilterList, ...filterList]" :filterList="[...defaultFilterList, ...filterList]"
:isIndex="true" :isIndex="true"
:tableHeight="tableList.length > 0 ? '470px' : '495px'"
:isSelect="true" :isSelect="true"
rowKey="deviceId" rowKey="deviceId"
@tableSelectionChange="handleTableChange" @tableSelectionChange="handleTableChange"
@ -129,7 +130,8 @@ export default {
tableSelectList: [], tableSelectList: [],
stompClient: null, stompClient: null,
socket_flag: true, socket_flag: true,
timeout_flag: null timeout_flag: null,
deviceTotal: 0
}; };
}, },
created() { created() {
@ -189,7 +191,8 @@ export default {
deviceTags: this.deviceType || '', deviceTags: this.deviceType || '',
pid: this.gatewayDevice.deviceId || '' pid: this.gatewayDevice.deviceId || ''
}, this.queryParams)).then(res => { }, this.queryParams)).then(res => {
this.tableList = res.data this.tableList = res.rows
this.deviceTotal = res.total
if (this.stompClient) { if (this.stompClient) {
this.closeSocket() this.closeSocket()
} }
@ -402,7 +405,7 @@ export default {
} }
} }
.right-operate { .right-operate {
width: 350px; width: 360px;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
font-weight: 400; font-weight: 400;

View File

@ -63,11 +63,11 @@
<el-button <el-button
type="primary" type="primary"
icon="el-icon-search" icon="el-icon-search"
size="mini" size="small"
@click="handleQuery" @click="handleQuery"
>搜索</el-button >搜索</el-button
> >
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery" <el-button icon="el-icon-refresh" size="small" @click="resetQuery"
>重置</el-button >重置</el-button
> >
</el-form-item> </el-form-item>
@ -225,6 +225,7 @@ export default {
sourceId(val) { sourceId(val) {
if (val) { if (val) {
this.initHTML(); this.initHTML();
this.showChildrenView = false
} }
}, },
deviceType(val) { deviceType(val) {
@ -300,7 +301,7 @@ export default {
projectId: this.sourceId, projectId: this.sourceId,
deviceTags: this.deviceType || '' deviceTags: this.deviceType || ''
}, this.queryParams)).then(res => { }, this.queryParams)).then(res => {
this.list = res.data this.list = res.rows
if (this.stompClient) { if (this.stompClient) {
this.closeSocket() this.closeSocket()
} }
@ -494,7 +495,7 @@ export default {
.footer-title { .footer-title {
width: 100%; width: 100%;
margin-left: 10px; margin-left: 3px;
display: block; display: block;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;

View File

@ -1,8 +1,19 @@
<template> <template>
<div class="e-dynamic-table"> <div class="e-dynamic-table">
<el-table v-loading="loading" :data="tableList" :row-key="rowKey" :border="border" @selection-change="handleSelectionChange"> <el-table
v-loading="loading"
<el-table-column type="selection" v-if="isSelect" width="50" align="center" /> :height="tableHeight"
:data="tableList"
:row-key="rowKey"
:border="border"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
v-if="isSelect"
width="50"
align="center"
/>
<el-table-column <el-table-column
v-if="isIndex" v-if="isIndex"
@ -28,14 +39,23 @@
:key="idx" :key="idx"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<slot v-if="tableItem.slot" :name="tableItem.slotName" :row="scope.row" ></slot> <slot
<span v-else class="lay-table-textarea" :title="scope.row[tableItem.prop || '']"> v-if="tableItem.slot"
{{ scope.row[tableItem.prop || ''] }} :name="tableItem.slotName"
:row="scope.row"
></slot>
<span
v-else
class="lay-table-textarea"
:title="scope.row[tableItem.prop || '']"
>
{{ scope.row[tableItem.prop || ""] }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
style="margin-top: 5px; height: 35px"
v-show="tableTotal > 0" v-show="tableTotal > 0"
:total="tableTotal" :total="tableTotal"
:page.sync="queryParams.pageNum" :page.sync="queryParams.pageNum"
@ -48,6 +68,10 @@
export default { export default {
name: "EDynamicTable", name: "EDynamicTable",
props: { props: {
tableHeight: {
type: [Number, String],
default: "",
},
border: { border: {
type: Boolean, type: Boolean,
default: false, default: false,
@ -87,36 +111,36 @@ export default {
}, },
isSelect: { isSelect: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
rowKey: { rowKey: {
type: String, type: String,
default: 'id' default: "id",
} },
}, },
data() { data() {
return { return {
filter: [ filter: [
{ {
label: "", label: "",
align: 'left', align: "left",
prop: '', prop: "",
width: '', width: "",
slot: true, slot: true,
slotName: 'inst' slotName: "inst",
}, },
], ],
}; };
}, },
methods: { methods: {
handleQuery2() { handleQuery2() {
this.$emit('handleQuery', this.queryParams) this.$emit("handleQuery", this.queryParams);
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.$emit('tableSelectionChange', selection) this.$emit("tableSelectionChange", selection);
},
}, },
}
}; };
</script> </script>

View File

@ -2,7 +2,7 @@
<div class="e-object-device-manage"> <div class="e-object-device-manage">
<el-tabs v-model="activeName"> <el-tabs v-model="activeName">
<el-tab-pane :label="tabLabel.dictLabel" :name="tabLabel.dictValue" v-for="(tabLabel, idx) in projectDeviceTagGroup" :key="idx"> <el-tab-pane :label="tabLabel.dictLabel" :name="tabLabel.dictValue" v-for="(tabLabel, idx) in projectDeviceTagGroup" :key="idx">
<e-device-table v-if="tabLabel.dictValue === activeName" :sourceId="projectInfo['projectId']" :deviceType="tabLabel.dictValue" /> <e-device-table v-if="tabLabel.dictValue === activeName" :sourceId="sourceId" :deviceType="tabLabel.dictValue" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
@ -18,6 +18,10 @@ export default {
projectInfo: { projectInfo: {
type: Object, type: Object,
require: true require: true
},
sourceId: {
type: [Number, String],
require: true
} }
}, },
data() { data() {

View File

@ -10,7 +10,7 @@
> >
<div class="card-for-item"> <div class="card-for-item">
<div class="card-item-title">{{ item.label }}</div> <div class="card-item-title">{{ item.label }}</div>
<div class="card-item-value">{{ result[item.key] || 222 }}</div> <div class="card-item-value">{{ result[item.key] || 0 }}</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -94,6 +94,13 @@ export default {
show: false, show: false,
text: "今日报警" text: "今日报警"
}, },
grid: {
left: "10",
right: "10",
bottom: "5",
top: 50,
containLabel: true,
},
axisLine: { axisLine: {
// 线 // 线
lineStyle: { lineStyle: {

View File

@ -59,7 +59,7 @@ export default {
<style lang="scss"> <style lang="scss">
.project-e-trend-echart-line { .project-e-trend-echart-line {
position: relative; position: relative;
height: 100%; height: calc(100%);
top: 0px; top: 0px;
width: 100%; width: 100%;
} }

View File

@ -31,7 +31,7 @@ export default {
}, },
projectTypeOptions: { projectTypeOptions: {
type: Array type: Array
} },
}, },
data() { data() {
return { return {

View File

@ -79,7 +79,7 @@
</el-table> </el-table>
<!-- 添加或修改项目空间对话框 --> <!-- 添加或修改项目空间对话框 -->
<el-dialog class="eldialog-wrap" :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px"> <el-dialog class="eldialog-wrap" append-to-body='true' :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="上级空间:" prop="parentId"> <el-form-item label="上级空间:" prop="parentId">
<treeselect v-model="form.parentId" :options="spaceOptions" placeholder="请选择上级空间" /> <treeselect v-model="form.parentId" :options="spaceOptions" placeholder="请选择上级空间" />
@ -111,6 +111,7 @@
width="75%" width="75%"
top="10vh" top="10vh"
:close-on-click-modal="false" :close-on-click-modal="false"
append-to-body='true'
> >
<e-object-space-device <e-object-space-device
v-if="selectTableShow" v-if="selectTableShow"
@ -133,8 +134,6 @@ import {
delSpace, delSpace,
addSpace, addSpace,
updateSpace, updateSpace,
exportSpace,
listSpaceDevice,
listSpaceTree listSpaceTree
} from "@/api/iot/space"; } from "@/api/iot/space";
import EObjectSpaceDevice from "./EObjectSpaceDevice"; import EObjectSpaceDevice from "./EObjectSpaceDevice";
@ -181,6 +180,17 @@ export default {
spaceDeviceTitle: "" spaceDeviceTitle: ""
}; };
}, },
watch: {
infoData: {
handler(newValue) {
if (newValue) {
this.getList()
}
},
deep:true, //
immediate: false, //
}
},
created() { created() {
this.getDicts("space_type").then(response => { this.getDicts("space_type").then(response => {
this.spaceTypeOptions = response.data; this.spaceTypeOptions = response.data;

View File

@ -141,6 +141,17 @@ export default {
tenantTypeOptions: [] tenantTypeOptions: []
}; };
}, },
watch: {
infoData: {
handler(newVal) {
if (newVal) {
this.getList()
}
},
deep:true, //
immediate: false, //
}
},
created() { created() {
this.getDicts("sys_tenant_type").then(response => { this.getDicts("sys_tenant_type").then(response => {
this.tenantTypeOptions = response.data; this.tenantTypeOptions = response.data;

View File

@ -38,7 +38,7 @@ export default {
trigger: "axis", trigger: "axis",
}, },
legend: { legend: {
top: 5, top: -5,
right: 5, right: 5,
data: ["报警", "预警"], data: ["报警", "预警"],
// icon: "circle", // icon: "circle",
@ -49,10 +49,10 @@ export default {
}, },
}, },
grid: { grid: {
left: "20", left: "10",
right: "20", right: "10",
bottom: "5", bottom: "5",
top: 30, top: 37,
containLabel: true, containLabel: true,
}, },
xAxis: { xAxis: {

View File

@ -1,5 +1,6 @@
<template> <template>
<div class="project-detail-v2" <div
class="project-detail-v2"
id="project-detail-v2-id" id="project-detail-v2-id"
ref="project-detail-v2-id" ref="project-detail-v2-id"
:style="{ :style="{
@ -11,10 +12,10 @@
> >
<div :class="isFoldRight ? 'block-lift block-right-fold' : 'block-lift'"> <div :class="isFoldRight ? 'block-lift block-right-fold' : 'block-lift'">
<div class="container-title"> <div class="container-title">
<div class="title-left"> <div class="title-left" v-for="(item, idx) in projectList" :key="idx" v-show="item.projectId === infoData.projectId">
<span>{{ infoData.projectName }}</span> <span>{{ item.projectName }}</span>
<i class="el-icon-arrow-left icon-c"></i> <i class="el-icon-arrow-left icon-c but-icon" @click="handlePrev(idx)"></i>
<i class="el-icon-arrow-right icon-c"></i> <i class="el-icon-arrow-right icon-c but-icon" @click="handleNext(idx)"></i>
</div> </div>
<div class="title-but"> <div class="title-but">
<div class="but-home" @click="handleLinkToTable"> <div class="but-home" @click="handleLinkToTable">
@ -50,7 +51,7 @@
<div class="info-divider"></div> <div class="info-divider"></div>
<div class="info-right"> <div class="info-right">
<div> <div>
<e-census-cards :propList="censusCardList" :result="censusResult" /> <e-census-cards :propList="censusCardList" :result="projectStatistics" />
</div> </div>
</div> </div>
</div> </div>
@ -65,42 +66,41 @@
" "
/> />
<div class="main-block"> <div class="main-block">
<component :is="activeName" :projectInfo="infoData" :projectTypeOptions="projectTypeOptions"></component> <component
:is="activeName"
:projectInfo="infoData"
:projectTypeOptions="projectTypeOptions"
:sourceId="stateSourceId"
></component>
</div> </div>
</div> </div>
</div> </div>
<div class="block-right" v-if="!isFoldRight"> <div class="block-right" v-if="!isFoldRight">
<e-simple-card title="最近2 天警情同比" class="today-ratio-card"> <e-simple-card title="最近2 天警情同比" class="today-ratio-card">
<template slot="cardBody"> <template slot="cardBody">
<e-today-ratio :result="resultInfo['warningAnalysisStatisticsVo']"/> <e-today-ratio v-if="!isFoldRight" :result="resultInfo['warningAnalysisStatisticsVo']" />
</template> </template>
</e-simple-card> </e-simple-card>
<e-simple-card <e-simple-card title="类型分布统计" class="type-census-card">
title="类型分布统计"
class="type-census-card"
>
<template slot="cardBody"> <template slot="cardBody">
<e-type-census <e-type-census v-if="!isFoldRight" :result="resultInfo['alarmCategoriesList'] || []" />
:result="resultInfo['alarmCategoriesList'] || []"
/>
</template> </template>
</e-simple-card> </e-simple-card>
<e-simple-card <e-simple-card title="报警预警趋势" class="trend-census-card">
title="报警预警趋势"
class="trend-census-card"
>
<template slot="cardBody"> <template slot="cardBody">
<e-trend-census :result="resultInfo['alarmChartDataVo'] || []"/> <e-trend-census v-if="!isFoldRight" :result="resultInfo['alarmChartDataVo'] || []" />
</template> </template>
</e-simple-card> </e-simple-card>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { getProject } from "@/api/iot/project"; import { getProject, listProject } from "@/api/iot/project";
import { getWarningAnalysis, appProjectList } from "@/api/app"; import { statProject } from "@/api/iot/project_new"
import { getWarningAnalysis } from "@/api/app";
import Cookies from "js-cookie";
import ECensusCards from "./ECensusCards"; import ECensusCards from "./ECensusCards";
import ElDescriptions from "@/components/Edescriptions"; import ElDescriptions from "@/components/Edescriptions";
import ElDescriptionsItem from "@/components/Edescriptions/src/descriptions-item"; import ElDescriptionsItem from "@/components/Edescriptions/src/descriptions-item";
@ -108,10 +108,10 @@ import ESimpleCard from "@/components/Cards/index";
import ENavMenu from "./ENavMenu"; import ENavMenu from "./ENavMenu";
import EProjectManage from "./EProjectManage"; import EProjectManage from "./EProjectManage";
import ETodayRatio from "./ETodayRatio"; import ETodayRatio from "./ETodayRatio";
import ETypeCensus from './ETypeCensus' import ETypeCensus from "./ETypeCensus";
import ETrendCensus from './ETrendCensus' import ETrendCensus from "./ETrendCensus";
import EObjectContainer from './EObjectContainer' import EObjectContainer from "./EObjectContainer";
import EDeviceManage from './DeviceManage/index' import EDeviceManage from "./DeviceManage/index";
export default { export default {
name: "projectDetailV2", name: "projectDetailV2",
@ -126,7 +126,7 @@ export default {
ETypeCensus, ETypeCensus,
ETrendCensus, ETrendCensus,
EObjectContainer, EObjectContainer,
EDeviceManage EDeviceManage,
}, },
props: { props: {
sourceId: { sourceId: {
@ -151,96 +151,141 @@ export default {
], ],
projectTypeOptions: [], projectTypeOptions: [],
infoData: {}, infoData: {},
censusResult: {
device: 3555,
},
censusCardList: [ censusCardList: [
{ {
label: "设备总数", label: "设备总数",
key: "device", key: "deviceTotal",
}, },
{ {
label: "在线设备数", label: "在线设备数",
key: "device", key: "onlineTotal",
}, },
{ {
label: "离线设备数", label: "离线设备数",
key: "device", key: "offlineTotal",
}, },
{ {
label: "今日报警数", label: "今日报警数",
key: "device", key: "todayAlarmTotal",
}, },
{ {
label: "本月报警数", label: "本月报警数",
key: "device", key: "alarmTotal",
}, },
], ],
projectList: [],
isFoldRight: false, isFoldRight: false,
scalseNumX: 1, scalseNumX: 1,
scalseNumY: 1, scalseNumY: 1,
fullscreen: false,
divWidth: 1682,
divHeight: 812,
projectStatistics: {}
}; };
}, },
created() { created() {
this.stateSourceId = this.sourceId; this.stateSourceId = this.sourceId;
this.getInfoByProjectId(); this.getProjectList();
// this.init()
this.activeName = "EObjectContainer"; this.activeName = "EObjectContainer";
this.getDicts("project_industry").then((response) => { this.getDicts("project_industry").then((response) => {
this.projectTypeOptions = response.data; this.projectTypeOptions = response.data;
}); });
this.warningAnalysisList();
}, },
switch: { watch: {
isFoldRight: {
handler(newValue) {
if (!newValue) {
this.warningAnalysisList()
}
},
deep:true, //
immediate: false, //
},
sourceId(val) { sourceId(val) {
console.log(val);
this.stateSourceId = this.sourceId; this.stateSourceId = this.sourceId;
this.getInfoByProjectId(); },
this.warningAnalysisList(); stateSourceId(val) {
this.init()
}, },
}, },
mounted() { mounted() {
// //
// this.resize_window(); this.resize_window_project();
// this.thisScrollTopY = document.getElementById("con_lf_top_div").scrollTop; this.thisScrollTopY = document.getElementById("con_lf_top_div").scrollTop;
// document.getElementById("con_lf_top_div").style.background = "#010e45"; document.getElementById("con_lf_top_div").style.overflow = "hidden";
// document.getElementById("con_lf_top_div").style.height = document.getElementById("con_lf_top_div").scrollTop = 0;
// "calc(100vh - 0px)"; window.addEventListener("resize", () => {
// document.getElementById("con_lf_top_div").style.minHeight = this.resize_window_project();
// "calc(100vh - 0px)"; });
// document.getElementById("con_lf_top_div").style.overflow = "hidden";
// document.getElementById("con_lf_top_div").scrollTop = 0;
// window.addEventListener("resize", () => {
// this.resize_window();
// });
}, },
methods: { methods: {
resize_window() { init() {
// if (this.fullscreen) { this.getInfoByProjectId();
// this.scalseNumX = Number(document.documentElement.clientWidth / 1682); this.getProjectCount()
// this.scalseNumY = Number(document.documentElement.clientHeight / 812); this.warningAnalysisList();
// } else { },
// if (document.documentElement.clientWidth < 993) { resize_window_project() {
// this.scalseNumX = var documentDiv = document.getElementById("project-detail-v2-id");
// Number(document.documentElement.clientWidth / 1682) - if (this.fullscreen) {
// (Cookies.get("sidebarStatus") !== "0" ? Number(200 / 1920) : 0); this.scalseNumX = Number(documentDiv.clientWidth / this.divWidth);
// } else { this.scalseNumY = Number(documentDiv.clientHeight / this.divHeight);
// this.scalseNumX = } else {
// Number(document.documentElement.clientWidth / 1920) - if (document.documentElement.clientWidth < 993) {
// (Cookies.get("sidebarStatus") !== "0" this.scalseNumX =
// ? Number(200 / 1920) Number(document.documentElement.clientWidth / this.divWidth) -
// : Number(54 / 1920)); (Cookies.get("sidebarStatus") !== "0"
// } ? Number(200 / this.divWidth)
// this.scalseNumY = Number(document.documentElement.clientHeight / 1080); : 0);
// } } else {
this.scalseNumX =
Number(document.documentElement.clientWidth / this.divWidth) -
(Cookies.get("sidebarStatus") !== "0"
? Number(240 / this.divWidth)
: Number(54 / this.divWidth));
}
this.scalseNumY = Number(
(document.documentElement.clientHeight - 125) / this.divHeight
);
}
},
handlePrev(idx) {
if (idx >= 1) {
// this.getInfoByProjectId(this.projectList[idx - 1].projectId)
this.stateSourceId = this.projectList[idx - 1].projectId
}
},
handleNext(idx) {
if (idx < this.projectList.length - 1) {
// this.getInfoByProjectId(this.projectList[idx + 1].projectId)
this.stateSourceId = this.projectList[idx + 1].projectId
}
},
//
getProjectCount() {
statProject({ projectId: this.stateSourceId }).then(res => {
this.projectStatistics = res.data
})
},
//
getProjectList() {
listProject({
pageNum: 1,
pageSize: 99999,
orderByColumn: 'createTime',
isAsc: 'desc',
}).then((response) => {
this.projectList = response.rows;
});
}, },
// //
handleLinkToTable() { handleLinkToTable() {
this.$emit('linkToTable') this.$emit("linkToTable");
}, },
// //
handleFoldRight() { handleFoldRight() {
this.isFoldRight = !this.isFoldRight this.isFoldRight = !this.isFoldRight;
this.$forceUpdate() this.$forceUpdate();
}, },
// //
warningAnalysisList() { warningAnalysisList() {
@ -268,8 +313,14 @@ export default {
height: 100%; height: 100%;
height: calc(100vh - 125px); height: calc(100vh - 125px);
display: flex; display: flex;
width: 1682px;
height: 812px;
transform-origin: center top 0px;
position: relative;
left: 50%;
margin-left: -840px;
.block-lift { .block-lift {
width: calc(100% - 300px - 20px); width: calc(100% - 290px - 20px);
height: 100%; height: 100%;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@ -391,6 +442,7 @@ export default {
display: flex; display: flex;
border: 1px solid #e8e8e8; border: 1px solid #e8e8e8;
border-radius: 5px; border-radius: 5px;
height: calc(100% - 160px);
.main-block { .main-block {
padding: 15px; padding: 15px;
width: calc(100% - 150px); width: calc(100% - 150px);
@ -402,7 +454,7 @@ export default {
width: 100%; width: 100%;
} }
.block-right { .block-right {
width: 300px; width: 290px;
height: 100%; height: 100%;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@ -447,5 +499,11 @@ export default {
.el-descriptions-item__label.is-bordered-label { .el-descriptions-item__label.is-bordered-label {
background: #fafafa00; background: #fafafa00;
} }
.but-icon:hover {
color: #1890ff !important;
font-size: 20px !important;
} }
}
</style> </style>