| | |
| | | } else { |
| | | axios.defaults.baseURL = location.protocol + '//' + location.hostname + ':8005/'; |
| | | } |
| | | axios.defaults.baseURL = 'http://110.40.173.177:8005/'; |
| | | // 添加请求拦截器 |
| | | axios.interceptors.request.use(function (config) { |
| | | // 在发送请求之前做些什么 |
| | |
| | | " style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/> |
| | | `; |
| | | |
| | | const cascaderValue = ref([]); |
| | | |
| | | const { |
| | | usefulTimeRangeList, |
| | | getBmsAnalysisTime |
| | | } = bmsAnalysisTimeModule(); |
| | | |
| | | const searchBmsAnalysisTime = async ()=>{ |
| | | const res = await getBmsAnalysisTime(analysisType.value); |
| | | console.log(res); |
| | | if(res.code ===1 && res.data) { |
| | | let data = res.data; |
| | | let list = []; |
| | | for(let i=0; i<data.length; i++) { |
| | | let item = data[i]; |
| | | let index = -1; |
| | | for(let j=0; j<list.length; j++) { |
| | | let itemJ = list[j]; |
| | | if(item.boxSn === itemJ[j].boxSn) { |
| | | index = j; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | const cascaderHandleChange = ()=>{ |
| | | carName.value = cascaderValue.value[0]; |
| | | timeRange.value = cascaderValue.value[1].split("~"); |
| | | } |
| | | |
| | | onMounted(()=>{ |
| | | analysisType.value = 3; |
| | | searchBmsAnalysisTime(); |
| | | getBmsAnalysisTime(analysisType.value); |
| | | getCarNames(); |
| | | initChart(); |
| | | setChart(); |
| | |
| | | <div class="input-list"> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">车辆名称:</div> |
| | | <div class="input-label">数据筛选:</div> |
| | | <div class="input-content"> |
| | | <el-select v-model="carName" filterable> |
| | | <el-option |
| | | v-for="(item, key) in carList" :key="'key'+key" |
| | | :value="item.key" :label="item.label"></el-option> |
| | | </el-select> |
| | | <el-cascader |
| | | class="w400" |
| | | v-model="cascaderValue" |
| | | :options="usefulTimeRangeList" |
| | | @change="cascaderHandleChange"> |
| | | <template #default="{ node, data }"> |
| | | <span>{{ data.label }}</span> |
| | | <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> |
| | | </template> |
| | | </el-cascader> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">日期选择:</div> |
| | | <div class="input-content"> |
| | | <el-date-picker |
| | | v-model="timeRange" |
| | | type="datetimerange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | date-format="YYYY/MM/DD ddd" |
| | | time-format="A hh:mm:ss"></el-date-picker> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <el-button :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | <el-button :disabled="cascaderValue.length === 0" :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | height: 100%; |
| | | padding: 8px 0 8px 8px; |
| | | } |
| | | /deep/ .el-cascader.w400 { |
| | | width: 400px; |
| | | } |
| | | </style> |
| | |
| | | import carInfoModule from "@/views/moudle/battShow/carInfo"; |
| | | import FlexBox from "@/components/FlexBox.vue"; |
| | | import ChartBox from "@/components/chartBox.vue"; |
| | | import {dataAnalysisModule} from "@/views/analysis/module"; |
| | | import {dataAnalysisModule, bmsAnalysisTimeModule} from "@/views/analysis/module"; |
| | | import HdwChart from "@/components/echarts/hdwChart.vue"; |
| | | import getNormalLine from "@/components/echarts/options/normalLine"; |
| | | import {ElMessage} from "element-plus"; |
| | |
| | | A 15 15, 0, 1, 1, 27.99 7.5 |
| | | L 15 15 |
| | | " style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/> |
| | | ` |
| | | `; |
| | | const cascaderValue = ref([]); |
| | | |
| | | const { |
| | | usefulTimeRangeList, |
| | | getBmsAnalysisTime |
| | | } = bmsAnalysisTimeModule(); |
| | | const cascaderHandleChange = ()=>{ |
| | | carName.value = cascaderValue.value[0]; |
| | | timeRange.value = cascaderValue.value[1].split("~"); |
| | | } |
| | | |
| | | onMounted(()=>{ |
| | | analysisType.value = 2; |
| | | getBmsAnalysisTime(analysisType.value); |
| | | getCarNames(); |
| | | initChart(); |
| | | setChart(); |
| | |
| | | <div class="input-list"> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">车辆名称:</div> |
| | | <div class="input-label">数据筛选:</div> |
| | | <div class="input-content"> |
| | | <el-select v-model="carName" filterable> |
| | | <el-option |
| | | v-for="(item, key) in carList" :key="'key'+key" |
| | | :value="item.key" :label="item.label"></el-option> |
| | | </el-select> |
| | | <el-cascader |
| | | class="w400" |
| | | v-model="cascaderValue" |
| | | :options="usefulTimeRangeList" |
| | | @change="cascaderHandleChange"> |
| | | <template #default="{ node, data }"> |
| | | <span>{{ data.label }}</span> |
| | | <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> |
| | | </template> |
| | | </el-cascader> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">日期选择:</div> |
| | | <div class="input-content"> |
| | | <el-date-picker |
| | | v-model="timeRange" |
| | | type="datetimerange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | date-format="YYYY/MM/DD ddd" |
| | | time-format="A hh:mm:ss"></el-date-picker> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <el-button :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | <el-button :disabled="cascaderValue.length === 0" :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | height: 100%; |
| | | padding: 8px 0 8px 8px; |
| | | } |
| | | /deep/ .el-cascader.w400 { |
| | | width: 400px; |
| | | } |
| | | </style> |
| | |
| | | import carInfoModule from "@/views/moudle/battShow/carInfo"; |
| | | import FlexBox from "@/components/FlexBox.vue"; |
| | | import ChartBox from "@/components/chartBox.vue"; |
| | | import {dataAnalysisModule} from "@/views/analysis/module"; |
| | | import {dataAnalysisModule, bmsAnalysisTimeModule} from "@/views/analysis/module"; |
| | | import HdwChart from "@/components/echarts/hdwChart.vue"; |
| | | import getNormalLine from "@/components/echarts/options/normalLine"; |
| | | import {ElMessage} from "element-plus"; |
| | |
| | | A 15 15, 0, 1, 1, 27.99 7.5 |
| | | L 15 15 |
| | | " style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/> |
| | | ` |
| | | `; |
| | | const cascaderValue = ref([]); |
| | | |
| | | const { |
| | | usefulTimeRangeList, |
| | | getBmsAnalysisTime |
| | | } = bmsAnalysisTimeModule(); |
| | | const cascaderHandleChange = ()=>{ |
| | | carName.value = cascaderValue.value[0]; |
| | | timeRange.value = cascaderValue.value[1].split("~"); |
| | | } |
| | | |
| | | onMounted(()=>{ |
| | | analysisType.value = 1; |
| | | getBmsAnalysisTime(analysisType.value); |
| | | getCarNames(); |
| | | initChart(); |
| | | setChart(); |
| | |
| | | <div class="input-list"> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">车辆名称:</div> |
| | | <div class="input-label">数据筛选:</div> |
| | | <div class="input-content"> |
| | | <el-select v-model="carName" filterable> |
| | | <el-option |
| | | v-for="(item, key) in carList" :key="'key'+key" |
| | | :value="item.key" :label="item.label"></el-option> |
| | | </el-select> |
| | | <el-cascader |
| | | class="w400" |
| | | v-model="cascaderValue" |
| | | :options="usefulTimeRangeList" |
| | | @change="cascaderHandleChange"> |
| | | <template #default="{ node, data }"> |
| | | <span>{{ data.label }}</span> |
| | | <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> |
| | | </template> |
| | | </el-cascader> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">日期选择:</div> |
| | | <div class="input-content"> |
| | | <el-date-picker |
| | | v-model="timeRange" |
| | | type="datetimerange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | date-format="YYYY/MM/DD ddd" |
| | | time-format="A hh:mm:ss"></el-date-picker> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <el-button :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | <el-button :disabled="cascaderValue.length === 0" :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | height: 100%; |
| | | padding: 8px 0 8px 8px; |
| | | } |
| | | /deep/ .el-cascader.w400 { |
| | | width: 400px; |
| | | } |
| | | </style> |
| | |
| | | import carInfoModule from "@/views/moudle/battShow/carInfo"; |
| | | import FlexBox from "@/components/FlexBox.vue"; |
| | | import ChartBox from "@/components/chartBox.vue"; |
| | | import {dataAnalysisModule} from "@/views/analysis/module"; |
| | | import {dataAnalysisModule, bmsAnalysisTimeModule} from "@/views/analysis/module"; |
| | | import HdwChart from "@/components/echarts/hdwChart.vue"; |
| | | import getNormalLine from "@/components/echarts/options/normalLine"; |
| | | import {ElMessage} from "element-plus"; |
| | |
| | | A 15 15, 0, 1, 1, 27.99 7.5 |
| | | L 15 15 |
| | | " style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/> |
| | | ` |
| | | `; |
| | | const cascaderValue = ref([]); |
| | | |
| | | const { |
| | | usefulTimeRangeList, |
| | | getBmsAnalysisTime |
| | | } = bmsAnalysisTimeModule(); |
| | | const cascaderHandleChange = ()=>{ |
| | | carName.value = cascaderValue.value[0]; |
| | | timeRange.value = cascaderValue.value[1].split("~"); |
| | | } |
| | | |
| | | onMounted(()=>{ |
| | | analysisType.value = 4; |
| | | getBmsAnalysisTime(analysisType.value); |
| | | getCarNames(); |
| | | initChart(); |
| | | setChart(); |
| | | console.log(new Date(1694326785000).format("yyyy-MM-dd hh:mm:ss")); |
| | | }) |
| | | </script> |
| | | |
| | |
| | | <div class="input-list"> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">车辆名称:</div> |
| | | <div class="input-label">数据筛选:</div> |
| | | <div class="input-content"> |
| | | <el-select v-model="carName" filterable> |
| | | <el-option |
| | | v-for="(item, key) in carList" :key="'key'+key" |
| | | :value="item.key" :label="item.label"></el-option> |
| | | </el-select> |
| | | <el-cascader |
| | | class="w400" |
| | | v-model="cascaderValue" |
| | | :options="usefulTimeRangeList" |
| | | @change="cascaderHandleChange"> |
| | | <template #default="{ node, data }"> |
| | | <span>{{ data.label }}</span> |
| | | <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> |
| | | </template> |
| | | </el-cascader> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <div class="input-wrapper"> |
| | | <div class="input-label">日期选择:</div> |
| | | <div class="input-content"> |
| | | <el-date-picker |
| | | v-model="timeRange" |
| | | type="datetimerange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | date-format="YYYY/MM/DD ddd" |
| | | time-format="A hh:mm:ss"></el-date-picker> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="input-item"> |
| | | <el-button :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | <el-button :disabled="cascaderValue.length === 0" :loading="loading" type="primary" @click="searchData">查询</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | height: 100%; |
| | | padding: 8px 0 8px 8px; |
| | | } |
| | | /deep/ .el-cascader.w400 { |
| | | width: 400px; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | |
| | | export const bmsAnalysisTimeModule = ()=>{ |
| | | const usefulTimeRangeList = ref([]); |
| | | |
| | | const getBmsAnalysisTime = async (type)=>{ |
| | | try { |
| | | const res = await bmsAnalysisTimeApi(type); |
| | | const rs = res.data; |
| | | console.log(rs.data); |
| | | if(rs.code ===1 && rs.data) { |
| | | let data = rs.data; |
| | | let list = []; |
| | | for(let i=0; i<data.length; i++) { |
| | | let item = data[i]; |
| | | console.log(list); |
| | | let index = -1; |
| | | for(let j=0; j<list.length; j++) { |
| | | let itemJ = list[j]; |
| | | if(item.boxSn === itemJ.value) { |
| | | index = j; |
| | | break; |
| | | } |
| | | } |
| | | const timeRange = new Date(item.startTime).format("yyyy-MM-dd hh:mm:ss") |
| | | +"~"+new Date(item.endTime).format("yyyy-MM-dd hh:mm:ss") |
| | | if(index === -1) { |
| | | list.push({ |
| | | label: item.boxName, |
| | | value: item.boxSn, |
| | | children: [ |
| | | { |
| | | value: timeRange, |
| | | label: timeRange |
| | | } |
| | | ] |
| | | }); |
| | | }else { |
| | | list[index].children.push({ |
| | | value: timeRange, |
| | | label: timeRange |
| | | }); |
| | | } |
| | | } |
| | | console.log(list); |
| | | usefulTimeRangeList.value = list; |
| | | } |
| | | return res.data; |
| | | }catch (e) { |
| | | console.log(e); |
| | |
| | | } |
| | | |
| | | return { |
| | | usefulTimeRangeList, |
| | | getBmsAnalysisTime |
| | | } |
| | | } |