From 5a685b76c6a54d72bbfe082d85454513e81dcf48 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期四, 23 二月 2023 17:34:00 +0800 Subject: [PATCH] Merge branch 'dev1.0' of http://42.193.1.25:9521/r/sccg_ui into dev1.0 --- src/views/intelligentPatrol/trendAnalysis/index.vue | 330 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 189 insertions(+), 141 deletions(-) diff --git a/src/views/intelligentPatrol/trendAnalysis/index.vue b/src/views/intelligentPatrol/trendAnalysis/index.vue index 8321844..1e26fdc 100644 --- a/src/views/intelligentPatrol/trendAnalysis/index.vue +++ b/src/views/intelligentPatrol/trendAnalysis/index.vue @@ -1,176 +1,219 @@ <template> - <div class="trend-analysis"> - <!-- 渚ц竟鏍� --> - <div class="trend-side"> - <!-- 杈撳叆鍖哄煙 --> - <div class="trend-input-area"> - <span class="trend-title">瓒嬪娍鍒嗘瀽</span> - <el-form ref="form" :model="search" label-width="6vw"> - <el-form-item label="绫诲瀷鏌ヨ"> - <el-input v-model="search.type" placeholder="鍐呭淇℃伅"></el-input> - </el-form-item> - <el-form-item label="鏃堕棿鑼冨洿"> - <el-input v-model="search.timeRange" suffix-icon="el-icon-date" placeholder="閫夋嫨鏃堕棿鑼冨洿"></el-input> - </el-form-item> - </el-form> - </div> - <!-- 鏁版嵁灞曠ず --> - <div class="trend-data-show"> - <!-- 鐐逛綅鍒囨崲 --> - <div class="trend-data-header"> - <el-button type="text" @click="highFlag = true">楂樺彂鐐逛綅</el-button> - <el-button type="text" @click="highFlag = false">棣栨杩濊鐐逛綅</el-button> + <div style="height: 95%"> + <div class="trend-title">瓒嬪娍鍒嗘瀽</div> + <div class="trend-analysis"> + <div class="trend-side"> + <!-- 杈撳叆鍖哄煙 --> + <div class="trend-input-area"> + <el-form ref="form" :model="search" label-width="6vw"> + <!-- <el-form-item label="绫诲瀷鏌ヨ">--> + <!-- <el-select v-model="search.type" @change="searchList" placeholder="鍐呭淇℃伅">--> + <!-- <el-option v-for="option in categoryOptions" :key="option.value" :value="option.value" :label="option.label" ></el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <el-form-item class="time-area" label="鏃堕棿鑼冨洿"> + <el-date-picker + @change="searchList" + start-placeholder="寮�濮嬫椂闂�" + end-placeholder="缁撴潫鏃堕棿" + v-model="search.timeRange" + type="datetimerange" + value-format="yyyy-MM-dd HH:mm:ss" + > + </el-date-picker> + </el-form-item> + </el-form> </div> - <!-- 瀵瑰簲鏁版嵁 --> - <div class="trend-data-main"> - <!-- --> - <div class="high-point" v-if="highFlag"> - <div class="point-item" v-for="item in highList" :key="item.id"> - <span>{{ item.pointName }}</span> - <span>{{ item.count }}</span> - </div> + <!-- 鏁版嵁灞曠ず --> + <div class="trend-data-show"> + <!-- 鐐逛綅鍒囨崲 --> + <div class="trend-data-header"> + <el-button type="text" @click="tabChange(1)">楂樺彂鐐逛綅</el-button> + <el-button type="text" @click="tabChange(2)" + >棣栨杩濊鐐逛綅</el-button + > </div> - <!-- 棣栨杩濊 --> - <div class="first-point" v-else> - <div class="point-item" v-for="item in fisrtList" :key="item.id"> - <span>{{ item.pointName }}</span> + <!-- 瀵瑰簲鏁版嵁 --> + <div class="trend-data-main"> + <div + class="point-item" + v-for="item in trendAnalysisList" + :key="item.id" + @click="pointClick(item)" + > + <span class="point-name">{{ item.name }}</span> <span>{{ item.count }}</span> </div> </div> </div> </div> - </div> - <div class="trend-main"> - <div class="trend-main-echarts" id="myRef"> - + <div class="trend-main"> + <div class="map"> + <MyMap + :point="point" + :zoom="zoom" + :mark="mark" + @fatherMethod="fatherMethod" + ></MyMap> + </div> </div> - </div> - <div class="trend-footer" v-if="timeRangeFlag"> - <!-- 閫夋嫨鏃堕棿鑼冨洿 --> - <div class="time-area"> - <el-date-picker v-model="search.timeRange" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡"> - </el-date-picker> - </div> + <el-dialog + title="瓒嬪娍鍥�" + :visible.sync="echartsDialogVisible" + :before-close="handleClose" + > + <div style="height: 500px; width: 500px" id="echarts"></div> + </el-dialog> </div> </div> </template> <script> -import * as echarts from 'echarts' -import { transform } from 'echarts-stat'; +import * as echarts from "echarts"; +import basecase from "@/api/operate/basecase"; +import { CATEGOTY } from "@/utils/helper"; +// import MyMap from "@/components/map"; +import MyMap from "@/components/map/leafletMap.vue"; + export default { + components: { MyMap }, + created() { + this.searchList(); + }, + + mounted() { + // this.renderEchart(); + }, + + computed: { + categoryOptions() { + return CATEGOTY; + }, + }, + data() { return { + echartsDateList: [], + echartsDataList: null, + echartsDialogVisible: false, search: { - type: '', - timeRange: '' + type: null, + timeRange: null, }, timeRangeFlag: false, - highList: [ - { - id: 1, - pointName: '鍚庡簡璺�200鍙�-鐞�', - count: '100娆�', - }, - { - id: 2, - pointName: '鍚庡簡璺�200鍙�-鐞�', - count: '100娆�', - }, - { - id: 3, - pointName: '鍚庡簡璺�200鍙�-鐞�', - count: '100娆�', - }, - { - id: 4, - pointName: '鍚庡簡璺�200鍙�-鐞�', - count: '100娆�', - }, - { - id: 5, - pointName: '鍚庡簡璺�200鍙�-鐞�', - count: '100娆�', - }, - ], - fisrtList: [ - { - id: 1, - pointName: '鍚庡簡璺�205鍙�-鐞�', - count: '1娆�', - }, - { - id: 2, - pointName: '鍚庡簡璺�204鍙�-鐞�', - count: '1娆�', - }, - { - id: 3, - pointName: '鍚庡簡璺�203鍙�-鐞�', - count: '1娆�', - }, - { - id: 4, - pointName: '鍚庡簡璺�202鍙�-鐞�', - count: '1娆�', - }, - { - id: 5, - pointName: '鍚庡簡璺�201鍙�-鐞�', - count: '1娆�', - }, - ], + trendAnalysisList: [], highFlag: true, - } + echarts: null, + pointName: null, + point: { x: "119.27179890", y: "28.59027084" }, + mark: null, + zoom: 13, + }; }, methods: { - renderEchart() { - // echarts.registerTransform(transform.regression); - const myChart = echarts.init(document.getElementById('myRef')); + fatherMethod() { + this.echartsDialogVisible = true; + this.$nextTick(function () { + this.renderEchart(this.echartsDateList, this.echartsDataList); + }); + }, + handleClose() { + this.echartsDialogVisible = false; + }, + renderEchart(dateTimeList, dataList) { + if (!this.echarts) { + this.echarts = echarts.init(document.getElementById("echarts")); + } // 缁樺埗鍥捐〃 - myChart.setOption({ + this.echarts.setOption({ xAxis: { - name: '鏃�/鍛�', + name: "鏃�/鍛�", + data: dateTimeList, }, yAxis: { - name: '鎶ヨ閲�(娆�)', + name: "鎶ヨ閲�(娆�)", }, series: [ { - data: [10, 22, 28, 23, 19], - type: 'line', - smooth: true - } - ] + data: dataList, + type: "line", + smooth: true, + }, + ], }); - } + }, + async searchList() { + const [startTime, endTime] = this.search.timeRange ?? [null, null]; + const trendAnalysisParam = { + startTime, + endTime, + type: this.search.type, + }; + this.trendAnalysisList = this.highFlag + ? await basecase.getTrendAnalysisData(trendAnalysisParam) + : await basecase.getFirstTrendAnalysisData(trendAnalysisParam); + }, + + tabChange(params) { + this.highFlag = params === 1; + this.searchList(); + }, + + pointClick(data) { + this.pointName = data.name; + this.point = { + x: data.longitude, + y: data.latitude, + }; + this.zoom = 18; + this.mark = { title: data.address }; + basecase + .getPointTrendAnalysisData({ + longitude: data.longitude, + latitude: data.latitude, + }) + .then((res) => { + // const countList = res.map(item => +item.count); + this.echartsDataList = []; + this.echartsDateList = []; + res.forEach((item) => { + this.echartsDataList.push(item.count); + this.echartsDateList.push(item.dateTime); + }); + // this.renderEchart(countList); + }) + .catch((err) => this.$message.error(err)); + }, }, - mounted() { - this.renderEchart() - } -} +}; </script> <style lang="scss" scoped> +.trend-title { + color: #4b9bb7; + line-height: 40px; + font-size: 26px; + text-align: left; + margin-left: 20px; +} .trend-analysis { height: 100%; - padding: 10vh 10vw; + padding: 10px 0px; color: #4b9bb7; display: flex; .trend-side { - width: 20vw; + width: 30vw; text-align: left; height: 100%; - border: 1px solid #09152f; + // border: 1px solid #09152f; .trend-input-area { display: flex; flex-direction: column; padding: 0 2vw; - &>span { + & > span { line-height: 40px; } @@ -190,22 +233,22 @@ .el-button { flex: 1; - border: 2px solid #09152f; + // border: 2px solid #09152f; } - .el-button+.el-button { + .el-button + .el-button { margin: 0; } } .trend-data-main { - - .high-point, - .first-point { - .point-item { - display: flex; - padding: 0 2vw; - justify-content: space-between; + .point-item { + display: flex; + padding: 0 2vw; + justify-content: space-between; + .point-name { + cursor: pointer; + color: #66b1ff; } } } @@ -214,18 +257,23 @@ .trend-main { flex: 1; - border: 1px solid #09152f; - + // border: 1px solid #09152f; + display: flex; + margin-left: 20px; .trend-main-echarts { width: 500px; height: 400px; } } - .trend-footer { - ::v-deep .el-range-input { - background-color: #09152f; - } - } + // .trend-footer { + // ::v-deep .el-range-input { + // // background-color: #09152f; + // } + // } } -</style> \ No newline at end of file +.map { + height: 100%; + width: 98%; +} +</style> -- Gitblit v1.8.0