城阳pc工作端前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

593 lines
16 KiB

<template>
<div class="m-jdjs">
<div class="m-jdjs-js">
<div class="m-table">
<table class="table" border="0" cellspacing="0" cellpadding="0">
<col :align="item.align" :width="item.width" :key="'col' + index" v-for="(item, index) in colList" />
<thead>
<tr class="table-header">
<th class="table-header-th" v-for="item in header" :key="item">
{{ item }}
</th>
</tr>
</thead>
</table>
<el-scrollbar :style="{maxHeight:treeHeight}" class="g-scrollar">
<table class="table" border="0" cellspacing="0" cellpadding="0">
<col :align="item.align" :width="item.width" :key="'col' + index" v-for="(item, index) in colList" />
<tbody class="table-body" style="width: 1886px;">
<!-- <tr class="table-body-tr">
<td class="td">
报警时间
</td>
<td class="td">
报警类型
</td>
<td class="td">
报警状态
</td>
<td class="td">
设备位置
</td>
<td class="td">
操作</td>
</tr> -->
<tr class="table-body-tr" v-for="(item, index) in list" :key="index" >
<td class="td">
<div>{{ item.date }}</div>
</td>
<td class="td">
<div>{{ item.baoxiu }}</div>
</td>
<td class="td">
<div>{{ item.type }}</div>
</td>
<td class="td">
<div>{{ item.address }}</div>
</td>
<td class="table-header-th" style="color: #007FF1;">
<div @click="getWaring(item)">查看</div> </td>
</tr>
</tbody>
<!-- </div> -->
</table>
</el-scrollbar>
<!-- <el-table :data="tableData" stripe style="width: 428px">
<el-table-column prop="date" label="日期">
</el-table-column>
<el-table-column prop="name" label="姓名">
</el-table-column>
<el-table-column prop="address" label="地址">
</el-table-column>
<el-table-column label="操作" width="100">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table> -->
</div>
<!-- <video src="../image/123.mp4" />
<video src="../image/123.mp4" />
<video src="../image/123.mp4" />
<video src="../image/123.mp4" /> -->
</div>
<warning :showInfo="showInfo" :warnItem="warnItem" @close="close" @handleCancle="showInfo = false"></warning>
</div>
</template>
<script>
import warning from "@/views/dataBoard/IoTPerception/more/warning.vue";
import { mapGetters} from "vuex";
import titleSmall from "@/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue";
import * as echarts from "echarts";
import resiCategoryMap from "@/views/business/resi-category-map.js";
import {requestPost} from "@/js/dai/request";
export default {
name: "jdjs",
props: {
currentLevelData: {
type: Object,
default: {},
},
},
data() {
return {
colList: [
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "25%",
},
{
align: "left",
width: "15%",
},
],
header: [
"保修时间",
"保修类型",
"报警状态",
"设备位置",
"操作",
],
list: [],
equipmentListType: [],
equipmentType: '',
orgId: this.$store.state.chooseArea.chooseName,
report: "",
overview: "",
loading: false,
rffxDate:'',
event12345Num:"",
provinceSatisfactionNum:"",
selfInspectNum:"",
typeConditionList: [
{
label: "本月",
value: 1,
},
{
label: "上月",
value: 2,
},
{
label: "近三月",
value: 3,
},
{
label: "近半年",
value: 4,
},
{
label: "近一年",
value: 5,
},
],
typeCondition:5,
endTime:"",
startTime:"",
showInfo:false,
warnItem:{},
};
},
watch: {
currentLevelData(val) {
if (val.orgId) {
this.getReport(val);
this.getData();
this.getChartData(val);
}
},
},
computed: {
treeHeight() {
return this.$store.state.inIframe ? this.clientHeight - 385 + this.iframeHeight + "px" : this
.clientHeight - 385 + "px";
},
treeWidth() {
return document.documentElement.clientWidth;
},
...mapGetters(["clientHeight", "iframeHeight"]),
},
mounted() {
this.getList()
},
components: {
titleSmall,warning
},
methods: {
async getList(){
let {data,code} = await requestPost('/actual/base/equipmentInspectRecord/page',{agencyId:this.$store.state.user.agencyId})
if(code === 0){
this.list = data.list.map(item=>({date:item.inspectTime,baoxiu:item.inspectName,type:item.status,address:'东明社区160号',inspectCode:item.inspectCode?item.inspectCode:'',id:item.id}))
}
},
close(){this.showInfo=false},
getWaring(item){
this.warnItem = item;
this.showInfo=true
},
getReport({ orgId, orgLevel }) {
this.$http
.get(
"/actual/base/streetOverview/communityOverview?orgId=" +
orgId +
"&level=" +
orgLevel
)
.then(({ data: { data } }) => {
this.overview = data;
});
this.$http
.get(
"/actual/base/streetOverview/summaryReport?orgId=" +
orgId +
"&level=" +
orgLevel
)
.then(({ data: { data } }) => {
this.report = data;
});
},
getChartData({ orgId, orgLevel }) {
this.loading = true
this.$http.get('/actual/base/resiCategory/categoryCountList?orgId=' +
orgId +
"&level=" +
orgLevel
).then(({data: {data}}) => {
this.initCharts(data)
})
},
initCharts(data) {
let div = document.getElementById('zdgz');
this.myChart = echarts.init(div);
let chartData = data.categoryList.map((item) => {
return {
name: resiCategoryMap[item.categoryName] || "",
count: item.categoryCount,
};
}).slice(0,8);
let xData = chartData.map(item=>item.name);
let yData = chartData.map(item=>item.count)
let color = [[
{
offset: 0,
color: 'rgba(0, 84, 255, 0)' // 0% 处的颜色
},
{
offset: 1,
color: 'rgba(38, 244, 248, 1)' // 100% 处的颜色
}
]]
let num = yData
const max = Math.max(...num)
let barArray = new Array(xData.length).fill((parseInt(max / 100) + 1) * 100)
var option = {
title: {
show: false,
text: '',
x: 'center',
top: '18px',
textStyle: {
color: '#333333',
fontWeight: 500,
fontSize: 12,
},
},
tooltip: {
trigger: 'axis',
backgroundColor: 'rgba(13,33,71,0.5)',
borderColor: 'rgba(143,174,252,0.6)',
padding: 8,
textStyle: {
color: '#fff',
},
formatter: function (params) {
var res = '<div"><p>' + params[0].name + ''+params[0].value + '</p></div>'
return res;
},
},
/* dataZoom: [
{
"type": "slider",
"start": 0,
"end": parseInt((5 / xData.length) * 10) / 10 * 100,
"height": 10,
"bottom": 0,
"showDetail": false,
"showDataShadow": false,
"borderColor": "transparent"
}
],*/
grid: {
top: '18%',
left: '2%',
right: '4%',
bottom: '8%',
containLabel: true
},
xAxis: [
{
type: 'category',
axisTick: {
show: false,
},
splitLine: {
show: false,
},
axisLine: {
lineStyle: {
color: '#323c41'
}
},
axisLabel: {
align: 'center',
interval: 0,
textStyle: {
fontSize: 12,
color: '#A3B9DA'
}
},
boundaryGap: true,
data: xData,
}, {
type: 'category',
data: xData,
axisLine: {show: false},
axisLabel: {
show: false,
},
boundaryGap: true,
}
],
yAxis: [
{
type: 'value',
name: '单位',
nameLocation: 'end',
splitLine: {
show: true,
lineStyle: {
color: 'rgba(4,187,255,0.18)',
type: 'dashed'
},
},
nameTextStyle: {
color: '#A3B9DA',
textStyle: {
fontSize: 12
},
align: 'right',
padding: [0, 5, -5, 5],
},
axisLabel: {
show: true,
color: '#A3B9DA',
textStyle: {
fontSize: 12
},
},
axisTick: {
show: false
}
}
],
series: [
{
name: "",
type: 'bar',
barWidth: 20,
itemStyle: {
opacity: 1,
color: new echarts.graphic.LinearGradient(
0,
1,
0,
0,
color[0],
false
)
},
data: yData,
},
{
name: '',
type: 'bar',
barWidth: 40,
barGap: '-60%',
data: barArray,
itemStyle: {
normal: {
color: 'rgba(22,153,152, 0.1)'
}
},
zlevel: -1,
xAxisIndex: 1,
}
],
};
this.myChart.setOption(option);
window.addEventListener("resize", () => this.myChart.resize());
this.loading = false
},
getData() {
this.loading = true;
let {startTime,endTime } = this
let params = {
level: this.currentLevelData.orgLevel,
orgId: this.currentLevelData.orgId,
startTime,
endTime,
};
this.$http
.get(
"/governance/satisfactionOverview/satisfactionFollowGroup?" +
this.$paramsFormat(params)
)
.then(({ data: { data } }) => {
this.event12345Num = data.event12345Num;
this.provinceSatisfactionNum = data.provinceSatisfactionNum;
this.selfInspectNum = data.selfInspectNum;
this.loading = false;
});
},
timeChange() {
let startTime = "",
endTime = "";
if (this.typeCondition === 1) {
startTime = this.$moment().startOf("month").format("YYYY-MM-DD");
}
if (this.typeCondition === 2) {
startTime = this.$moment().subtract(1, "months").startOf("month").format("YYYY-MM-DD");
}
if (this.typeCondition === 3) {
startTime = this.$moment().subtract(2, "months").startOf("month").format("YYYY-MM-DD");
}
if (this.typeCondition === 4) {
startTime = this.$moment().subtract(5, "months").startOf("month").format("YYYY-MM-DD");
}
if (this.typeCondition === 5) {
startTime = this.$moment().subtract(11, "months").startOf("month").format("YYYY-MM-DD");
}
if (this.typeCondition === 2) {
endTime = this.$moment().subtract(1, "months").endOf("month").format("YYYY-MM-DD");
} else {
endTime = this.$moment().endOf("month").format("YYYY-MM-DD");
}
this.startTime = startTime;
this.endTime = endTime;
this.getData();
},
},
};
</script>
<style lang="scss" src="./index.scss" scoped />
<style lang="scss" scoped>
.el-table .thead{
color: #c0c4cd !important;
background: #0d2b57 !important;
}
/deep/ .el-input__inner {
width: 110px !important;
height: 32px !important;
background: #021c49 !important;
border: 1px solid #125aaa !important;
// border-radius: 12px !important;
color: #a0cdff;
}
/deep/ .el-input__icon {
line-height: 24px !important;
color: #a0cdff;
}
.f-hflex{
width: 100px;
}
.f-flex{
margin-top: 20px;
}
.f-darkGray{
margin-top: 10px;
}
.event-statistics {
margin-bottom: 27px;
}
.m-table {
margin-top: 5px;
// overflow: hidden;
min-height: 200px;
.table {
box-sizing: border-box;
width: 100%;
border: none;
table-layout: fixed;
&-header {
width: 100%;
// height: 56px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 20px;
&-th {
text-align: left;
border: none;
padding: 10px 5px 10px 24px;
// width: calc(100% / 5);
}
}
&-body {
box-sizing: border-box;
width: 100%;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 20px;
&-tr {
box-sizing: border-box;
width: 100%;
min-height: 56px;
.td {
box-sizing: border-box;
text-align: left;
border: none;
padding: 18px 5px 18px 24px;
>div {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-wrap: normal;
}
a {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #1a95ff;
line-height: 20px;
cursor: pointer;
}
}
}
&-tr:nth-child(2n-1) {
background: rgba(26, 149, 255, 0.15);
}
// &-tr:hover {
// background: url("../../../../assets/img/modules/visual/hover-bac.png")
// no-repeat center;
// background-size: 100% 100%;
// }
}
/deep/ .el-scrollbar__wrap {
width: 100% !important;
// overflow-x: hidden !important;
}
}
.g-scrollar {
width: 100%;
// overflow-x: hidden;
overflow-y: auto;
}
.orange {
color: #FFAA00
}
.green {
color: #04C790
}
.table-status {
position: relative;
height: 300px;
// 暂无数据
.no-data {
&-img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 120px;
}
}
}
}
</style>