|
@@ -0,0 +1,298 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <div class="left_004">
|
|
|
+ <div class="left_003" style="font-weight: 800;font-size: 20px;">监测区域</div>
|
|
|
+ <div class="left_003">
|
|
|
+ <div class="sel_wrap">
|
|
|
+ <select class="select" id="c_city" v-model="selectValue" @change="changeProduct($event)">
|
|
|
+ <!-- 使用了一个option标签来选择区域 -->
|
|
|
+ <option value="a">请选择监测区域</option>
|
|
|
+ <option v-for="(item,index) in selectData" :key="index" :value="index">{{item.name}}</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="width: 90%;border: white 1px solid;margin: 0 auto;">
|
|
|
+ <h1 class="left_tile">
|
|
|
+ 基本信息
|
|
|
+ </h1>
|
|
|
+ <!-- 使用for循环输出selectData 左列为属性,右列为具体值-->
|
|
|
+ <div v-for="(item,index) in leftData" :key="index" class="left_002">
|
|
|
+ <div class="left_001">{{ item.name }}</div>
|
|
|
+ <div class="left_006">{{ item.value }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <br/>
|
|
|
+ <br/>
|
|
|
+
|
|
|
+ <div style="width: 90%;border: white 1px solid;margin: 0 auto; ">
|
|
|
+ <p class="left_tile">
|
|
|
+ 区域评分
|
|
|
+ </p>
|
|
|
+ <el-row :gutter="16" style="margin-top: 10px;">
|
|
|
+ <el-col span="4" style="text-align: center">
|
|
|
+ 总分
|
|
|
+ </el-col>
|
|
|
+ <el-col span="20">
|
|
|
+
|
|
|
+ <!-- <Progress :percent="bottomData.totalScore" :stroke-width="20" :status="bottomData.totalScore>50?'':'wrong'">
|
|
|
+ <Icon type="checkmark-circled"></Icon>
|
|
|
+ <span style="font-size: 16px;" >{{bottomData.totalScore}}分</span>
|
|
|
+ </Progress> -->
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <div style="padding: 10px;">分项得分</div>
|
|
|
+ <div id="zaihai" style="width: 90%;height: 150px;"> </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ name: "left",
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ selectValue:'a',
|
|
|
+ // 基本信息区域
|
|
|
+ leftData: [
|
|
|
+ {
|
|
|
+ name: '名称',
|
|
|
+ value: ''
|
|
|
+ },{
|
|
|
+ name: '面积',
|
|
|
+ value: ''
|
|
|
+ },{
|
|
|
+ name: '人员数量',
|
|
|
+ value: ''
|
|
|
+ },{
|
|
|
+ name: '设备数量',
|
|
|
+ value: ''
|
|
|
+ },{
|
|
|
+ name: '工作用途',
|
|
|
+ value: ''
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ // 安全评分使用进度条区域数据
|
|
|
+ bottomData:{
|
|
|
+ totalScore:0, // string 总体评分
|
|
|
+ personnelScore:'', // string 人员评分
|
|
|
+ equipmentScore:'', // string 设备评分
|
|
|
+ safetyScore:'', // string 安全评分
|
|
|
+ },
|
|
|
+ viewData:[ {
|
|
|
+ value: 30,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#1c42e3'
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ value: 60,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#00a93e'
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ value: 90,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#a90000'
|
|
|
+ }
|
|
|
+ },],
|
|
|
+ // api加载失败时,default值
|
|
|
+ selectData:[{name:'fdf'}],
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.getTableData();
|
|
|
+ },
|
|
|
+ methods:{
|
|
|
+ //初始化数据
|
|
|
+ getTableData() {
|
|
|
+ let _data = { };
|
|
|
+ // 使用axios通过后端提供api请求数据
|
|
|
+ this.$get("index/areas", _data).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.selectData = res.data || [];
|
|
|
+ } else {
|
|
|
+ console.error(res.msg);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ changeProduct(event) {
|
|
|
+ this.selectValue = event.target.value; //获取当前选中的区域ID,即option对应的ID值
|
|
|
+ this.$emit('fatherMethodData',this.selectData[this.selectValue].areaId); //fatherMethod父组件方法
|
|
|
+ //'areaUnit'
|
|
|
+ let areaAcreage=this.selectData[this.selectValue].areaUnit ==='面积' ? "㎡" : 'm'
|
|
|
+ this.leftData=[
|
|
|
+ {
|
|
|
+ name: '名称',
|
|
|
+ value: this.selectData[this.selectValue].name
|
|
|
+ },{
|
|
|
+ name: this.selectData[this.selectValue].areaUnit ==='面积' ? "面积" : '长度',
|
|
|
+ value: JSON.stringify(this.selectData[this.selectValue].areaAcreage)+areaAcreage
|
|
|
+ },{
|
|
|
+ name: '人员数量',
|
|
|
+ value: this.selectData[this.selectValue].personnelNumber+'人'
|
|
|
+ },{
|
|
|
+ name: '设备数量',
|
|
|
+ value: this.selectData[this.selectValue].equipmentNumber+'台'
|
|
|
+ },{
|
|
|
+ name: '工作用途',
|
|
|
+ value: this.selectData[this.selectValue].workPurpose
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ sessionStorage.setItem("areaId",this.selectData[this.selectValue].areaId)
|
|
|
+ let _data = {
|
|
|
+ areaId:this.selectData[this.selectValue].areaId
|
|
|
+ };
|
|
|
+ this.$get("index/areas/" + sessionStorage.getItem('areaId') + "/scores", _data).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.bottomData=res.data
|
|
|
+ this.viewData=[
|
|
|
+ {
|
|
|
+ value: this.bottomData.personnelScore,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#1c42e3'
|
|
|
+ }
|
|
|
+ },{
|
|
|
+ value: this.bottomData.equipmentScore,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#00a93e'
|
|
|
+ }
|
|
|
+ },{
|
|
|
+ value: this.bottomData.safetyScore,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#a90000'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ this.showIview();
|
|
|
+ } else {
|
|
|
+ console.error(res.msg);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //eCharts
|
|
|
+ showIview() {
|
|
|
+ let myChart = this.$echarts.init(
|
|
|
+ document.getElementById("zaihai"), 'dark'
|
|
|
+ );
|
|
|
+ myChart.setOption(
|
|
|
+ {
|
|
|
+ darkMode: true,
|
|
|
+ backgroundColor: '#100C2A',
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'axis',
|
|
|
+ axisPointer: {
|
|
|
+ type: 'shadow'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ left: '3%',
|
|
|
+ right: '4%',
|
|
|
+ bottom: '2%',
|
|
|
+ top:'10%',
|
|
|
+ containLabel: true
|
|
|
+ },
|
|
|
+ xAxis: [
|
|
|
+ {
|
|
|
+ type: 'category',
|
|
|
+ data: ['人员分', '设备分', '安全分',],
|
|
|
+ axisTick: {
|
|
|
+ alignWithLabel: true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ yAxis: [
|
|
|
+ {
|
|
|
+ type: 'value'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: '得分',
|
|
|
+ type: 'bar',
|
|
|
+ barWidth: '30%',
|
|
|
+ data:this.viewData
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ true
|
|
|
+ );
|
|
|
+ myChart.resize();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.left_001 {
|
|
|
+ text-align: left;
|
|
|
+ font-size: 16px;
|
|
|
+ padding: 5px;
|
|
|
+}
|
|
|
+.left_006 {
|
|
|
+ text-align: right;
|
|
|
+ font-size: 16px;
|
|
|
+ padding: 5px;
|
|
|
+}
|
|
|
+.left_002 {
|
|
|
+ display: grid;
|
|
|
+ color: #2db7f5;
|
|
|
+ grid-template-columns: 1fr 1fr;
|
|
|
+}
|
|
|
+.left_002:nth-child(odd){
|
|
|
+ background-color:#312D4A;
|
|
|
+}
|
|
|
+.left_002:nth-child(even){
|
|
|
+ background-color:#100C2A;
|
|
|
+}
|
|
|
+.left_003 {
|
|
|
+ text-align: left;
|
|
|
+ font-size: 16px;
|
|
|
+ padding: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.left_004 {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: 1fr 1fr;
|
|
|
+ border-bottom: white 1px solid;
|
|
|
+ margin-bottom: 15px;
|
|
|
+}
|
|
|
+
|
|
|
+.left_tile {
|
|
|
+ border-bottom: white 1px solid;
|
|
|
+ height: 40px;
|
|
|
+ font-size: 18px;
|
|
|
+ line-height: 2;
|
|
|
+ padding: 5px;
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
+
|
|
|
+.sel_wrap {
|
|
|
+ height: 40px;
|
|
|
+ color: #a1a1a1;
|
|
|
+ font-size: 16px;
|
|
|
+ border: 1px solid #E4E4E4;
|
|
|
+ cursor: pointer;
|
|
|
+ position: relative;
|
|
|
+ _filter: alpha(opacity=0);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+.sel_wrap label {
|
|
|
+ padding-left: 10px;
|
|
|
+ font-size: 16px;
|
|
|
+ z-index: 2;
|
|
|
+ color: #a1a1a1;
|
|
|
+ line-height: 40px;
|
|
|
+ height: 40px;
|
|
|
+ display: block;
|
|
|
+}
|
|
|
+
|
|
|
+.sel_wrap .select {
|
|
|
+ width: 100%;
|
|
|
+ height: 40px;
|
|
|
+ font-size: 16px;
|
|
|
+ color: white;
|
|
|
+ background-color: #312D4A;
|
|
|
+}
|
|
|
+</style>
|