jiangping
2025-01-03 d646942cde0a89277abd4d9c879ee399f28341cb
Merge remote-tracking branch 'origin/master'
已修改9个文件
220 ■■■■■ 文件已修改
admin/src/views/task/index.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/App.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/login/login.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/wdata/detail.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/wdata/home.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/wdata/list.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/FireFighting.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/LogisticsCenter.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/TaskEfficiency.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/index.vue
@@ -1,18 +1,9 @@
<template>
  <div class="main_app">
    <QueryForm
      v-model="filters"
      :query-form-config="queryFormConfig"
      @handleQuery="getList(1)"
      @clear="clear"
      @changeForm='changeForm'
    >
    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getHeadData(1)" @clear="clear"
      @changeForm='changeForm'>
      <template #fastdate>
        <el-radio-group
          v-model="filters.fastdate"
          size="small"
          @input="changeRadio"
        >
        <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">
          <el-radio-button label="0">当天</el-radio-button>
          <el-radio-button label="6">近7天</el-radio-button>
          <el-radio-button label="29">近30天</el-radio-button>
@@ -20,17 +11,11 @@
      </template>
    </QueryForm>
    <!--  -->
    <el-tabs v-model="filters.queryType" @tab-click="(e) => getList(1)">
    <el-tabs v-model="filters.queryType" @tab-click="(e) => getHeadData(1)">
      <el-tab-pane label="待处理" name="0">
        <template #label>
          <span
            >待处理
            <el-badge
              v-if="headData.noticeWaitNum"
              :value="headData.noticeWaitNum"
              class="item"
              type="danger"
            >
          <span>待处理
            <el-badge v-if="headData.noticeWaitNum" :value="headData.noticeWaitNum" class="item" type="danger">
            </el-badge>
          </span>
        </template>
@@ -41,27 +26,14 @@
      </el-tab-pane>
      <el-tab-pane :value="headData.noticeCopyNum" label="抄送我的" name="3">
        <template #label>
          <span
            >抄送我的
            <el-badge
              v-if="headData.noticeCopyNum"
              :value="headData.noticeCopyNum"
              class="item"
              type="danger"
            >
          <span>抄送我的
            <el-badge v-if="headData.noticeCopyNum" :value="headData.noticeCopyNum" class="item" type="danger">
            </el-badge>
          </span>
        </template>
      </el-tab-pane>
    </el-tabs>
    <el-table
      v-loading="loading"
      :data="dataList"
      stripe
      row-key="id"
      class="mb20"
      default-expand-all
    >
    <el-table v-loading="loading" :data="dataList" stripe row-key="id" class="mb20" default-expand-all>
      <el-table-column label="处理事项" min-width="160">
        <template slot-scope="{ row }"> {{ row.title}}
        </template>
@@ -71,27 +43,23 @@
      </el-table-column>
      <el-table-column label="操作" width="230" fixed="right">
        <template slot-scope="{ row }">
          <el-button
            type="text"
            @click="handleDetail(row)"
            >查看详情</el-button
          >
          <el-button type="text" @click="handleDetail(row)">查看详情</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      @size-change="handleSizeChange"
      @current-change="getList"
      :pagination="pagination"
    />
    <TaskDetail v-if="isShowDetail" ref="DetailRef" @close="isShowDetail = false" @success="SubSuccess('isShowDetail')" />
    <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" @close="isShowReport = false" @success="SubSuccess('isShowReport')" />
    <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" @close="isShowDanger = false" @success="SubSuccess('isShowDanger')" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" @close="isShowDriver = false" @success="SubSuccess('isShowDriver')" />
    <pagination @size-change="handleSizeChange" @current-change="getHeadData" :pagination="pagination" />
    <TaskDetail v-if="isShowDetail" ref="DetailRef" @close="isShowDetail = false"
      @success="SubSuccess('isShowDetail')" />
    <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" @close="isShowReport = false"
      @success="SubSuccess('isShowReport')" />
    <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" @close="isShowDanger = false"
      @success="SubSuccess('isShowDanger')" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" @close="isShowDriver = false"
      @success="SubSuccess('isShowDriver')" />
    <!-- 用车申请 -->
    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getList" />
    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getHeadData" />
    <!-- 隐患 -->
    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getList" />
    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getHeadData" />
    <!-- 预约详情 -->
    <OperaVisitsDesWindow ref="OperaVisitsDesWindow" />
  </div>
@@ -185,17 +153,17 @@
  created () {
    // this.getHeadData()
    // this.changeRadio('0')
    this.getList()
    this.getHeadData()
  },
  methods: {
    changeRadio (day) {
      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
      this.$set(this.filters, 'selTime', arr)
      this.getList()
      this.getHeadData()
    },
    SubSuccess(str) {
      this[str] = false
      this.getTaskList()
      this.getHeadData()
    },
    handleTest (row) {
      getAppHeaderNav(5).then(res => {
@@ -210,7 +178,7 @@
    },
    handleDetail (row) {
      if (row.type === 7) {
        this.handleTest(row);
        this.handleTest(row)
        return
      }
      if (this.filters.queryType == 3) {
@@ -264,11 +232,10 @@
    changeForm (str) {
      if (str === 'selTime') {
        this.$set(this.filters, 'fastdate', null)
        this.getList()
        this.getHeadData()
      }
    },
    getList (page) {
      this.getHeadData()
      const { filters, pagination } = this
      if (filters.selTime && filters.selTime.length > 0) {
        filters.startDate = filters.selTime[0]
@@ -283,14 +250,17 @@
        ...pagination
      }).then(res => {
        console.log('res', res)
        this.loading = false
        this.dataList = res.records || []
        this.pagination.total = res.total || 0
        this.dataList.forEach(i => {
          i.param1 = JSON.parse(i.param1)
        }, () => {
          this.loading = false
        })
      })
    },
    getHeadData () {
    getHeadData(page) {
      const { filters } = this
      if (filters.selTime && filters.selTime.length > 0) {
        filters.startDate = filters.selTime[0]
@@ -299,15 +269,19 @@
        filters.startDate = null
        filters.endDate = null
      }
      this.loading = true
      taskCenterHeadPC({ ...filters, queryType: Number(filters.queryType), isDetail: '1' }).then(res => {
        this.headData = res
        this.getList(page)
      }, () => {
        this.loading = false
      })
    },
    clear () {
      this.filters = {
        queryType: '0',
      }
      this.getList(0)
      this.getHeadData(0)
    },
    handleSizeChange (capacity) {
      this.pagination.capacity = capacity
h5/App.vue
@@ -7,6 +7,7 @@
        if(path == '/pages/login/login' || path == '/'){
                window.location.href = app_url
            }
            // console.log('path', path);
            if(path == '/pages/wdata/home'){
                window.location.href = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/wdata/home'
            }
h5/pages/login/login.vue
@@ -41,7 +41,7 @@
    export default {
        data() {
            return {
                code: 'aaa'
                code: ''
            }
        },
        onLoad(option) {
@@ -59,6 +59,11 @@
            let url = 'https://atwl.ahzyssl.com/zhyq_h5/#/'
            let code = ''
            if (window.location.href.indexOf('code=') !== -1 || this.code) {
                // if(window.location.href.indexOf('wdata') !== -1){
                //     uni.redirectTo({
                //         url: '/pages/wdata/home?code=' +
                //     })
                // }
                const ywinfo = uni.getStorageSync('ywinfo') || {}
                 if(ywinfo.ywid && (ywinfo.type || ywinfo.type == 0)){
                     this.userAuth(ywinfo.type)
h5/pages/wdata/detail.vue
@@ -81,7 +81,7 @@
                            <image v-else src="@/static/waybill/ic_dingdan@2x.png" mode=""></image>
                        </view>
                        <view class="content">
                            <view class="name">{{item.receiveLocation}}</view>
                            <view class="name" :class="{primaryColor: (info.logisticsStatus == 1 && item.actualArrivedDate) || info.logisticsStatus == 2}">{{item.receiveLocation}}</view>
                            <view class="status">
                                <view v-if="info.logisticsStatus == 0" class="btn">到货</view>
                                <view v-else-if="info.logisticsStatus == 1 && !item.actualArrivedDate" @click="startAri(item.stopNumber)"
@@ -95,7 +95,8 @@
                    </view>
                    <view class="top1">
                        <view class="left_icon"></view>
                        <view class="time">到货时间:{{ item.actualArrivedDate || '-' }}</view>
                        <view class="time" v-if="item.actualArrivedDate">到货时间:{{ item.actualArrivedDate}}</view>
                        <view class="time" style="margin-top: -10rpx;" v-else>-</view>
                    </view>
                </view>
            </view>
@@ -144,6 +145,7 @@
                            }).then((ress) => {
                                if (ress.code == 200) {
                                    this.showToast('启运成功')
                                    this.getDetail()
                                }
                            })
                        }
@@ -163,6 +165,7 @@
                            }).then(ress => {
                                if (ress.code == 200) {
                                    this.showToast('到货成功')
                                    this.getDetail()
                                }
                            })
                        }
@@ -185,7 +188,6 @@
        position: absolute;
        top: 0;
        left: 0;
        z-index: -1;
    }
    .info {
@@ -193,7 +195,8 @@
        overflow: hidden;
        margin-top: 30rpx;
        background: #FFFFFF;
        position: relative;
        z-index: 1;
        .head {
            display: flex;
            justify-content: space-between;
@@ -256,7 +259,7 @@
                color: #222222;
                .line {
                    height: 68rpx;
                    min-height: 68rpx;
                    align-items: center;
                    display: flex;
                    border-bottom: 1px solid #E5E5E5;
@@ -297,7 +300,7 @@
        border-radius: 16rpx;
        padding: 30rpx;
        margin-top: 20rpx;
        margin-bottom: 20rpx;
        .title {
            font-weight: 500;
            font-size: 32rpx;
@@ -308,7 +311,10 @@
        .list {
            .item {
                position: relative;
                padding-bottom: 24rpx;
                &:nth-last-child(1){
                    padding-bottom: 0;
                }
                .dian {
                    border: 1rpx dashed #CCCCCC;
                    height: calc(100% - 48rpx);
@@ -320,7 +326,6 @@
                .top1 {
                    display: flex;
                    .left_icon {
                        width: 78rpx;
@@ -334,7 +339,7 @@
                        flex: 1;
                        display: flex;
                        justify-content: space-between;
                        align-items: center;
                        // align-items: center;
                        margin-bottom: 12rpx;
                        .name {
@@ -346,7 +351,7 @@
                        .status {
                            display: flex;
                            align-items: center;
                            // align-items: center;
                            font-size: 26rpx;
                            .btn {
@@ -363,6 +368,7 @@
                            .pri {
                                color: #fff;
                                background-color: $uni-color-primary;
                                border: 1rpx solid $uni-color-primary;
                            }
                            image {
h5/pages/wdata/home.vue
@@ -52,7 +52,7 @@
                let uri = encodeURIComponent(url)
                let authURL =
                    `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_base#wechat_redirect`
                // window.location.href = authURL
                window.location.href = authURL
            }
        },
        methods: {
@@ -66,7 +66,7 @@
                loginDriverWithCode({
                    phone,
                    code,
                    openid: this.$store.state.openId || '000'
                    openid: this.$store.state.openId || '111'
                }).then(res => {
                    if (res && res.code == 200) {
                        if (res.data) {
@@ -74,9 +74,11 @@
                            getUserInfo().then(ress => {
                                this.$store.commit('setDriverInfo', ress.data)
                            })
                            setTimeout(() => {
                            uni.navigateTo({
                                url: '/pages/wdata/list'
                            })
                            }, 300)
                        }
                    }
                })
@@ -89,7 +91,7 @@
                sendSms({
                    phone: this.form.phone
                }).then(res => {
                    this.countDown = 60
                    this.countDown = 10
                    setInterval(() => {
                        if (this.countDown == 0) return
                        this.countDown--
h5/pages/wdata/list.vue
@@ -1,10 +1,10 @@
<template>
    <view class="main_app">
        <view class="title_wrap">
            <view class="name" v-if="driverInfo.realname">{{ driverInfo.realname || "" }},欢迎登录~</view>
            <view class="name" v-if="driverInfo.realname || driverInfo.username">{{ driverInfo.realname || driverInfo.username }},欢迎登录~</view>
            <view class="name" v-else>请先登录</view>
            <view class="btn" @click="loginOut">{{
                driverInfo.realname ? "退出登录" : "去登录"
                driverInfo.realname || driverInfo.username ? "退出登录" : "去登录"
            }}</view>
        </view>
        <view class="head_wrap">
@@ -55,7 +55,8 @@
<script>
    import {
        putTaskList,
        logoutPost
        logoutPost,
        getUserInfo
    } from '@/api'
    import dayjs from 'dayjs';
    export default {
@@ -73,7 +74,7 @@
            };
        },
        onLoad(options) {
            this.driverInfo = uni.getStorageSync('driverInfo')
            this.driverInfo = uni.getStorageSync('driverInfo') || {}
            this.getList()
        },
        methods: {
@@ -110,7 +111,7 @@
                        driverTel: this.driverInfo.username
                    },
                    pager: {
                        rows: 10,
                        rows: 30,
                        page
                    }
                }).then(res => {
@@ -126,9 +127,8 @@
                }).then(res => {
                    this.$store.commit('empty')
                    setTimeout(() => {
                        uni.redirectTo({
                            url: '/pages/wdata/home'
                        })
                        let str = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/wdata/home'
                        window.location.href = str
                    }, 300)
                })
            }
@@ -220,7 +220,7 @@
    .scroll_Y {
        background-color: #f7f7f7;
        height: calc(100vh - 240rpx);
        height: calc(100vh - 220rpx);
        margin-top: 20rpx;
        .main_list {
            width: 750rpx;
screen/src/views/FireFighting.vue
@@ -147,7 +147,9 @@
                  <div class="item">
                    <img class="icon" src="@/assets/images/FireFighting/ic_wendu@2x.png" alt="">
                    <div class="content">
                      <div class="num" v-if="dataList8[dataIndex8].temperatureData && dataList8[dataIndex8].temperatureData.latestValue">{{ Number(dataList8[dataIndex8].temperatureData.latestValue).toFixed(1) }}<span>°C</span></div>
                      <div class="num"
                        v-if="dataList8[dataIndex8].temperatureData && dataList8[dataIndex8].temperatureData.latestValue">
                        {{ Number(dataList8[dataIndex8].temperatureData.latestValue).toFixed(1) }}<span>°C</span></div>
                      <div class="la">阈值 {{ dataList8[dataIndex8].temperatureData?.alarmLow }}~{{
                        dataList8[dataIndex8].temperatureData?.alarmHigh }}°C</div>
                    </div>
@@ -155,7 +157,9 @@
                  <div class="item">
                    <img class="icon" src="@/assets/images/FireFighting/ic_shidu@2x.png" alt="">
                    <div class="content">
                      <div class="num" v-if="dataList8[dataIndex8].humidityData && dataList8[dataIndex8].humidityData.latestValue">{{ Number(dataList8[dataIndex8].humidityData.latestValue).toFixed(1) }}<span>%</span></div>
                      <div class="num"
                        v-if="dataList8[dataIndex8].humidityData && dataList8[dataIndex8].humidityData.latestValue">{{
                          Number(dataList8[dataIndex8].humidityData.latestValue).toFixed(1) }}<span>%</span></div>
                      <div class="la">阈值 {{ dataList8[dataIndex8].humidityData?.alarmLow }}~{{
                        dataList8[dataIndex8].humidityData?.alarmHigh }}°C</div>
                    </div>
@@ -284,7 +288,7 @@
                        <span class="status" v-else-if="item.handleStatus == 3">核实中</span>
                        <span v-else class="status">未核实</span>
                      </div>
                      <div class="have_time">已经发生{{ item.haveTime }}</div>
                      <div class="have_time">已发生{{ item.haveTime }}</div>
                    </div>
                    <div class="wrap">
                      <div class="title">
@@ -520,7 +524,7 @@
  let conNum = maxNum - minNum
  let acNum = item.obj.value.replaceAll('M', '')
  var data = (((acNum - minNum) / conNum) * 100).toFixed(0)
  console.log('data', data);
  console.log('data', data)
  
  const option = {
    tooltip: {
@@ -929,7 +933,14 @@
  getFighalarmDataList().then(res => {
    dataList7.value = res.data || []
    dataList7.value = dataList7.value.map(item => {
      item.haveTime = dayjs.duration(new Date().getTime() - new Date(item.alarmTime).getTime()).format('H小时m分钟')
      let times = new Date().getTime() - new Date(item.alarmTime).getTime()
      if (times > 86400000) {
        item.haveTime = dayjs.duration(times).format('D天H小时m分钟')
      } else if (times > 3600000) {
        item.haveTime = dayjs.duration(times).format('H小时m分钟')
      } else {
        item.haveTime = dayjs.duration(times).format('m分钟')
      }
      return item
    })
  })
@@ -1252,6 +1263,7 @@
      width: 108%;
      display: flex;
      margin: 0 -4%;
      .content_wrap {
        flex: 1;
        flex-shrink: 0;
screen/src/views/LogisticsCenter.vue
@@ -518,14 +518,23 @@
    { name: '澳门特别行政区', code:'820003',value: 0 },
    { name: '南海诸岛', code:'',value: 0 },
  ]
  let totalNum = 0
  mapList.value.forEach(i => {
    totalNum += i.yearNum
  })
  mapData.forEach(item => {
    item.monthNum = 0
    item.yearNum = 0
    mapList.value.forEach(ite => {
      if (item.code == ite.code) {
        item.value = ite.yearNum
        item.value = 0
        item.monthNum = ite.monthNum
        item.yearNum = ite.yearNum
        if(totalNum > 0){
          item.rate = ((ite.yearNum / totalNum) * 100).toFixed(2)
          item.value = (ite.yearNum / totalNum).toFixed(4)
        }
      }
    })
  })
@@ -535,10 +544,14 @@
    visualMap: {
      type: 'piecewise',
      pieces: [
        { min: 100000, max: 99999999999, label: '出库量10w以上', color: '#be6f2b' },
        { min: 50000, max: 100000, label: '出库量5-10w', color: '#c39332' },
        { min: 20000, max: 50000, label: '出库量2-5w', color: '#5ecbaf' },
        { min: -1, max: 20000, label: '出库量2w以下', color: '#3561a4' },
        { min: 0.05, max: 99999999999, label: '调拨量占比5%以上', color: '#be6f2b' },
        { min: 0.02, max: 0.05, label: '调拨量占比2%~5%', color: '#c39332' },
        { min: 0.01, max: 0.02, label: '调拨量占比1%~2%', color: '#5ecbaf' },
        { min: -1, max: 0.01, label: '调拨量占比1%以下', color: '#3561a4' },
        // { min: 100000, max: 99999999999, label: '出库量10w以上', color: '#be6f2b' },
        // { min: 50000, max: 100000, label: '出库量5-10w', color: '#c39332' },
        // { min: 20000, max: 50000, label: '出库量2-5w', color: '#5ecbaf' },
        // { min: -1, max: 20000, label: '出库量2w以下', color: '#3561a4' },
      ],
      itemWidth: 22,
      itemHeight: 22,
@@ -644,17 +657,24 @@
                        <div class="item-state-con">
                          <span class="dot bj"></span>
                          <span class="item-state-num">
                            <span class="text">本月出库量:</span>
                            <span class="text">本月调拨量:</span>
                            <span class="num">${params.data.monthNum}万支</span>
                          </span>
                        </div>
                         <div class="item-state-con">
                          <span class="dot yj"></span>
                          <span class="item-state-num">
                           <span class="text">本年出库量:</span>
                           <span class="text">本年调拨量:</span>
                            <span class="num">${params.data.yearNum}万支</span>
                          </span>
                        </div>
                        <div class="item-state-con">
                          <span class="dot yj"></span>
                          <span class="item-state-num">
                           <span class="text">调拨量占比:</span>
                            <span class="num">${params.data.rate || 0}%</span>
                          </span>
                        </div>
                       </div>`
          }
        },
screen/src/views/TaskEfficiency.vue
@@ -1021,9 +1021,11 @@
            box-shadow: inset 0px 0px 3px 0px #01D9FE;
            margin-right: 10px;
          }
          .top3{
            box-shadow: inset 0px 0px 3px 0px #FEAF01;
          }
          .one-swiper-slide {
            height: 40px !important;
          }
@@ -1041,11 +1043,14 @@
          .num {
            font-weight: 500;
            width: 82px;
            width: 88px;
            text-align: right;
            font-size: 13px;
            color: #DBEAEA;
            margin-left: 2px;
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
          }
          .wrap {
@@ -1153,6 +1158,7 @@
        left: 850px;
        top: 60px;
        z-index: 99999999;
        .head {
          display: flex;
          justify-content: space-between;