From 47a63dcdcd1889bd806208dc79937cd8112b8e38 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 19 十一月 2024 16:41:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
admin/src/components/business/OperaMemberWindow.vue | 2
admin/src/views/platform/smokebox.vue | 118 ++++++++++++++
screen/src/api/index.js | 4
admin/src/components/business/OperaPlatformSmokeWindow.vue | 92 +++++++++++
screen/src/views/EnergyConsum.vue | 258 +++++++++++++++++++------------
screen/src/views/SecurityControl.vue | 4
admin/.env.development | 2
7 files changed, 376 insertions(+), 104 deletions(-)
diff --git a/admin/.env.development b/admin/.env.development
index 8a58ac8..3dfdc65 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -2,7 +2,7 @@
NODE_ENV = 'development'
#VUE_APP_API_URL = 'http://localhost:10010'
-# VUE_APP_API_URL = 'http://192.168.0.103:10010'
+# VUE_APP_API_URL = 'http://192.168.0.113:10010'
# VUE_APP_API_URL = 'http://192.168.0.173/gateway_interface'
VUE_APP_API_URL = 'http://10.50.250.253:8088/gateway_interface'
diff --git a/admin/src/components/business/OperaMemberWindow.vue b/admin/src/components/business/OperaMemberWindow.vue
index 8800e11..fdc5fa7 100644
--- a/admin/src/components/business/OperaMemberWindow.vue
+++ b/admin/src/components/business/OperaMemberWindow.vue
@@ -164,6 +164,7 @@
openCamera() {
this.paisheModal = true
this.isShowCamera = true
+ this.blobFileCamera = ''
const that = this
this.$nextTick(() => {
var mediaOpts = { audio: false, video: true }
@@ -201,6 +202,7 @@
// 鐐瑰嚮鎷嶆憚
setImage() {
const that = this
+ this.blobFileCamera = ''
that.isShowCamera = false
const video = document.querySelector('#videoCamera')
const canvas = document.querySelector('#canvasCamera')
diff --git a/admin/src/components/business/OperaPlatformSmokeWindow.vue b/admin/src/components/business/OperaPlatformSmokeWindow.vue
new file mode 100644
index 0000000..48ff8d0
--- /dev/null
+++ b/admin/src/components/business/OperaPlatformSmokeWindow.vue
@@ -0,0 +1,92 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="50%"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ >
+ <el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="鏈堜唤" prop="timeInfo">
+ <el-date-picker
+ v-model="form.timeInfo"
+ format="yyyy-MM"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ type="month"
+ />
+ </el-form-item>
+ <el-form-item label="鐑熺閲忥紙涓級锛�" prop="num" >
+ <el-input type="number" v-model="form.num" placeholder="璇疯緭鍏ョ儫绠遍噺锛堜釜锛�" v-trim/>
+ </el-form-item>
+ <el-form-item label="璇存槑锛�" prop="content">
+ <el-input type="textarea" v-model="form.content" placeholder="璇疯緭鍏ヨ鏄�" v-trim/>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { allList } from '@/api/platform/platformGroup'
+export default {
+ name: 'OperaPlatformReasonWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ groupList: [],
+ form: {
+ id: null,
+ content: null,
+ num: null,
+ timeInfo: '',
+ type:3
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ timeInfo: [{ required: true, message: '璇疯緭閫夋嫨鏈堜唤 ', trigger: 'blur' }],
+ num: [{ required: true, message: '璇疯緭鍏ョ儫绠遍噺锛堜釜锛� ', trigger: 'blur' }]
+ }
+ }
+ },
+ created () {
+ this.config({
+ api: '/platform/platformWaterGas',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ }
+ }
+}
+</script>
+<style scoped>
+.labelTip{
+ font-size: 12px;
+ color: #666666;
+}
+</style>
diff --git a/admin/src/views/platform/smokebox.vue b/admin/src/views/platform/smokebox.vue
new file mode 100644
index 0000000..95917eb
--- /dev/null
+++ b/admin/src/views/platform/smokebox.vue
@@ -0,0 +1,118 @@
+<template>
+ <TableLayout :permissions="['business:platformwatergas:query']">
+ <SearchFormCollapse slot="search-form" :need-more="false">
+ <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
+ <el-form-item title="璇烽�夋嫨骞存湀鏃堕棿" label="" >
+ <el-date-picker
+ @change="search"
+ clearable
+ v-model="searchForm.timeInfo"
+ format="yyyy-MM"
+ placeholder="璇烽�夋嫨骞存湀鏃堕棿"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ type="month"
+ />
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ </SearchFormCollapse>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:platformwatergas:create','business:platformwatergas:delete','business:notice:exportExcel']">
+ <li><el-button type="primary" @click="$refs.OperaPlatformSmokeWindow.open('鏂板缓鐑熺')" icon="el-icon-plus" v-permissions="['business:platformwatergas:create']">鏂板缓</el-button></li>
+ <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button></li>
+ <el-button type="primary" :loading="isWorking.export" v-permissions="['business:notice:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
+ </ul>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="timeInfo" label="浣跨敤鏈堜唤" fixed min-width="100px">
+ <template slot-scope="{row}">
+ {{(row.timeInfo || row.timeInfo.length >7 )?row.timeInfo.substr(0,7):'-'}}
+ </template>
+ </el-table-column>
+ <el-table-column prop="num" label="鐑熺閲忥紙涓級" fixed min-width="150px"></el-table-column>
+ <el-table-column prop="content" label="璇存槑" min-width="120px"></el-table-column>
+ <el-table-column prop="editDate" label="鏈�杩戞搷浣滄椂闂�" min-width="140px"></el-table-column>
+ <el-table-column
+ v-if="containPermissions(['business:platformwatergas:update', 'business:platformwatergas:delete'])"
+ label="鎿嶄綔"
+ align="center"
+ min-width="150"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.OperaPlatformSmokeWindow.open('缂栬緫鐑熺', row)" icon="el-icon-edit" v-permissions="['business:platformwatergas:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:platformwatergas:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaPlatformSmokeWindow ref="OperaPlatformSmokeWindow" @success="handlePageChange"/>
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import SearchFormCollapse from '@/components/common/SearchFormCollapse'
+import Pagination from '@/components/common/Pagination'
+import OperaPlatformSmokeWindow from '@/components/business/OperaPlatformSmokeWindow.vue'
+import { allList } from '@/api/platform/platformGroup'
+export default {
+ name: 'Platform',
+ extends: BaseTable,
+ components: { SearchFormCollapse, TableLayout, Pagination, OperaPlatformSmokeWindow },
+ data () {
+ return {
+ groupList: [],
+ // 鎼滅储
+ working: false,
+ working1: false,
+ searchForm: {
+ timeInfo: '',
+ type: 3
+ }
+ }
+ },
+
+ created () {
+ this.config({
+ module: '鐢ㄦ按淇℃伅琛�',
+ api: '/platform/platformWaterGas',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.search()
+ this.loadGroupList()
+ },
+ methods: {
+ loadGroupList () {
+ allList({})
+ .then(res => {
+ this.groupList = res || []
+ })
+ },
+ changeStatus (e, row) {
+ this.api.updateStatusById({
+ id: row.id,
+ status: e
+ })
+ }
+ }
+}
+</script>
diff --git a/screen/src/api/index.js b/screen/src/api/index.js
index ee208df..d2317c6 100644
--- a/screen/src/api/index.js
+++ b/screen/src/api/index.js
@@ -142,6 +142,10 @@
export const zxcenterData = (data) => {
return request('visitsAdmin/cloudService/board/api/energy/centerData', data)
}
+// 鑳借�楃湅鏉� 鐢ㄧ數鎬昏兘鑰楀悓姣斻�佺幆姣斿拰鍖哄煙鐢ㄧ數閲忛泦鍚�
+export const zxenergyRegionData = (data) => {
+ return request('visitsAdmin/cloudService/board/api/energy/energyRegionData', data)
+}
// 鑳借�楃湅鏉� 鏈堣兘鑰椼�佹补鑰楀垎鏋�
export const zxenergyDataList = (data) => {
return request('visitsAdmin/cloudService/board/api/energy/energyDataList', data)
diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue
index b51bc3d..3fa773b 100644
--- a/screen/src/views/EnergyConsum.vue
+++ b/screen/src/views/EnergyConsum.vue
@@ -25,7 +25,8 @@
<img src="@/assets/images/nenghao_ic1.png" class="co2" alt="">
<div>
<div class="name">鏈勾绱寰幆鐑熺</div>
- <div><span class="num" v-if="data1.smokeBoxTotal">{{ data1.smokeBoxTotal.toLocaleString()
+ <div><span class="num" v-if="data1.smokeBoxTotal || data1.smokeBoxTotal == 0">{{
+ data1.smokeBoxTotal.toLocaleString()
}}</span><span>鍙�</span></div>
</div>
</div>
@@ -41,6 +42,9 @@
<div class="load_wrap">
<div class="loadRef"></div>
</div>
+ <!-- <div v-show="data4.length == 0" class="empty_wrap load_wrap">
+ <img src="@/assets/images/default_empty.png" alt="">
+ </div> -->
</div>
<div class="left_box_three">
<div class="com_header">
@@ -51,7 +55,7 @@
<div class="tabs">
<div class="tab" :class="{ active: activeTab2 == 0 }" @click="tabsClick2(0)">鐢ㄦ按</div>
<div class="separate"></div>
- <div class="tab" :class="{ active: activeTab2 == 2 }" @click="tabsClick2(2)">鐢ㄧ數</div>
+ <div class="tab" :class="{ active: activeTab2 == 3 }" @click="tabsClick2(3)">鐢ㄧ數</div>
<div class="separate"></div>
<div class="tab" :class="{ active: activeTab2 == 1 }" @click="tabsClick2(1)">鐢ㄦ皵</div>
</div>
@@ -70,17 +74,32 @@
<img class="icon" src="@/assets/images/ic_yongdian@2x.png" alt="" />
<div class="content">
<div class="name">涓婃湀鐢ㄧ數(kw路h)</div>
- <div class="num" v-if="data1.electricityQuantity || data1.electricityQuantity == 0">{{ data1.electricityQuantity.toLocaleString() }}
+ <div class="num" v-if="data1.electricityQuantity">{{
+ data1.electricityQuantity.total.toLocaleString() }}
</div>
</div>
</div>
- <div class="static">
+ <div class="static" v-if="data1.electricityQuantity">
<span class="lab">鍚屾瘮</span>
- <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
- <span class="val">{{ data1.electricityYear }}</span>
+ <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.sameNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val"
+ v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
+ Math.abs(((data1.electricityQuantity.totalNum -
+ data1.electricityQuantity.sameNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
+ }}%</span>
+ <span class="val" v-else>-</span>
<span class="lab">鐜瘮</span>
- <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val">{{ data1.gasMonth }}</span>
+ <img v-if="data1.electricityQuantity.totalNum > data1.electricityQuantity.ringNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val"
+ v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
+ Math.abs(((data1.electricityQuantity.totalNum -
+ data1.electricityQuantity.ringNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
+ }}%</span>
+ <span class="val" v-else>-</span>
</div>
</div>
<div class="item">
@@ -88,16 +107,26 @@
<img class="icon" src="@/assets/images/ic_yongshui@2x.png" alt="" />
<div class="content">
<div class="name">涓婃湀鐢ㄦ按(t)</div>
- <div class="num" v-if="data1.waterQuantity || data1.waterQuantity == 0">{{ data1.waterQuantity.toLocaleString() }}</div>
+ <div class="num" v-if="data1.waterQuantity">{{ data1.waterQuantity.total.toLocaleString() }}</div>
</div>
</div>
- <div class="static">
+ <div class="static" v-if="data1.waterQuantity">
<span class="lab">鍚屾瘮</span>
- <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
- <span class="val">{{ data1.waterMonth }}</span>
+ <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.sameNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val" v-if="data1.waterQuantity.totalNum && data1.waterQuantity.totalNum != 0">{{
+ Math.abs(((data1.waterQuantity.totalNum -
+ data1.waterQuantity.sameNum) / data1.waterQuantity.totalNum * 100).toFixed(1)) }}%</span>
+ <span class="val" v-else>-</span>
<span class="lab">鐜瘮</span>
- <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val">{{ data1.waterYear }}</span>
+ <img v-if="data1.waterQuantity.totalNum > data1.waterQuantity.ringNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val" v-if="data1.waterQuantity.totalNum && data1.waterQuantity.totalNum != 0">{{
+ Math.abs(((data1.waterQuantity.totalNum -
+ data1.waterQuantity.ringNum) / data1.waterQuantity.totalNum * 100).toFixed(1)) }}%</span>
+ <span class="val" v-else>-</span>
</div>
</div>
<div class="item">
@@ -105,62 +134,76 @@
<img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" />
<div class="content">
<div class="name">涓婃湀鐢ㄦ皵(t)</div>
- <div class="num" v-if="data1.gasQuantity || data1.gasQuantity == 0">{{ data1.gasQuantity.toLocaleString() }}</div>
+ <div class="num" v-if="data1.gasQuantity">{{ data1.gasQuantity.total.toLocaleString() }}</div>
</div>
</div>
- <div class="static">
+ <div class="static" v-if="data1.gasQuantity">
<span class="lab">鍚屾瘮</span>
- <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
- <span class="val">{{ data1.gasMonth }}</span>
+ <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.sameNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
+ Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.sameNum) / data1.gasQuantity.totalNum
+ * 100).toFixed(1))
+ }}%</span>
+ <span class="val" v-else>-</span>
<span class="lab">鐜瘮</span>
- <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val">{{ data1.gasYear }}</span>
+ <img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.ringNum" class="icon"
+ src="@/assets/images/ic_up.webp" alt="" />
+ <img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
+ <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
+ Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.ringNum) / data1.gasQuantity.totalNum
+ * 100).toFixed(1))
+ }}%</span>
+ <span class="val" v-else>-</span>
</div>
</div>
</div>
</div>
<div class="center_box_two">
<img class="bg" src="@/assets/images/img_city@2x.png" alt="" />
- <div class="item item1">
- <div class="num fs_linear">{{ data1.workHouseQuantity || 0 }}<span class="unit">kw路h</span></div>
- <div class="name">鑱斿悎宸ユ埧</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item2">
- <div class="num fs_linear">{{ data1.officeQuantity || 0 }}<span class="unit">kw路h</span></div>
- <div class="name">鍔炲叕妤�</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item3">
- <div class="num fs_linear">{{ data1.parkQuantity || 0 }}<span class="unit">kw路h</span></div>
- <div class="name">鐗╂祦鍥尯</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item4">
- <div class="num fs_linear">{{ data1.productHouseQuantity || 0 }}<span class="unit">kw路h</span></div>
- <div class="name">鎴愬搧搴�</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="item item5">
- <div class="num fs_linear">{{ data1.powerQuantity || 0 }}<span class="unit">kw路h</span></div>
- <div class="name">鍔ㄥ姏绔欐埧</div>
- <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
- </div>
- <div class="bottom_wrap">
+ <template v-if="data6 && data6.secondRegionDataList && data6.secondRegionDataList.length > 0">
+ <div class="item item1">
+ <div class="num fs_linear">{{ data6.secondRegionDataList[0].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6.secondRegionDataList[0].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item2" v-if="data6.secondRegionDataList.length > 1">
+ <div class="num fs_linear">{{ data6.secondRegionDataList[1].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6.secondRegionDataList[1].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item3" v-if="data6.secondRegionDataList.length > 2">
+ <div class="num fs_linear">{{ data6.secondRegionDataList[2].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6.secondRegionDataList[2].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item4" v-if="data6.secondRegionDataList.length > 3">
+ <div class="num fs_linear">{{ data6.secondRegionDataList[3].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6.secondRegionDataList[3].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ <div class="item item5" v-if="data6.secondRegionDataList.length > 4">
+ <div class="num fs_linear">{{ data6.secondRegionDataList[4].value }}<span class="unit">kw路h</span></div>
+ <div class="name">{{ data6.secondRegionDataList[4].name }}</div>
+ <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
+ </div>
+ </template>
+ <div class="bottom_wrap" v-if="data1.yesterdayElectricity">
<div class="bottom bottom1">
- <div class="num fs_linear">{{ data1.yesterdayElectricity || 0 }}</div>
+ <div class="num fs_linear">{{ data1.yesterdayElectricity.total || 0 }}</div>
<div class="name">鏄ㄦ棩鐢ㄧ數</div>
<div class="unit">kw路h</div>
<img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
</div>
<div class="bottom bottom2">
- <div class="num">{{ data1.todayElectricity || 0 }}</div>
+ <div class="num">{{ data1.todayElectricity.total || 0 }}</div>
<div class="name">浠婃棩鐢ㄧ數</div>
<div class="unit">kw路h</div>
<img src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
</div>
<div class="bottom bottom3">
- <div class="num fs_linear">{{ data1.monthElectricity || 0 }}</div>
+ <div class="num fs_linear">{{ data1.monthElectricity.total || 0 }}</div>
<div class="name">鏈湀鐢ㄧ數</div>
<div class="unit">kw路h</div>
<img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
@@ -181,7 +224,8 @@
<img src="@/assets/images/ic_co2@2x.png" class="co2" alt="">
<div>
<div class="name">鏈湀绱纰虫帓鏀�</div>
- <div><span class="num" v-if="data1.carbon">{{ data1.carbon.toLocaleString() }}</span><span>鍚�</span>
+ <div><span class="num" v-if="data1.carbon || data1.carbon == 0">{{ data1.carbon.toLocaleString()
+ }}</span><span>鍚�</span>
</div>
</div>
</div>
@@ -195,15 +239,21 @@
<div class="tabs">娌硅�楋細L</div>
<img src="@/assets/images/title@2x.png" class="bg" alt="" />
</div>
- <div class="list">
- <div class="line" v-for="item, i in data3">
- <div class="top"><span v-if="i < 3">top</span>{{ i }}</div>
- <div class="id_card">{{ item.carNo }}</div>
- <div class="wrap">
- <ChargeRate :rate="item.rate" :color="i > 2 ? 'cyan' : '#e3a83a'" />
+ <div v-if="data3 && data3.length > 0" class="list">
+ <template v-for="item, i in data3">
+ <div v-if="i < 6" class="line" >
+ <div class="top"><span v-if="i < 3">top</span>{{ i + 1 }}</div>
+ <div class="id_card">{{ item.carNo }}</div>
+ <div class="wrap">
+ <ChargeRate :rate="item.rate" :color="i > 2 ? 'cyan' : '#e3a83a'" />
+ </div>
+ <div class="num">{{ item.quantity }}</div>
</div>
- <div class="num">{{ item.quantity }}</div>
- </div>
+ </template>
+
+ </div>
+ <div v-if="data3.length == 0" class="empty_wrap list">
+ <img src="@/assets/images/default_empty.png" alt="">
</div>
</div>
<div class="right_box_three">
@@ -235,6 +285,7 @@
zxenergyDataList,
zxlastMonthOil,
zxloadCurve,
+ zxenergyRegionData
} from '@/api'
@@ -304,7 +355,7 @@
}
},
grid: {
- top: '26%',
+ top: '22%',
left: '4%',
right: '6%',
bottom: '2%',
@@ -474,9 +525,33 @@
myChart.resize()
})
}
+
+const data1 = ref({})
+const getData1 = () => {
+ zxcenterData().then(res => {
+ const result = res.data
+ data1.value = result
+ })
+}
+const data6 = ref({})
+const getData6 = () => {
+ zxenergyRegionData().then(res => {
+ const result = res.data
+ data6.value = result
+ })
+}
+
+const activeTab2 = ref(0)
+const tabsClick2 = (v) => {
+ activeTab2.value = v
+ getData2()
+}
+const data2 = ref([])
const initEnergy = () => {
var myChart = echarts.init(document.querySelector('.energyRef'))
// 缁樺埗鍥捐〃
+ let unit = activeTab2.value == 0 ? '鍗曚綅锛歵' : activeTab2.value == 3 ? '鍗曚綅锛歬w路h' : '鍗曚綅锛歮鲁'
+
myChart.setOption({
grid: {
top: '24%',
@@ -497,7 +572,7 @@
},
yAxis: {
type: 'value',
- name: '鍗曚綅锛歬w路h',
+ name: unit,
nameTextStyle: {
padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
},
@@ -533,52 +608,25 @@
myChart.resize()
})
}
-
-const data1 = ref({})
-const getData1 = () => {
- zxcenterData().then(res => {
- const result = res.data
- data1.value = result
- })
-}
-const activeTab2 = ref(0)
-const tabsClick2 = (v) => {
- activeTab2.value = v
- getData2()
-}
-const data2 = ref([])
const getData2 = () => {
zxenergyDataList({ type: activeTab2.value }).then(res => {
- const result = res.data
+ const result = res.data || []
data2.value = result
initEnergy()
})
}
const data3 = ref([])
const getData3 = () => {
- data3.value = [
- { carNo: '鐨朅87772', maxOil: 50, quantity: 50 },
- { carNo: '鐨朅81222', maxOil: 50, quantity: 26 },
- { carNo: '鐨朅85035', maxOil: 50, quantity: 24 },
- { carNo: '鐨朅86057', maxOil: 50, quantity: 14 },
- { carNo: '鐨朅81272', maxOil: 50, quantity: 9 },
- { carNo: '鐨朅87772', maxOil: 50, quantity: 1 },
- ]
- data3.value = data3.value.map(i => {
- if (i.quantity && i.maxOil) {
- i.rate = ((i.quantity / i.maxOil) * 25).toFixed(0)
- }
- return i
- })
- return
zxlastMonthOil().then(res => {
const result = res.data || []
- data3.value = result.map(i => {
- if (i.quantity && i.maxOil) {
- i.rate = ((i.quantity / i.maxOil) * 25).toFixed(0)
- }
- return i
- })
+ if (result.length > 0) {
+ data3.value = result.map(i => {
+ if (i.quantity || i.quantity == 0) {
+ i.rate = ((i.quantity / result[0].quantity) * 25).toFixed(0)
+ }
+ return i
+ })
+ }
})
}
const data4 = ref([])
@@ -586,13 +634,15 @@
zxloadCurve().then(res => {
const result = res.data
data4.value = result
- initLoadReal()
+ if (data4.value && data4.value.length > 0) {
+ initLoadReal()
+ }
})
}
const data5 = ref([])
const getData5 = () => {
- zxenergyDataList({ type: 3 }).then(res => {
+ zxenergyDataList({ type: 2 }).then(res => {
const result = res.data
data5.value = result
initOperation()
@@ -605,6 +655,7 @@
getData3()
getData4()
getData5()
+ getData6()
})
@@ -742,7 +793,6 @@
height: 544px;
.item {
- width: 120px;
height: 112px;
position: absolute;
text-align: center;
@@ -765,9 +815,12 @@
}
.bg {
+ margin: 0 auto;
width: 120px;
height: 88px;
top: 24px;
+ left: 50%;
+ transform: translate(-50%, 0);
}
}
@@ -889,6 +942,7 @@
.list {
padding: 20px 24px 4px;
+ height: 250px;
.line {
display: flex;
@@ -910,8 +964,9 @@
.id_card {
color: #DBEAEA;
font-weight: 500;
- margin-right: 14px;
- font-size: 14px;
+ margin-right: 6px;
+ font-size: 13px;
+ width: 64px;
}
.num {
@@ -919,6 +974,7 @@
font-size: 13px;
color: #DBEAEA;
margin-left: 15px;
+ width: 40px;
}
.wrap {
diff --git a/screen/src/views/SecurityControl.vue b/screen/src/views/SecurityControl.vue
index c13e8f9..b28bf10 100644
--- a/screen/src/views/SecurityControl.vue
+++ b/screen/src/views/SecurityControl.vue
@@ -461,8 +461,8 @@
</div>
</div>
</div>
- <div class="empty_wrap">
- <img v-if="dataList3.length == 0" src="@/assets/images/default_empty.png" alt="">
+ <div v-if="dataList3.length == 0" class="empty_wrap">
+ <img src="@/assets/images/default_empty.png" alt="">
</div>
</div>
</div>
--
Gitblit v1.9.3