jiangping
2024-12-18 4b8fda000f9f600ba5187e738278b340b55ebd7c
Merge remote-tracking branch 'origin/master'
已添加6个文件
已修改29个文件
1038 ■■■■■ 文件已修改
h5/api/driver.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/index.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/login/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/signin.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/task/vDangetAppr.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/visitorSubGuide/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/waybill/list.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/waybill/waybillDetail.vue 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/api/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/default_nodata.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/EnergyConsum.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/LogisticsEfficiency.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/SystemUserMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/resources/mappers/SystemUserMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/EnergyTotalDataRequest.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionDataRankingDataRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionDataRankingTypeRequest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTotalDataResponse.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionDataRankingDataResponse.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/PlatformWaterGasForExcelVO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyModelDataVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/TmsServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/api/driver.js
@@ -141,4 +141,11 @@
    method: 'post',
    data
  })
}
export const getLastWaitJob = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/business/platformJob/getLastWaitJob',
    method: 'get',
    data
  })
}
h5/pages/driver/index.vue
@@ -102,7 +102,8 @@
import {
    logoutPost,
    driverHomeData,
    app_url
    app_url,
    getLastWaitJob
} from '@/api'
export default {
    data() {
@@ -123,6 +124,12 @@
                this.jump('/pages/driver/reservedDetail?id=' + ywinfo.ywid)
            }else if(yw == 8){
                this.jump('/pages/driver/taskDetail?id=' + ywinfo.ywid)
            }else if(yw == 0) {
                getLastWaitJob({ uuid: ywinfo.ywid }).then(res => {
                    if(res.data && res.data.id){
                        this.taskClick(res.data)
                    }
                })
            }
        }
    },
h5/pages/login/login.vue
@@ -41,7 +41,7 @@
    export default {
        data() {
            return {
                code: 'qwe'
                code: ''
            }
        },
        onLoad(option) {
h5/pages/staff/signin.vue
@@ -1,20 +1,39 @@
<template>
    <view>
        <web-view style="width: 100vw;height: 100vh;" src="https://atwl.ahzyssl.com/dps/web/wxAuth/loginV2?oaId=atwl&redirectId=index"></web-view>
        <!-- <web-view src="https://www.baidu.com/"></web-view> -->
    </view>
  <view class="box">
    <!-- <view v-html="info"></view> -->
        <mp-html :content="info" />
  </view>
</template>
<script>
    export default {
        data() {
            return {
            };
        }
    }
import { getSystemDictData } from '@/api'
export default {
  data() {
    return {
      info: "",
    }
  },
  onLoad() {
    this.initData()
  },
  methods: {
    initData() {
      getSystemDictData({
        dictCode: 'TSM_PARAM',
        label: 'CENTER_LINK_TYPE'
      }).then(res => {
        if (res.code === 200) {
          this.info = res.data.code
                    uni.setNavigationBarTitle({
                        title: res.data.remark
                    })
        }
      })
    }
  }
}
</script>
<style lang="scss">
</style>
<style lang="scss" scoped>
.box {
    padding: 0 30rpx;
}
</style>
h5/pages/staff/task/vDangetAppr.vue
@@ -12,10 +12,10 @@
                <view class="img_wrap" v-for="item,i in info.submitFileList" :key="item.id">
                    <image v-if="item.type == 0" :src="item.fileurlFull" @click="priviewImage(item.fileurlFull)" mode="widthFix"
                        class="img" />
                    <view v-if="item.type == 1"  @click="videoClick(item, i)" class="video_wrap">
                        <video :id="'id' + i" :show-center-play-btn="false"
                            :src="item.fileurlFull" muted class="video" :controls="false" />
                        <image src="@/static/play.png" class="play" mode=""></image>
                    <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
                        <video :id="'id' + i" :show-center-play-btn="false" :src="item.fileurlFull" muted class="video"
                            :controls="false" />
                        <image src="@/static/play.png" class="play" mode=""></image>
                    </view>
                </view>
            </view>
@@ -42,7 +42,8 @@
                <view class="label">{{info.status == '1' ? '整改前' : '视频/图片'}}</view>
                <view class="value">
                    <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealBeforeFileList" :key="i">
                        <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image>
                        <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
                            mode="widthFix"></image>
                        <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
                    </view>
                </view>
@@ -51,7 +52,8 @@
                <view class="label">整改后</view>
                <view class="value">
                    <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealAfterFileList" :key="i">
                        <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image>
                        <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
                            mode="widthFix"></image>
                        <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
                    </view>
                </view>
@@ -100,9 +102,9 @@
            </view>
        </view>
        <view class="emyty"></view>
        <view class="main_footer">
        <view class="main_footer" v-if="info.status==0&& info.checkUserId == userInfo.memberId">
            <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn" @click="handleBack">退回</view>
            <view v-if="info.status==0 && info.checkUserId == userInfo.memberId" class="btn transfer" @click="handleTransfer">
            <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn transfer" @click="handleTransfer">
                è½¬äº¤</view>
            <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn handle" @click="handleOpen">处理
            </view>
@@ -133,7 +135,8 @@
                    <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in dealBeforeFileList" :key="i">
                        <u-icon class="close" size="20" name="close-circle-fill" color="red"
                            @click="fileDel('dealBeforeFileList', i)"></u-icon>
                        <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image>
                        <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
                            mode="widthFix"></image>
                        <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
                    </view>
                </view>
@@ -263,9 +266,11 @@
            @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
        <!--  -->
<!--         <view v-show="videoPlay" class="video_app">
            <video controls id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video>
        </view> -->
        <view v-if="videoPlay" class="video_app" >
            <video controls autoplay muted x5-video-player-type="h5"
                x5-video-player-fullscreen="true" id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video>
            <view class="bg" @click="closeVideo"></view>
        </view>
    </view>
</template>
@@ -339,7 +344,7 @@
                memberList: [],
                videoPlay: false,
                videoContext: null,
                videoContext: null,
                videoUrl: ''
            };
        },
@@ -360,22 +365,25 @@
                    //退出全屏
                    this.videoPlay = false; // éšè—æ’­æ”¾ç›’子
                }
            },
            closeVideo() {
                this.videoPlay = false
                this.videoContext = null
            },
            videoClick(item, i) {
                this.videoContext = uni.createVideoContext("myvideo", this); // this这个是实例对象 å¿…ä¼ 
                console.log(item)
                this.videoPlay = true;
                this.videoContext = uni.createVideoContext("myvideo", this); // this这个是实例对象 å¿…ä¼ 
                this.videoUrl = item.fileurlFull;
                this.videoContext.requestFullScreen();
                this.$nextTick(() => {
                    this.videoContext.play();
                })
                this.videoContext.requestFullScreen();
                this.$nextTick(() => {
                    this.videoContext.play();
                })
            },
            handleOpen() {
                this.isShowHandle = true;
                const submitFileList = this.info.submitFileList || []
                this.dealBeforeFileList  = [...submitFileList]
                const submitFileList = this.info.submitFileList || []
                this.dealBeforeFileList = [...submitFileList]
                this.submitFileList = [...submitFileList];
                this.$set(this.handleParam, 'dealTime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
            },
@@ -803,7 +811,7 @@
        .flow_wrap {
            padding: 30rpx 0 90rpx;
            .list {
                .item {
                    display: flex;
@@ -825,7 +833,7 @@
                        height: 80rpx;
                        position: relative;
                        margin-right: 20rpx;
                        .img {
                            width: 80rpx;
                            height: 80rpx;
@@ -838,7 +846,7 @@
                            border-radius: 50%;
                            position: absolute;
                            right: 0;
                            bottom: 0;
                            bottom: 0;
                            z-index: 999;
                        }
                    }
@@ -1046,7 +1054,7 @@
                    background: #f7f7f7;
                    color: #666666;
                    font-size: 22rpx;
                    display: flex;
                    display: flex;
                    border-radius: 4rpx;
                    flex-direction: column;
                    align-items: center;
@@ -1059,21 +1067,24 @@
                        margin-right: 0;
                    }
                }
                .video_wrap{
                    position: relative;
                    border: 1px solid;
                    width: 156rpx;
                    height: 156rpx;
                    border-radius: 4rpx;
                    .play{
                        width: 60rpx;
                        height: 60rpx;
                        position: absolute;
                        top: 50%;
                        left: 50%;
                        transform: translate(-50%, -50%);
                    }
                .video_wrap {
                    position: relative;
                    border: 1px solid;
                    width: 156rpx;
                    height: 156rpx;
                    border-radius: 4rpx;
                    .play {
                        width: 60rpx;
                        height: 60rpx;
                        position: absolute;
                        top: 50%;
                        left: 50%;
                        transform: translate(-50%, -50%);
                    }
                }
                .img {
                    width: 100%;
                    max-height: 100%;
@@ -1130,7 +1141,7 @@
        .main_footer {
            position: fixed;
            bottom: 0;
            width: 100%;
            width: 100%;
            z-index: 9999;
            left: 0;
            padding: 30rpx 10rpx 60rpx;
@@ -1372,17 +1383,29 @@
            color: #333333;
        }
    }
    .video_app{
        position: absolute;
        left: 0;
        top: 0;
        width: 100vw;
    .video_app {
        overflow: hidden;
        position: fixed;
        left: 0;
        top: 0;
        width: 100vw;
        height: 100vh;
        video{
        display: flex;
        align-items: center;
        .bg{
            background-color: rgba(0,0,0,.6);
            position: absolute;
            width: 100%;
            height: 100%;
        }
            z-index: -1;
        }
        video {
            width: 100%;
            height: 42vh;
        }
    }
    .Transfer_footer {
        display: flex;
h5/pages/visitorSubGuide/index.vue
@@ -31,9 +31,6 @@
</script>
<style lang="scss" scoped>
.box {
  padding: 30rpx;
  .line {
    margin-bottom: 16rpx;
  }
    padding: 0 30rpx;
}
</style>
h5/pages/waybill/list.vue
@@ -9,7 +9,8 @@
                <image src="@/static/ic_shaixuan@2x.png" mode=""></image>
                <text>筛选</text>
            </view>
        </view>
        </view>
        <view @click="diaodu" class="head_title">分中心调度联系方式</view>
        <!--  -->
        <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
            <view class="main_list">
@@ -126,8 +127,8 @@
                form: {},
                provinceList: [
                    [
                        '安徽省', '江苏省', '浙江省', '河北省', '山西省', '北京', '天津', '上海', '重庆', '辽宁省', '吉林省', '黑龙江省', '福建省', '江西省', '山东省',
                        '河南省', '湖北省', '湖南省', '广东省', '海南省', '四川省', '贵州省', '云南省', '陕西省', '甘肃省', '青海省', '台湾省', '内蒙古自治区', '广西壮族自治区',
                        '安徽', '江苏', '浙江', '河北', '山西', '北京', '天津', '上海', '重庆', '辽宁', '吉林', '黑龙江', '福建', '江西', '山东',
                        '河南', '湖北', '湖南', '广东', '海南', '四川', '贵州', '云南', '陕西', '甘肃', '青海', '台湾', '内蒙古自治区', '广西壮族自治区',
                        '西藏自治区', '宁夏回族自治区', '新疆维吾尔自治区'
                    ]
                ]
@@ -147,6 +148,11 @@
                this.list = []
                this.showModal = false
                this.getList()
            },
            diaodu() {
                uni.navigateTo({
                    url: '/pages/staff/signin'
                })
            },
            modalSub() {
                this.handleQuery()
@@ -231,7 +237,11 @@
    page {
        background: #F7F7F7;
    }
    .head_title{
        color: $uni-color-primary;
        text-decoration-line: underline;
        margin-top: 20rpx;
    }
    .head_wrap {
        display: flex;
        align-items: center;
@@ -276,8 +286,8 @@
    .scroll_Y {
        background-color: #f7f7f7;
        height: calc(100vh - 130rpx);
        height: calc(100vh - 180rpx);
        margin-top: 10rpx;
        .main_list {
            width: 750rpx;
h5/pages/waybill/waybillDetail.vue
@@ -1,77 +1,78 @@
<template>
    <view class="main_app">
        <!-- <image class="bg" src="@/static/wuliuche_bg@2x.png" mode="widthFix"></image> -->
        <map id="map" :latitude="latitude" :longitude="longitude" :polyline="polyline" :markers="markers" :scale="4">
        <map id="map" :latitude="latitude" :longitude="longitude" :polyline="polyline" :markers="markers" :scale="scale">
        </map>
        <view class="main_content">
            <view class="info">
                <view class="head">
                    <view class="code">{{info.contractNumber}}</view>
                    <view class="status">{{info.orderStatusDesc}}</view>
                </view>
                <view class="content">
                    <view class="line">
                        <view class="la">发货地</view>
                        <view class="val">{{info.deliveryEnterprise || '-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">到货地</view>
                        <view class="val">{{info.receiveEnterprise || '-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">车牌号</view>
                        <view class="val">{{info.plateName || '-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">司机信息</view>
                        <view class="val" @click="callPhone(info.driverTel)">{{ info.driverName  }} <text class="primaryColor ml12">{{info.driverTel}}</text> </view>
                    </view>
                    <view class="line">
                        <view class="la">车辆位置</view>
                        <view class="val">{{'-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">预计到达</view>
                        <view class="val">{{info.plannedArrivedDate}}</view>
                    </view>
                </view>
            </view>
            <view class="drive_info">
                <view class="title">物流信息</view>
                <view class="drive_list" v-for="dri,k in info.cicleStatusList">
                    <view class="separate"></view>
                    <view class="item_title">
                        <view class="icon_wrap">
                            <image v-if="dri.key == 0 && k != 0" src="@/static/waybill/ic_dingdan@2x.png" class="icon"></image>
                            <image v-if="dri.key == 0 && k == 0" src="@/static/waybill/ic_dingdan_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 1 && k != 0" src="@/static/waybill/ic_peizai@2x.png" class="icon"></image>
                            <image v-if="dri.key == 1 && k == 0" src="@/static/waybill/ic_peizai_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 2 && k != 0" src="@/static/waybill/ic_cangku@2x.png" class="icon"></image>
                            <image v-if="dri.key == 2 && k == 0" src="@/static/waybill/ic_cangku_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 3 && k != 0" src="@/static/waybill/ic_yunshu@2x.png" class="icon"></image>
                            <image v-if="dri.key == 3 && k == 0" src="@/static/waybill/ic_yunshu_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 4" src="@/static/waybill/ic_daohuo_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 5" src="@/static/waybill/ic_ruku.png" class="icon"></image>
                        </view>
                        <view class="" :class="{primaryColor: k == 0}">{{dri.name}}</view>
                    </view>
                    <view class="item" v-for="item,i in dri.secondList">
                        <view class="h2" v-if="item.orderStatusDes">
                            <view class="icon_wrap"  v-if="i != 0">
                                <image src="@/static/driver/ic_mostarted.png" class="icon"></image>
                            </view>
                            <view v-else class="icon_wrap"></view>
                            <view class="text" :class="{placeholder3: k==0 && i== 0}" >
                                {{item.orderStatusDes}}
                                <text v-if="item.tel">,发货仓库电话:</text>
                                <text v-if="item.tel" @click="callPhone(item.tel)" class="primaryColor">{{item.tel}}</text>
                            </view>
                        </view>
                        <view class="time">{{item.recordDate}}</view>
                    </view>
                </view>
            </view>
        <view class="main_content">
            <view class="info">
                <view class="head">
                    <view class="code">{{info.contractNumber}}</view>
                    <view class="status">{{info.orderStatusDesc}}</view>
                </view>
                <view class="content">
                    <view class="line">
                        <view class="la">发货地</view>
                        <view class="val">{{info.deliveryEnterprise || '-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">到货地</view>
                        <view class="val">{{info.receiveEnterprise || '-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">车牌号</view>
                        <view class="val">{{info.plateName || '-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">司机信息</view>
                        <view class="val" @click="callPhone(info.driverTel)">{{ info.driverName  }} <text
                                class="primaryColor ml12">{{info.driverTel}}</text> </view>
                    </view>
                    <view class="line">
                        <view class="la">车辆位置</view>
                        <view class="val">{{'-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">预计到达</view>
                        <view class="val primaryColor" v-if="info.plannedArrivedDate">{{info.plannedArrivedDate.slice(0,11)}}</view>
                    </view>
                </view>
            </view>
            <view class="drive_info">
                <view class="title">物流信息</view>
                <view class="drive_list" v-for="dri,k in info.cicleStatusList">
                    <view class="separate"></view>
                    <view class="item_title">
                        <view class="icon_wrap">
                            <image v-if="dri.key == 0 && k != 0" src="@/static/waybill/ic_dingdan@2x.png" class="icon"></image>
                            <image v-if="dri.key == 0 && k == 0" src="@/static/waybill/ic_dingdan_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 1 && k != 0" src="@/static/waybill/ic_peizai@2x.png" class="icon"></image>
                            <image v-if="dri.key == 1 && k == 0" src="@/static/waybill/ic_peizai_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 2 && k != 0" src="@/static/waybill/ic_cangku@2x.png" class="icon"></image>
                            <image v-if="dri.key == 2 && k == 0" src="@/static/waybill/ic_cangku_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 3 && k != 0" src="@/static/waybill/ic_yunshu@2x.png" class="icon"></image>
                            <image v-if="dri.key == 3 && k == 0" src="@/static/waybill/ic_yunshu_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 4" src="@/static/waybill/ic_daohuo_sel@2x.png" class="icon"></image>
                            <image v-if="dri.key == 5" src="@/static/waybill/ic_ruku.png" class="icon"></image>
                        </view>
                        <view class="" :class="{primaryColor: k == 0}">{{dri.name}}</view>
                    </view>
                    <view class="item" v-for="item,i in dri.secondList">
                        <view class="h2" v-if="item.orderStatusDes">
                            <view class="icon_wrap" v-if="i != 0">
                                <image src="@/static/driver/ic_mostarted.png" class="icon"></image>
                            </view>
                            <view v-else class="icon_wrap"></view>
                            <view class="text" :class="{placeholder3: k==0 && i== 0}">
                                {{item.orderStatusDes}}
                                <text v-if="item.tel">,发货仓库电话:</text>
                                <text v-if="item.tel" @click="callPhone(item.tel)" class="primaryColor">{{item.tel}}</text>
                            </view>
                        </view>
                        <view class="time">{{item.recordDate}}</view>
                    </view>
                </view>
            </view>
        </view>
    </view>
</template>
@@ -88,7 +89,8 @@
                param: {},
                latitude: 31.783205,
                longitude: 117.262635,
                longitude: 117.262635,
                scale: 5,
                markers: [],
                includePoints: [
                    // {latitude: 31.783205, longitude: 117.262635}, {latitude: 36.783205, longitude: 118.10},
@@ -153,18 +155,62 @@
                                bgColor: '#FF0000'
                            }
                        })
                        this.latitude = (Number(this.markers[0].latitude) + Number(this.markers[1].latitude)) / 2 - 8
                        this.longitude = (Number(this.markers[0].longitude) + Number(this.markers[1].longitude)) / 2
                        this.latitude = (Number(this.markers[0].latitude) + Number(this.markers[1].latitude)) / 2 - 4
                        this.longitude = (Number(this.markers[0].longitude) + Number(this.markers[1].longitude)) / 2
                        const distance = this.distance()
                        console.log('distance', distance);
                        if(distance > 1500000){
                            this.scale = 4
                        }else if(distance < 600000){
                            this.scale = 6
                        }else{
                            this.scale = 5
                        }
                    }
                    if (res.data && res.data.gisList && res.data.gisList.length > 0) {
                        this.gisInfo = res.data.gisList[0]
                        if (this.gisInfo && this.gisInfo.gisList && this.gisInfo.gisList.length > 0) {
                            this.polyline = []
                            let temp = {
                                color: '#ff0000',
                                width: 3,
                                points: this.gisInfo.gisList.map(item => {
                                    return {
                                        latitude: item.lat,
                                        longitude: item.lon,
                                    }
                                })
                            }
                            this.polyline.push(temp)
                        }
                    }
                })
            },
            callPhone(phone){
                uni.makePhoneCall({
                    phoneNumber: phone
                });
            },
            distance() {
                const {
                    latitude: lat1,
                    longitude: lng1
                } = this.markers[0];
                const {
                    latitude: lat2,
                    longitude: lng2
                } = this.markers[1];
                const radLat1 = this.rad(lat1);
                const radLat2 = this.rad(lat2);
                const a = radLat1 - radLat2;
                const b = this.rad(lng1) - this.rad(lng2);
                const Haversin = Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2),
                    2);
                const radius = 6378137; // åœ°çƒåŠå¾„
                return 2 * radius * Math.asin(Math.sqrt(Haversin));
            },
            rad(d) {
                return d * Math.PI / 180.0;
            },
            callPhone(phone) {
                uni.makePhoneCall({
                    phoneNumber: phone
                });
            }
        }
    }
@@ -175,19 +221,19 @@
        background-color: #f7f7f7;
    }
    .main_app {
        padding: 0;
    .main_app {
        padding-top: 45vh;
        .main_content{
            height: 55vh ;
            overflow: auto;
            padding: 20rpx 30rpx 0;
            position: relative;
            z-index: 999;
        }
        // .main_content{
        //     height: 55vh ;
        //     overflow: auto;
        //     padding: 20rpx 30rpx 0;
        //     position: relative;
        //     z-index: 999;
        // }
        #map {
            width: 750rpx;
            position: absolute;
            position: fixed;
            left: 0;
            top: 0;
            height: 105vh;
@@ -208,15 +254,17 @@
            margin-bottom: 20rpx;
            position: relative;
            z-index: 999;
            .separate {
                height: calc( 100% - 250rpx );
                width: 1rpx;
                border: 1rpx dashed #CCCCCC;
                position: absolute;
                left: 53rpx;
                top: 102rpx;
                z-index: -1;
            .separate {
                height: calc(100% - 250rpx);
                width: 1rpx;
                border: 1rpx dashed #CCCCCC;
                position: absolute;
                left: 53rpx;
                top: 102rpx;
                z-index: -1;
            }
            .title {
                font-weight: 500;
                font-size: 32rpx;
@@ -235,46 +283,52 @@
                .val {}
            }
            .item_title{
                font-weight: 600;
                font-size: 32rpx;
                display: flex;
                align-items: center;
            }
            .icon_wrap {
                width: 48rpx;
                margin-right: 30rpx;
                display: flex;
                align-items: center;
                justify-content: center;
                .icon {
                    width: 48rpx;
                    height: 48rpx;
                    position: relative;
                    z-index: 2;
                }
            .item_title {
                font-weight: 600;
                font-size: 32rpx;
                display: flex;
                align-items: center;
            }
            .icon_wrap {
                width: 48rpx;
                margin-right: 30rpx;
                display: flex;
                align-items: center;
                justify-content: center;
                .icon {
                    width: 48rpx;
                    height: 48rpx;
                    position: relative;
                    z-index: 2;
                }
            }
            .item {
                position: relative;
                color: #999999;
                margin-bottom: 30rpx;
                .text{
                    color: #666666;
                margin-bottom: 30rpx;
                .text {
                    color: #666666;
                }
                .icon {
                    width: 20rpx;
                    height: 20rpx;
                    position: relative;
                    z-index: 2;
                .icon {
                    width: 20rpx;
                    height: 20rpx;
                    position: relative;
                    z-index: 2;
                }
                .h2 {
                    display: flex;
                    align-items: center;
                    height: 48rpx;
                }
                .h1 {
                }
                .h1 {}
                .time {
                    padding-left: 78rpx;
h5/utils/config.js
@@ -1,8 +1,8 @@
export const baseUrl = 'zhyq_interface/'
// export const baseUrl = 'zhyq_interface/'
// export const baseUrl = 'http://192.168.0.173/gateway_interface/'
// export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/'
// export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/'
export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/'
export const app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/'
screen/src/api/index.js
@@ -174,4 +174,8 @@
// èƒ½è€—看板 å®žæ—¶è´Ÿè·æ›²çº¿
export const zxloadCurve = (data) => {
  return request('visitsAdmin/cloudService/board/api/energy/loadCurve', data)
}
// èƒ½è€—看板 å®žæ—¶è´Ÿè·æ›²çº¿
export const regionDataRanking = (data) => {
  return request('visitsAdmin/cloudService/board/api/energy/regionDataRanking', data)
}
screen/src/assets/images/default_nodata.png
screen/src/views/EnergyConsum.vue
@@ -175,51 +175,54 @@
          </div>
          <div class="center_box_two">
            <img class="bg" src="@/assets/images/img_city@2x.png" alt="" />
            <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>
            <template v-if="data6 && data6 && data6.length > 0">
              <div class="item item1" v-if="data6.length > 4">
                <div class="num fs_linear">{{ data6[4].value }}<span class="unit">kw·h</span></div>
                <div class="name">{{ data6[4].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>
              <div class="item item2" v-if="data6.length > 1">
                <div class="num fs_linear">{{ data6[1].value }}<span class="unit">kw·h</span></div>
                <div class="name">{{ data6[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>
              <div class="item item3" v-if="data6.length > 2">
                <div class="num fs_linear">{{ data6[2].value }}<span class="unit">kw·h</span></div>
                <div class="name">{{ data6[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>
              <div class="item item4" v-if="data6.length > 3">
                <div class="num fs_linear">{{ data6[3].value }}<span class="unit">kw·h</span></div>
                <div class="name">{{ data6[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>
              <div class="item item5">
                <div class="num fs_linear">{{ data6[0].value }}<span class="unit">kw·h</span></div>
                <div class="name">{{ data6[0].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.total || 0 }}</div>
              <div class="bottom bottom1" @click="changeacDay(3)">
                <div :class="{active: activeDays == 3}" 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="" />
                <img v-if="activeDays == 3" src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
                <img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
              </div>
              <div class="bottom bottom2">
                <div class="num">{{ data1.todayElectricity.total || 0 }}</div>
              <div class="bottom bottom2" @click="changeacDay(1)">
                <div :class="{active: activeDays == 1}" 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="" />
                <img v-if="activeDays == 1" src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
                <img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
              </div>
              <div class="bottom bottom3">
                <div class="num fs_linear">{{ data1.monthElectricity.total || 0 }}</div>
              <div class="bottom bottom3" @click="changeacDay(2)">
                <div :class="{active: activeDays == 2}" 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="" />
                <img v-if="activeDays == 2" src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
                <img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
              </div>
            </div>
          </div>
@@ -298,7 +301,8 @@
  zxenergyDataList,
  zxlastMonthOil,
  zxloadCurve,
  zxenergyRegionData
  zxenergyRegionData,
  regionDataRanking
} from '@/api'
@@ -546,13 +550,19 @@
    data1.value = result
  })
}
const activeDays = ref('1')
const data6 = ref({})
const changeacDay = (val) => {
  activeDays.value = val
  getData6()
}
const getData6 = () => {
  zxenergyRegionData().then(res => {
  regionDataRanking({type: activeDays.value}).then(res => {
    const result = res.data
    data6.value = result
  })
}
const activeTab2 = ref(0)
const tabsClick2 = (v) => {
@@ -888,7 +898,7 @@
        position: absolute;
        text-align: center;
        padding-top: 70px;
        cursor: pointer;
        .num {
          font-size: 24px;
          color: #D0FFFA;
@@ -904,6 +914,12 @@
        .unit {
          font-size: 14px;
          color: #D0FFFA;
        }
        .active {
          font-size: 36px;
          color: #01D9FE;
          font-weight: bold;
          margin-bottom: 10px;
        }
      }
@@ -921,14 +937,8 @@
        bottom: -0px;
        left: 50%;
        transform: translate(-50%, 0);
        padding-top: 50px;
        /* padding-top: 50px; */
        .num {
          font-size: 36px;
          color: #01D9FE;
          line-height: 54px;
          font-weight: bold;
        }
      }
    }
  }
screen/src/views/LogisticsEfficiency.vue
@@ -3,7 +3,7 @@
    <div class="main_app">
      <img src="@/assets/images/energy_ef/bg@2x.png" class="main_bg" alt="" />
      <div class="main_header">
        <!-- <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> -->
        <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
        <div class="title">安泰智慧物流园区-调度能效跟踪</div>
        <div class="time_wrap">
          <span class="date">{{ date }}</span>
@@ -38,13 +38,15 @@
                    <img v-else src="@/assets/images/ic_down.png" class="icon" alt="">
                  </template>
                  <template v-if="activeTab1 == 1 && data1.yearLastOutTotal">
                    <img v-if="data1.yearOutTotal > data1.yearLastOutTotal" src="@/assets/images/ic_up.png"
                      class="icon" alt="">
                    <img v-if="data1.yearOutTotal > data1.yearLastOutTotal" src="@/assets/images/ic_up.png" class="icon"
                      alt="">
                    <img v-else src="@/assets/images/ic_down.png" class="icon" alt="">
                  </template>
                  <span v-if="activeTab1 == 0 && data1.monthLastOutTotal">{{ Math.abs((((data1.monthOutTotal - data1.monthLastOutTotal)/data1.monthLastOutTotal) * 100).toFixed(1)) }}%</span>
                  <span v-else-if="activeTab1 == 1 && data1.yearLastOutTotal">{{ Math.abs((((data1.yearOutTotal - data1.yearLastOutTotal)/data1.yearLastOutTotal) * 100).toFixed(1)) }}%</span>
                  <span v-if="activeTab1 == 0 && data1.monthLastOutTotal">{{ Math.abs((((data1.monthOutTotal -
                    data1.monthLastOutTotal) / data1.monthLastOutTotal) * 100).toFixed(1)) }}%</span>
                  <span v-else-if="activeTab1 == 1 && data1.yearLastOutTotal">{{ Math.abs((((data1.yearOutTotal -
                    data1.yearLastOutTotal) / data1.yearLastOutTotal) * 100).toFixed(1)) }}%</span>
                  <span v-else>-</span>
                </div>
              </div>
@@ -207,7 +209,8 @@
                <img src="@/assets/images/energy_ef/ic_chukuxiaolv@2x.png" alt="">
                <div class="content">
                  <div class="name">出库效率</div>
                  <div class="num"><span>{{ activeTab12 == 0 ? data1.todayOutRate : data1.monthOutRate }}</span>万支/小时
                  <div class="num"><span>{{ activeTab12 == 0 ? data1.todayOutRate || 0 : data1.monthOutRate || 0
                      }}</span>万支/小时
                  </div>
                </div>
              </div>
@@ -215,7 +218,8 @@
                <img src="@/assets/images/energy_ef/ic_rukuxiaolv@2x.png" alt="">
                <div class="content">
                  <div class="name">入库效率</div>
                  <div class="num"><span class="today">{{ activeTab12 == 0 ? data1.todayInRate : data1.monthInRate
                  <div class="num"><span class="today">{{ activeTab12 == 0 ? data1.todayInRate || 0 : data1.monthInRate
                    || 0
                      }}</span>万支/小时</div>
                </div>
              </div>
@@ -259,16 +263,14 @@
            <div class="repertory">
              <div class="use_ratio">
                <div class="header">
                  <div>库存量 <span class="num">{{ data1.stockTotal }}/{{ data1.stockMax }}</span></div>
                  <div v-if="data1.stockTotal && data1.stockMax">利用率{{ ((data1.stockTotal / data1.stockMax) *
                    100).toFixed(0) }}%</div>
                  <div>库存量 <span class="num">{{ data6.num }}/{{ data6.totalNum }}</span></div>
                  <div v-if="data6.num && data6.totalNum">利用率{{ (data6.useRate * 100).toFixed(0) }}%</div>
                </div>
                <Percent v-if="data1.stockTotal && data1.stockMax"
                  :rate="((data1.stockTotal / data1.stockMax) * 100).toFixed(0)" />
                <Percent v-if="data6.num && data6.totalNum" :rate="((data6.num / data6.totalNum) * 100).toFixed(0)" />
              </div>
              <div class="list two-swiper">
                <div class="swiper-wrapper">
                  <div class="item two-swiper-slide swiper-slide" v-for="item in dataList6">
                  <div class="item two-swiper-slide swiper-slide" v-for="item in data6.stockList">
                    <div class="la">{{ item.name }}</div>
                    <div class="val">{{ item.num }}万支</div>
                  </div>
@@ -279,26 +281,26 @@
        </div>
      </div>
      <!--  -->
      <div class="modal" v-if="activeCar && activeCar.phone">
      <div class="modal" v-if="showModal">
        <div class="title_head">
          <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt="">
          <span>皖a222</span>
          <span>{{ activeCar.carCode }}</span>
        </div>
        <div class="info">
          <div class="item">
            <div class="dian"></div>
            <div class="la">运输单号:</div>
            <div class="val">22</div>
            <div class="val">{{ activeCar.billCode }}</div>
          </div>
          <div class="item">
            <div class="dian"></div>
            <div class="la">司机信息:</div>
            <div class="val">22</div>
            <div class="val">{{ activeCar.name }} {{ activeCar.phone }}</div>
          </div>
          <div class="item">
            <div class="dian"></div>
            <div class="la">总运输量:</div>
            <div class="val">22 ä¸‡æ”¯</div>
            <div class="val" v-if="activeCar.totalNum">{{ activeCar.totalNum }}万支</div>
          </div>
        </div>
        <div class="tabs">
@@ -306,35 +308,45 @@
          <div :class="{ active: modalTab == 1 }" @click="modalTabClick(1)" class="tab">合同列表</div>
        </div>
        <div class="tab1" v-if="modalTab == 0">
          <div class="item" v-for="item, i in 3">
            <div class="icon_wrap">
              <img v-if="i === 0" class="dian" src="@/assets/images/ic_dangqian@2x.png" alt="">
              <img v-else src="@/assets/images/ic_jindu@2x.png" class="dian_ac" alt="">
              <div class="line"></div>
          <template v-for="item, i in activeCar.logList">
            <div class="item" v-if="i < 4 || showMore">
              <div class="icon_wrap">
                <img v-if="i != 0" class="dian" src="@/assets/images/ic_dangqian@2x.png" alt="">
                <img v-else src="@/assets/images/ic_jindu@2x.png" class="dian_ac" alt="">
                <div class="line"></div>
              </div>
              <div class="content">
                <div class="status" :class="{ ac: i == 0 }">{{ statusMapD[item.objType] }}</div>
                <div class="text">{{ item.content }}</div>
                <div class="time">{{ item.createDate }}</div>
              </div>
            </div>
            <div class="content">
              <div class="status">作业中</div>
              <div class="text">作业任务在【入库去1号月台】开始作业</div>
              <div class="time">2024-04-02 12:00</div>
            </div>
          </template>
          <div class="more_btn" v-if="!showMore && activeCar.logList && activeCar.logList.length > 4"
            @click="showMore = true">查看更多作业信息</div>
          <div class="empty" v-if="!activeCar.contractList || activeCar.logList.contractList == 0">
            <img src="@/assets/images/default_nodata.png" alt="">
          </div>
        </div>
        <div class="tab2" v-if="modalTab == 1">
          <div class="list">
            <div class="item">
            <div class="item" v-for="item in activeCar.contractList">
              <div class="head">
                <div class="code">合同号:12312312</div>
                <div class="addr">收货地:江门烟草物流中心</div>
                <div class="code">合同号:{{ item.ioCode }}</div>
                <div class="addr">收货地:{{ item.address }}</div>
              </div>
              <div class="line" v-for="i in 3">
                <div class="name">物料名称:<span class="val">黄山</span></div>
                <div class="num">数量:<span class="val">100万支</span></div>
              <div class="line" v-for="i in item.detailList">
                <div class="name">物料名称:<span class="val">{{ i.materialName }}</span></div>
                <div class="num">数量:<span class="val">{{ i.ioQty }}万支</span></div>
              </div>
            </div>
            <div class="empty" v-if="!activeCar.contractList || activeCar.logList.contractList == 0">
              <img src="@/assets/images/default_nodata.png" alt="">
            </div>
          </div>
        </div>
      </div>
      <div class="modal_mask" v-if="activeCar && activeCar.phone" @click="activeCar = {}"></div>
      <div class="modal_mask" v-if="showModal" @click="closeModal"></div>
    </div>
  </v-scale-screen>
</template>
@@ -362,6 +374,7 @@
import 'swiper/css/swiper.min.css'
import Swiper from 'swiper'
const statusMapD = ['任务生成', '确认任务', '已签到', '入园等待', '月台叫号', '作业中', '作业完成', '月台转移', '异常挂起', '下发授权离园', '离园', '已过号']
const colors = ['#FEAF01', '#01ABFE', '#51F9E4']
const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',]
const date = ref(dayjs().format('YYYY.MM.DD'))
@@ -588,7 +601,7 @@
  const scatterData = data7.value.carsList.map(item => {
    return {
      name: item.terminalId,
      img: item.status == 0 ? icLixian : item.status == 1 || item.status == 2 ? icZaitu : icKongxian,
      img: item.jobStatus == 2 ? icLixian : item.jobStatus == 1 ? icZaitu : icKongxian,
      data: [{ code: item.plateNum, value: [item.longitude, item.latitude] }]
    }
  })
@@ -780,7 +793,9 @@
  myChart.on('click', function (params) {
    const item = params.data
    getCarsJobDetails({ carCode: item.code }).then(res => {
      activeCar.value = res.data
      // getCarsJobDetails({ carCode: '皖AE5277' }).then(res => {
      showModal.value = true
      activeCar.value = { ...res.data, carCode: item.code }
    })
  })
  window.addEventListener('resize', function () {//执行
@@ -788,9 +803,15 @@
  })
}
const activeCar = ref({})
const showModal = ref(false)
const modalTab = ref(0)
const showMore = ref(false)
const modalTabClick = (val) => {
  modalTab.value = val
}
const closeModal = () => {
  showModal.value = false
  activeCar.value = {}
}
@@ -879,11 +900,11 @@
    initEchart1()
  })
}
const dataList6 = ref([])
const data6 = ref({})
const getData6 = () => {
  wlstockList().then(res => {
    const result = res.data.stockList || []
    dataList6.value = result
    const result = res.data || []
    data6.value = result
  })
}
@@ -917,8 +938,8 @@
  var newSwiper1 = new Swiper('.two-swiper', {
    initialSlide: 0,
    direction: 'vertical', //竖直方向
    slidesPerView: 7,
    autoplay: autoplayFlag(dataList6.value, 7, 2000),
    slidesPerView: 6,
    autoplay: autoplayFlag(data6.value.stockList, 6, 2000),
    observer: true, //修改swiper自己或子元素时,自动初始化swiperiper
  })
}
@@ -1461,7 +1482,7 @@
        .list {
          margin-top: 22px;
          height: 240px;
          height: 216px;
          overflow: hidden;
          scrollbar-width: none;
@@ -1702,6 +1723,25 @@
  }
  .tab1 {
    height: 360px;
    overflow: auto;
    .more_btn {
      width: 116px;
      height: 25px;
      border-radius: 2px;
      border: 1px solid #D2E0FF;
      font-size: 12px;
      display: flex;
      align-items: center;
      justify-content: center;
      color: D2E0FF;
      margin-left: 30px;
      margin-top: 12px;
      cursor: pointer;
    }
    .item {
      display: flex;
@@ -1748,6 +1788,10 @@
          color: #fff;
        }
        .ac {
          color: #00F2F3;
        }
        .text {
          margin-bottom: 4px;
        }
@@ -1761,6 +1805,9 @@
  }
  .tab2 {
    height: 360px;
    overflow: auto;
    .list {
      .item {
        width: 560px;
@@ -1810,6 +1857,17 @@
      }
    }
  }
  .empty {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 340px;
    img {
      width: 144px;
    }
  }
}
.modal_mask {
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -1539,6 +1539,7 @@
                )
                .eq("c.DELETED",0)
                .eq("c.status",0)
                .eq("m.WORK_STATUS",0)
                .orderByAsc("c.id")
        );
        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
server/system_service/src/main/java/com/doumee/dao/system/SystemUserMapper.java
@@ -32,7 +32,8 @@
    @Select(" select c.id , c.type , c.REALNAME as realName , c.userName as userName , c.avatar ," +
            " c.wechat_name as wechatName , c.mobile , c.sex , c.birthday  , c.avatar   ,  d.COMPANY_NAME_PATH as departmentName  " +
            " from system_user c   " +
            " INNER JOIN company d on c.COMPANY_ID = d.id  " +
            " INNER JOIN company d on c.COMPANY_ID = d.id " +
            " LEFT JOIN member m on c.member_id = m.id   " +
            " ${ew.customSqlSegment} ")
    IPage<UserResponse> getUserPage(IPage<UserResponse> page, @Param(Constants.WRAPPER) Wrapper wrapper);
server/system_service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
@@ -59,5 +59,10 @@
    @ApiModelProperty(value = "是否查询固定人员组织主键" ,hidden = true)
    private String companySpecialId;
    @ApiModelProperty(value = "在职状态 0在职 1离职" )
    private Integer workStatus;
}
server/system_service/src/main/resources/mappers/SystemUserMapper.xml
@@ -66,6 +66,9 @@
      <if test="dto.status != null ">
        AND  usr.`status` = #{dto.status}
      </if>
      <if test="dto.workStatus != null ">
        AND  m.WORK_STATUS = #{dto.workStatus}
      </if>
      <if test="dto.memberType != null ">
        AND  m.`type` = #{dto.memberType}
      </if>
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkInterfaceTestCloudController.java
@@ -182,4 +182,21 @@
        return ApiResponse.success(  HKService.temperatureHumidityDataStatistic(request));
    }
    @ApiOperation("【海康】根据时间和时间维度获取园区能耗数据")
    @PostMapping("/energyTotal")
    @LoginNoRequired
    public ApiResponse<BaseResponse<EnergyTotalDataResponse>> energyTotalData(@RequestBody EnergyTotalDataRequest request, HttpServletResponse response) {
        return ApiResponse.success(  HKService.energyTotal(request));
    }
    @ApiOperation("【海康】获取区域用量排名-能耗看板")
    @PostMapping("/regionDataRanking")
    @LoginNoRequired
    public ApiResponse<BaseResponse<List<RegionDataRankingDataResponse>>> regionDataRankingData(@RequestBody RegionDataRankingDataRequest request, HttpServletResponse response) {
        return ApiResponse.success(  HKService.regionDataRanking(request));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/EnergyController.java
@@ -2,7 +2,11 @@
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.RegionDataRankingTypeRequest;
import com.doumee.core.haikang.model.param.respose.RegionDataRankingDataResponse;
import com.doumee.core.haikang.model.param.respose.RegionEnergyListResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.dao.web.response.platformReport.*;
@@ -10,11 +14,9 @@
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -36,12 +38,21 @@
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<EnergyBoardVO> centerData() {
        EnergyBoardVO data =boardService.centerEnergyData();
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("中心用电能耗数据")
    @GetMapping("/regionDataRanking")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "查询类型:1=今日;2=本月;3=昨日", required = true),
    })
    public ApiResponse<List<RegionDataRankingDataResponse>> regionDataRanking(@RequestParam Integer type) {
        return ApiResponse.success(boardService.getRegionDataRanking(type));
    }
    @LoginNoRequired
@@ -57,7 +68,6 @@
    @ApiOperation("实时负荷曲线")
    @GetMapping("/loadCurve")
    public ApiResponse<List<EnergyDataVO>> loadCurve() {
        List<EnergyDataVO> loadCurveList =boardService.loadEnergyCurve();
        return ApiResponse.success(loadCurveList);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -621,6 +621,8 @@
        String[] minitorDataSearch= new String[]{"/api/fpms/v2/minitor/data/search","分页查询设备监测历史数据"};//分页查询设备监测历史数据
        String[] userOpenidSave= new String[]{"/api/v1/oa/userOpenId/saveV2","保存用户及openId绑定信息微信公众号"};//保存用户及openId绑定信息微信公众号
        String[] temperatureHumidityDataStatistic= new String[]{"/api/v2/public/monitor/sensor/list","消防看板-4温湿度统计"};//消防看板-温湿度
        String[] regionDataRanking= new String[]{"/api/ecm/v1/energy/regionDataRanking","消防看板-4获取区域用量排名-能耗看板"};//消防看板-获取区域用量排名 - èƒ½è€—看板
        String[] energyTotal= new String[]{"/api/ecm/v1/energy/energyTotal","消防看板-4根据时间和时间维度获取园区能耗数据"};//消防看板-根据时间和时间维度获取园区能耗数据
    }
    /**
     * é™„录A.55消防设备类型
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -322,6 +322,23 @@
        return startDoPostStringArtemisAdmin(HKConstants.InterfacePath.temperatureHumidityDataStatistic,body);
    }
    /**
     *消防看板-4获取区域用量排名-能耗看板
     * @param body
     * @return
     */
    public static String regionDataRanking(String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.regionDataRanking,body);
    }
    /**
     *消防看板-4根据时间和时间维度获取园区能耗数据
     * @param body
     * @return
     */
    public static String energyTotal(String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.energyTotal,body);
    }
    /**
     *    èŽ·å–é—¨ç¦ç‚¹åˆ—è¡¨
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/EnergyTotalDataRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.doumee.core.haikang.model.param.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EnergyTotalDataRequest {
    @ApiModelProperty(value = "时间维度day/month/year")
    private String  periodType;
    @ApiModelProperty(value = "查询日期")
    private String  date;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionDataRankingDataRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.core.haikang.model.param.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class RegionDataRankingDataRequest {
    @ApiModelProperty(value = "时间维度day/month/year")
    private String  periodType;
    @ApiModelProperty(value = "查询日期")
    private String  date;
    @ApiModelProperty(value = "仪表类型(1:电表;2:水表;3:气表;4:热表)")
    private Integer  meterType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/RegionDataRankingTypeRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class RegionDataRankingTypeRequest {
    @ApiModelProperty(value = "查询类型:1=今日;2=本月;3=昨日")
    private Integer queryType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/EnergyTotalDataResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.core.haikang.model.param.respose;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EnergyTotalDataResponse {
 @ApiModelProperty(value = "用电总量")
 private String   electricity;
 @ApiModelProperty(value = "用水总量")
 private String  water;
 @ApiModelProperty(value = "用气总量")
 private String  gas;
 @ApiModelProperty(value = "用热总量")
 private String  heat;
 @ApiModelProperty(value = "自定义总量")
 private String  extend    ;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/RegionDataRankingDataResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.core.haikang.model.param.respose;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class RegionDataRankingDataResponse {
 @ApiModelProperty(value = "区域")
 private String   name;
 @ApiModelProperty(value = "电量")
 private String  value;
 @ApiModelProperty(value = "百分比")
 private String  percent;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -958,6 +958,45 @@
        return  null;
    }
    /**
     *消防看板-4获取区域用量排名-能耗看板
     * @return
     */
    public  static  BaseResponse<List<RegionDataRankingDataResponse>>  regionDataRanking(RegionDataRankingDataRequest param){
        log.info("【海康消防看板-4获取区域用量排名-能耗看板】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.regionDataRanking(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<List<RegionDataRankingDataResponse> >>(){};
            BaseResponse<List<RegionDataRankingDataResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康消防看板-4获取区域用量排名-能耗看板");
            return  result;
        }catch (Exception e){
            log.error("【海康消防看板-4获取区域用量排名-能耗看板】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *消防看板-4获取区域用量排名-能耗看板
     * @return
     */
    public  static  BaseResponse<EnergyTotalDataResponse>  energyTotal(EnergyTotalDataRequest param){
        log.info("【海康消防看板-4根据时间和时间维度获取园区能耗数据】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.energyTotal(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<EnergyTotalDataResponse >>(){};
            BaseResponse<EnergyTotalDataResponse>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康消防看板-4根据时间和时间维度获取园区能耗数据");
            return  result;
        }catch (Exception e){
            log.error("【海康消防看板-4根据时间和时间维度获取园区能耗数据】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *分页查询消防设备部件状态
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/HiddenDanger.java
@@ -59,7 +59,7 @@
    private Integer areaId;
    @ApiModelProperty(value = "状态 0待处理 1已处理 2不处理", example = "1")
    @ExcelColumn(name="处理结果" ,valueMapping ="0=0待处理;1=已处理;2=不处理;",index = 5)
    @ExcelColumn(name="处理结果" ,valueMapping ="0=0待处理;1=已处理;2=不处理;",index = 5,width = 6)
    private Integer status;
    @ApiModelProperty(value = "申请处理人编码(关联member)", example = "1")
@@ -91,12 +91,12 @@
    private Integer checkUserId;
    @ApiModelProperty(value = "区域名称")
    @ExcelColumn(name="隐患区域",index = 1)
    @ExcelColumn(name="隐患区域",index = 1,width = 10)
    private String areaName;
    @ApiModelProperty(value = "申请人姓名", example = "1")
    @TableField(exist = false)
    @ExcelColumn(name="提报人姓名",index =3)
    @ExcelColumn(name="提报人姓名",index =3,width = 6)
    private String memberName;
    @ApiModelProperty(value = "申请人所属组织名称", example = "1")
    @TableField(exist = false)
@@ -104,7 +104,7 @@
    private String companyName;
    @ApiModelProperty(value = "责任部门名称", example = "1")
    @TableField(exist = false)
    @ExcelColumn(name="责任部门名称",index = 0)
    @ExcelColumn(name="责任部门名称",index = 0,width = 10)
    private String dutyCompanyName;
    @ApiModelProperty(value = "申请人手机号", example = "1")
    @TableField(exist = false)
@@ -124,7 +124,7 @@
    private String checkorPhone;
    @ApiModelProperty(value = "隐患类型名称", example = "1")
    @TableField(exist = false)
    @ExcelColumn(name="隐患类型",index = 2)
    @ExcelColumn(name="隐患类型",index = 2,width = 10)
    private String categoryName;
    @ApiModelProperty(value = "查询开始时间(基于提报时间)", example = "2024-05-20 11:48:50")
@@ -145,12 +145,12 @@
    @ApiModelProperty(value = "提报时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name="提报时间",index = 6,dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name="提报时间",index = 6,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
    private Date submitTime;
    @ApiModelProperty(value = "处理时间(整改/退回使用)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name="处理时间",index = 7 ,dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ExcelColumn(name="处理时间",index = 7 ,dateFormat = "yyyy-MM-dd HH:mm:ss",width = 18)
    private Date dealTime;
    @ApiModelProperty(value = "附件信息")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
@@ -65,8 +65,8 @@
    @ExcelColumn(name="入库类型",index = 7,width = 12,valueMapping = "0=整托盘;1=件烟;")
    private Integer inType;
    @ApiModelProperty(value = "总运输量", example = "1")
    @ExcelColumn(name="总运输量",index = 2,width = 12)
    @ApiModelProperty(value = "总作业量(万支)", example = "1")
    @ExcelColumn(name="总作业量(万支)",index = 2,width = 12)
    private BigDecimal totalNum;
    @ApiModelProperty(value = "前车牌号")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/PlatformWaterGasForExcelVO.java
@@ -22,22 +22,22 @@
public class PlatformWaterGasForExcelVO {
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="最近操作时间",index = 5,dateFormat="yyyy-MM-dd HH:mm",width = -1)
    @ExcelColumn(name="最近操作时间",index = 5,dateFormat="yyyy-MM-dd HH:mm",width = 20)
    private Date editDate;
    @ApiModelProperty(value = "时间(年月)")
    @ExcelColumn(name="使用月份",index = 2,dateFormat="yyyy-MM")
    @ExcelColumn(name="使用月份",index = 2,dateFormat="yyyy-MM",width = 10)
    private Date timeInfo;
    @ApiModelProperty(value = "类型 0用水 1用气 2用油", example = "1")
    @ExcelColumn(name="类型",valueMapping = "0=用水;1=用气;2=用油;",index = 0)
    @ExcelColumn(name="类型",valueMapping = "0=用水;1=用气;2=用油;",index = 0,width = 10)
    private Integer type;
    @ApiModelProperty(value = "数量 (用电顿,用电度; æ²¹è€—L)", example = "1")
    @ExcelColumn(name="数量",index = 3)
    @ExcelColumn(name="数量",index = 3,width = 10)
    private BigDecimal num;
    @ApiModelProperty(value = "说明")
    @ExcelColumn(name="说明",index = 4)
    @ExcelColumn(name="说明",index = 4,width = 20)
    private String content;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/EnergyModelDataVO.java
@@ -1,9 +1,11 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.core.haikang.model.param.respose.RegionDataRankingDataResponse;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
@@ -28,4 +30,7 @@
    @ApiModelProperty(value = "同比值" ,hidden = true)
    private BigDecimal sameNum;
    @ApiModelProperty(value = "各个区域用电信息")
    private List<RegionDataRankingDataResponse> regionDataRankingDataList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -424,8 +424,6 @@
        return hiddenDangerMapper.selectCount(wrapper);
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void dealHiddenDanger(HiddenDanger hiddenDanger){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -14,6 +14,7 @@
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.haikang.service.HKCarOpenService;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -39,7 +40,9 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -1421,7 +1424,6 @@
        }
        if(data == null){
            data = new RegionEnergyListResponse();
            data.setSecondRegionDataList(new ArrayList<>());
            data.setRootValue("0");
            data.setSamePercent("0");
            data.setRingPercent("0");
@@ -1927,4 +1929,32 @@
        return  data;
    }
    /**
     * æŸ¥è¯¢èƒ½è€—用电信息  1=今日;2=本月;3=昨日
     * @return
     */
    @Override
    public List<RegionDataRankingDataResponse> getRegionDataRanking(Integer type){
        RegionDataRankingDataRequest request = new RegionDataRankingDataRequest();
        request.setMeterType(1);
        if(Constants.equalsInteger(type,Constants.ONE)){
            request.setDate(DateUtil.getFomartDate(new Date(),"yyyy-MM-dd"));
            request.setPeriodType("day");
        }else if(Constants.equalsInteger(type,Constants.TWO)){
            request.setDate(DateUtil.getFomartDate(new Date(),"yyyy-MM"));
            request.setPeriodType("month");
        }else{
            request.setDate(DateUtil.getBeforDay(new Date(),1));
            request.setPeriodType("day");
        }
        BaseResponse<List<RegionDataRankingDataResponse>> response = HKService.regionDataRanking(request);
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
            return response.getData();
        }else{
            return null;
        }
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/TmsServiceImpl.java
@@ -136,15 +136,20 @@
                TMSContants.TopStatusLevel tem = TMSContants.TopStatusLevel.ddsc;
                if(i == 0){
                    tem=TMSContants.TopStatusLevel.yrk;
                } if(i == 1){
                }
                if(i == 1){
                    tem=TMSContants.TopStatusLevel.ydh;
                } if(i == 2){
                }
                if(i == 2){
                    tem=TMSContants.TopStatusLevel.clysz;
                } if(i == 4){
                }
                if(i == 4){
                    tem=TMSContants.TopStatusLevel.ckckz;
                } if(i == 3){
                }
                if(i == 3){
                    tem=TMSContants.TopStatusLevel.ydpzz;
                } if(i == 5){
                }
                if(i == 5){
                    tem=TMSContants.TopStatusLevel.ddsc;
                }
                t.setName(tem.getName());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
@@ -1,10 +1,8 @@
package com.doumee.service.business.third;
import com.doumee.core.haikang.model.cars.response.CarsAlarmResultListResponse;
import com.doumee.core.haikang.model.param.respose.PageFireChannelInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse;
import com.doumee.core.haikang.model.param.respose.RegionEnergyListResponse;
import com.doumee.core.haikang.model.param.request.RegionDataRankingTypeRequest;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.dao.business.model.PlatformWarnEvent;
import com.doumee.dao.web.reqeust.CarsJobAndContractDTO;
import com.doumee.dao.web.response.platformReport.*;
@@ -92,4 +90,6 @@
    List<GeneralVO> todayTotalInList();
    List<CarsAlarmResultListResponse> carsEventList();
    List<RegionDataRankingDataResponse> getRegionDataRanking(Integer type);
}