k94314517
2024-10-12 51e18e190dafdec70dc1f4a3a9ecd76fb2116726
Merge remote-tracking branch 'origin/master'
已添加20个文件
已删除1个文件
已修改31个文件
1671 ■■■■■ 文件已修改
admin/.env.development 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/sms.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/workbench/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/QueryForm/queryForm.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/RichEditor.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/internalMember.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/relativeMember.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/visitorSources.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/LogisticsRecord/leaveAuth.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/LogisticsRecord/subscribe.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/LogisticsRecord/waybill.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/components/PlatformSign.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/queueUp.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/smsMessage.vue 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/driverDetail.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/task/visSubDetail.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/task/driver.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/config.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/manifest.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/pages/index/control.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/utils/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/bg@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/car_kongxian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/car_lixian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/car_zaitu@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/china@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/chuku_ic_car@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/chuku_task.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/chuku_task_ac.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/ic_bili@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/ic_chukuxiaolv@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/ic_renwuzongliang@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/ic_rukuxiaolv@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/ic_wanchengrenwu@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/map_car_kongxian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/map_car_lixian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/map_car_zaitu@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/ruku_task.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/energy_ef/ruku_task_ac.png 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/assets/images/maintitle.gif 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/router/index.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/EnergyConsum.vue 497 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/LogisticsControl.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/LogisticsEfficiency.vue 637 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/PlatformCall.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WmsPushCloudTestController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/tms/model/response/TmsOrderInfoResponse.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/TmsServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/TmsService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.development
@@ -2,6 +2,7 @@
NODE_ENV = 'development'
VUE_APP_API_URL  = 'http://localhost:10010'
# VUE_APP_API_URL  = 'http://192.168.0.103:10010'
VUE_APP_API_URL  = 'http://10.50.250.253:8088/gateway_interface'
# VUE_APP_API_URL  = 'http://192.168.0.139:10010'
# VUE_APP_API_URL  = 'http://10.50.250.253:8088/gateway_interface'
VUE_APP_API_URL  = 'https://dmtest.ahapp.net/antai_admin_interface/'
admin/src/api/system/sms.js
@@ -8,3 +8,11 @@
export function SmsStatusUpdate (data) {
  return request.post('/visitsAdmin/cloudService/business/smsConfig/updateById', data)
}
// çŸ­ä¿¡é€šçŸ¥ æ‰¹é‡çŠ¶æ€æ›´æ–°
export function SmsStatussUpdate (data) {
  return request.get('/visitsAdmin/cloudService/business/smsConfig/updateStatus/batch', {
    params: {
      ...data
    }
  })
}
admin/src/api/workbench/index.js
@@ -23,4 +23,10 @@
// ä»»åŠ¡ä¸­å¿ƒå¤´éƒ¨
export function getWorkbenchTaskHead (data) {
  return request.post('/visitsAdmin/cloudService/business/staging/taskCenterHeadPC', data)
}
// pc工作台
export function getWorkbenchData (data) {
  return request.get('/visitsAdmin/cloudService/business/staging/pCWorkPlatformData', {
    params: {...data  }
  })
}
admin/src/components/common/QueryForm/queryForm.vue
@@ -2,15 +2,13 @@
  <div class="doumee-filter">
    <el-form inline label-suffix=":" @submit.native.prevent>
      <template v-for="(item, index) in queryFormConfig.formItems">
        <el-form-item v-if="item.type === 'input' && (showZk || index < listLength)" :key="item.filed"
          :label="item.label">
        <el-form-item v-if="item.type === 'input' && (showZk || index < listLength)" :key="item.filed">
          <el-input v-model="searchForm[item.filed]"
            :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
            :placeholder="item.placeholder ? item.placeholder : '请输入' + item.label" class="w200"
            :placeholder="item.label" class="w200"
            @change="changeForm(item.filed)" @keyup.enter.native="handlekeyup(item.keyup || false)" />
        </el-form-item>
        <el-form-item v-if="item.type === 'moneySelect' && (showZk || index < listLength)" :key="item.label"
          :label="item.label">
        <el-form-item v-if="item.type === 'moneySelect' && (showZk || index < listLength)" :key="item.label">
          <el-input v-model="searchForm[item.filedStrt]"
            :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
            :placeholder="item.start" style="width: 150px" />
@@ -19,49 +17,42 @@
            :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
            :placeholder="item.end" style="width: 150px" />
        </el-form-item>
        <el-form-item v-if="item.type === 'select' && (showZk || index < listLength)" :key="item.filed"
          :label="item.label">
        <el-form-item v-if="item.type === 'select' && (showZk || index < listLength)" :key="item.filed">
          <el-select v-model="searchForm[item.filed]" :filterable="item.filterable || true"
            :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
            :placeholder="item.placeholder ? item.placeholder : '请选择' + item.label" class="w200"
            :placeholder="item.label" class="w200"
            @change="changeForm(item.filed)">
            <el-option v-for="opt, i in item.options" :key="i" :value="item.valueCode ? opt[item.valueCode] : opt.value"
              :label="item.labelCode ? opt[item.labelCode] : opt.label" />
          </el-select>
        </el-form-item>
        <el-form-item v-if="item.type === 'date' && (showZk || index < listLength)" :key="item.filed"
          :label="item.label || '日期'">
        <el-form-item v-if="item.type === 'date' && (showZk || index < listLength)" :key="item.filed">
          <el-date-picker v-model="searchForm[item.filed]" type="date" value-format="yyyy-MM-dd" class="w200"
            :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
            :placeholder="item.placeholder || '请选择日期'" :picker-options="item.pickerOptions || {}"
            :placeholder="item.label" :picker-options="item.pickerOptions || {}"
            @change="changeForm(item.filed)" />
        </el-form-item>
        <el-form-item v-if="item.type === 'daterange' && (showZk || index < listLength)" :key="item.filed"
          :label="item.label || ''">
        <el-form-item v-if="item.type === 'daterange' && (showZk || index < listLength)" :key="item.filed">
          <el-date-picker v-model="searchForm[item.filed]" value-format="yyyy-MM-dd" type="daterange"
            range-separator="至"
            :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
            :start-placeholder="item.start || ''" :end-placeholder="item.end || ''"
            :picker-options="item.pickerOptions || {}" class="w400" @change="changeForm(item.filed)" />
        </el-form-item>
        <el-form-item v-if="item.type === 'timePicker' && (showZk || index < listLength)" :key="item.filed"
          :label="item.label || '选择时间'">
        <el-form-item v-if="item.type === 'timePicker' && (showZk || index < listLength)" :key="item.filed">
          <el-time-picker v-model="searchForm[item.filed]" is-range range-separator="至" format="HH:mm"
            value-format="HH:mm" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围" class="w400"
            @change="changeForm(item.filed)" />
        </el-form-item>
        <el-form-item v-if="item.type === 'datetimerange' && (showZk || index < listLength)" :key="item.filed"
          :label="item.label || '选择日期'">
        <el-form-item v-if="item.type === 'datetimerange' && (showZk || index < listLength)" :key="item.filed">
          <el-date-picker v-model="searchForm[item.filed]" format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange"
            :default-time="['00:00:00', '23:59:59']"
            value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" :default-time="['00:00:00', '23:59:59']"
            :picker-options="item.pickerOptions || pickerOptions" range-separator="至"
            :clearable="(item.clearable !== null && item.clearable !== undefined && item.clearable !== '') ? item.clearable : true"
            :start-placeholder="item.start || '开始时间'" :end-placeholder="item.end || '结束时间'" class="w400"
            @change="changeForm(item.filed)" />
        </el-form-item>
        <el-form-item v-if="item.type === 'slot' && (showZk || index < listLength)" :key="item.filed"
          :label="item.label">
        <el-form-item v-if="item.type === 'slot' && (showZk || index < listLength)" :key="item.filed">
          <slot :name="item.filed" />
        </el-form-item>
      </template>
@@ -100,13 +91,13 @@
      default: () => { }
    }
  },
  data () {
  data() {
    return {
      showZk: false,
      pickerOptions: {
        shortcuts: [{
          text: '近7天',
          onClick (picker) {
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(end.getTime() - 3600 * 1000 * 24 * 6)
@@ -115,7 +106,7 @@
        },
        {
          text: '近30天',
          onClick (picker) {
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(end.getTime() - 3600 * 1000 * 24 * 29)
@@ -124,7 +115,7 @@
        },
        {
          text: '近60天',
          onClick (picker) {
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(end.getTime() - 3600 * 1000 * 24 * 59)
@@ -133,14 +124,14 @@
        },
        {
          text: '近90天',
          onClick (picker) {
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(end.getTime() - 3600 * 1000 * 24 * 89)
            picker.$emit('pick', [start, end])
          }
        }],
        disabledDate (time) {
        disabledDate(time) {
          var curDate = new Date(new Date().toLocaleDateString()).getTime()
          var preDate = new Date(curDate + 24 * 60 * 60 * 1000 - 1)
          return time.getTime() > preDate
@@ -151,31 +142,31 @@
  emits: ['input', 'handleQuery', 'clear'],
  computed: {
    searchForm: {
      get () {
      get() {
        return this.value
      },
      set (value) {
      set(value) {
        this.$emit('input', value)
      }
    }
  },
  methods: {
    handleQuery () {
    handleQuery() {
      this.$emit('handleQuery')
    },
    handlekeyup (pd) {
    handlekeyup(pd) {
      if (pd) {
        this.$emit('handleQuery')
      }
    },
    changeForm (filed) {
    changeForm(filed) {
      this.$emit('changeForm', filed)
    },
    zkBtn () {
    zkBtn() {
      this.showZk = !this.showZk
      this.$emit('zkBtn', this.zk)
    },
    clear () {
    clear() {
      this.$emit('clear')
    }
  }
admin/src/components/common/RichEditor.vue
@@ -1,7 +1,7 @@
<template>
  <div :style="styleEditor">
    <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" />
    <Editor style="height: 300px; overflow-y: hidden;" v-model="html" :defaultConfig="editorConfig" :mode="mode"
    <Editor style="max-height: 300px;min-height: 100px; overflow-y: hidden;" v-model="html" :defaultConfig="editorConfig" :mode="mode"
            @onCreated="onCreated" @onChange="onChange" />
  </div>
</template>
@@ -10,6 +10,7 @@
import Vue from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import { Loading } from 'element-ui';
let loadingInstance = null
export default Vue.extend({
  props: {
    richData: { // çˆ¶ç»„件传递的数据
@@ -149,7 +150,7 @@
            timeout: 10 * 1000, //10 ç§’
            // ä¸Šä¼ å‰
            onBeforeUpload(files) {
              Loading.service({
              loadingInstance = Loading.service({
                lock: true,
                text: '上传中...',
                spinner: 'el-icon-loading',
@@ -162,7 +163,7 @@
              console.log(res);
              // å› ä¸ºè‡ªå®šä¹‰æ’入导致onSuccess与onFailed回调函数不起作用,自己手动处理
              // å…ˆå…³é—­ç­‰å¾…çš„Message
              Loading.service({
              loadingInstance = Loading.service({
                lock: true,
                text: '上传中...',
                spinner: 'el-icon-loading',
@@ -187,6 +188,7 @@
            // å•个文件上传失败
            onFailed(file, res) {
              console.log(`${file.originalFilename} ä¸Šä¼ å¤±è´¥`, res);
              loadingInstance.close();
            },
            // ä¸Šä¼ è¿›åº¦çš„回调函数
            onProgress(progress) {
@@ -195,6 +197,7 @@
            },
            // ä¸Šä¼ é”™è¯¯ï¼Œæˆ–者触发 timeout è¶…æ—¶
            onError(file, err, res) {
              loadingInstance.close();
              console.log(`${file.originalFilename} ä¸Šä¼ å‡ºé”™`, err, res);
            }
          },
admin/src/views/business/internalMember.vue
@@ -58,7 +58,7 @@
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
            v-permissions="['business:member:delete']">批量删除</el-button></li>
        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()"
            icon="el-icon-plus">下发授权</el-button></li>
            >下发授权</el-button></li>
        <li style="float: right">
          <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1"
            @change="search">是否包含下级组织</el-checkbox>
admin/src/views/business/relativeMember.vue
@@ -65,8 +65,8 @@
            icon="el-icon-plus" v-permissions="['business:traintime:create']">培训期导入</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
            v-permissions="['business:member:delete']">批量删除</el-button></li>
        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()"
            icon="el-icon-plus">下发授权</el-button></li>
        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">下发授权</el-button></li>
        <li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">导出</el-button></li>
      </ul>
      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55"></el-table-column>
@@ -147,7 +147,7 @@
        <el-table-column label="卡片" min-width="80px">
          <template slot-scope="{row}">
            <el-button @click="$refs.cardOpeningRecord.open('开卡记录', row.id)" type="text">{{ row.memberCardCount ||
              '0'}}</el-button>
              '0' }}</el-button>
          </template>
        </el-table-column>
        <el-table-column prop="editorName" label="操作人" min-width="100px"></el-table-column>
@@ -383,6 +383,7 @@
<style lang="scss" scoped>
@import '@/assets/style/variables.scss';
.box {
  width: 100%;
  display: flex;
@@ -399,6 +400,7 @@
    height: 100%;
  }
}
.zhuguan {
  color: $primary-color;
  border: 1px solid $primary-color;
admin/src/views/business/visitorSources.vue
@@ -75,25 +75,28 @@
        />
      </el-form-item>
      <el-form-item label="在园须知:" prop="visitNotice">
        <el-tiptap
        <!-- <el-tiptap
          style="width: 50%"
          v-model="form.visitNotice"
          :extensions="extensions"
        />
        /> -->
        <RichEditor style="width: 70%" :richData="form.visitNotice" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/>
      </el-form-item>
      <el-form-item label="访客预约指南:" prop="visitNotice">
        <el-tiptap
        <!-- <el-tiptap
          style="width: 50%"
          v-model="form.visitTips"
          :extensions="extensions"
        />
        /> -->
        <RichEditor style="width: 70%" :richData="form.visitTips" :styleEditor="styleEditor" @getWangedditor="getWangedditor1" :readonly="false"/>
      </el-form-item>
      <el-form-item label="访客入园导览图:" prop="visitNotice">
        <el-tiptap
        <!-- <el-tiptap
          style="width: 50%"
          v-model="form.visitMap"
          :extensions="extensions"
        />
        /> -->
        <RichEditor style="width: 70%" :richData="form.visitMap" :styleEditor="styleEditor" @getWangedditor="getWangedditor2" :readonly="false"/>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submit">保存配置项</el-button>
@@ -104,6 +107,7 @@
<script>
import { getVisitConfigDTO, updateVisitConfig } from '@/api/system/common'
import RichEditor from '@/components/common/RichEditor'
import {
  // necessary extensions
  Doc,
@@ -131,7 +135,9 @@
import { upload } from '@/api/system/common'
export default {
  name: 'visitorSources',
  components: {
    RichEditor
  },
  data() {
    return {
      form: {
@@ -148,6 +154,7 @@
        visitTips: '',
        frezzDays: null
      },
      styleEditor:'border: 1px solid #ccc;display: inline-block;',
      extensions: [
        new Doc(),
        new Text(),
@@ -188,6 +195,15 @@
  },
  methods: {
    getWangedditor(val){
      this.form.visitNotice =val
    },
    getWangedditor1(val){
      this.form.visitTips =val
    },
    getWangedditor2(val){
      this.form.visitMap =val
    },
    getData() {
      getVisitConfigDTO({})
        .then(res => {
admin/src/views/index.vue
@@ -226,8 +226,7 @@
import * as echarts from 'echarts'
import { weeks } from '@/utils/config'
import {
  getWorkbenchBody,
  getWorkbenchHead,
  getWorkbenchData,
  getAppHeaderNav
} from '@/api'
const colors = ['#52a4f7', '#7678f7', '#5fc6d5']
@@ -283,10 +282,10 @@
      this.initEchart4()
    },
    getWorkBody() {
      getWorkbenchBody()
      getWorkbenchData({queryType: 2})
    },
    getWorkHead() {
      getWorkbenchHead()
      getWorkbenchData({queryType: 1})
    },
    initEchart1() {
      const myChart = echarts.init(document.getElementById('echart1'))
@@ -458,9 +457,9 @@
            symbol: 'circle',
            symbolSize: 10,
            itemStyle: {
              normal: {
                color: '#207FF7' // æŠ˜çº¿ç‚¹çš„颜色
              }
              borderWidth: 1,
              borderColor: '#fff',
              color: '#207FF7'
            },
            smooth: false
          }
@@ -557,9 +556,9 @@
            symbol: 'circle',
            symbolSize: 10,
            itemStyle: {
              normal: {
                color: '#42D49D' // æŠ˜çº¿ç‚¹çš„颜色
              }
              borderWidth: 1,
              borderColor: '#fff',
              color: '#42D49D' // æŠ˜çº¿ç‚¹çš„颜色
            },
            smooth: false
          }
admin/src/views/platform/LogisticsRecord/leaveAuth.vue
@@ -121,6 +121,15 @@
            label: '驾驶员'
          },
          {
            filed: 'queryStatusForPower',
            type: 'select',
            label: '授权状态',
            options: [
              { value: '9,10', label: '已授权' },
              { value: '6', label: '未授权' }
            ]
          },
          {
            filed: 'selDate',
            type: 'datetimerange',
            label: '作业完成时间搜索',
admin/src/views/platform/LogisticsRecord/subscribe.vue
@@ -171,6 +171,18 @@
            label: '合同单号'
          },
          {
            filed: 'status',
            type: 'select',
            label: '审批结果',
            options: [
              { value: 0, label: '待审批' },
              { value: 1, label: '审批中' },
              { value: 2, label: '审批通过' },
              { value: 3, label: '审批驳回' },
              { value: 4, label: '已取消' },
            ]
          },
          {
            filed: 'selDate',
            type: 'datetimerange',
            label: '操作时间',
@@ -289,7 +301,7 @@
        selDate: [],
        fastdate: 0,
      }
      this.getList()
      this.changeRadio('0')
    },
    handleDetail(row) {
      this.isShowDriver = true
admin/src/views/platform/LogisticsRecord/waybill.vue
@@ -105,6 +105,23 @@
            label: '车牌号'
          },
          {
            filed: 'status',
            type: 'select',
            label: '作业状态',
            options: [
              { value: 3, label: '入园等待' },
              { value: 4, label: '月台等待' },
              { value: 5, label: '作业中' },
              { value: 6, label: '作业完成' },
              { value: 7, label: '转移中' },
              { value: 8, label: '异常挂起' },
              { value: 9, label: '已授权离园' },
              { value: 10, label: '已离园' },
              { value: 11, label: '已过号' },
              { value: 12, label: '已取消' },
            ]
          },
          {
            filed: 'selDate',
            type: 'datetimerange',
            label: '操作时间',
admin/src/views/platform/components/PlatformSign.vue
@@ -45,8 +45,8 @@
            </div>
          </div>
          <div class="footer df_sb">
            <div @click="handleDetail(item)" v-if="item.type != 4" class="detail">运单详情</div>
            <div v-else></div>
            <div @click="handleDetail(item)" v-if="item.billCode" class="detail">运单详情</div>
            <div @click="subDetail(item)" v-else class="detail">预约详情</div>
            <el-button type="primary" @click="handleCall(item)">签到</el-button>
          </div>
        </div>
@@ -55,6 +55,7 @@
      </pagination>
    </div>
    <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
  </GlobalWindow>
</template>
@@ -62,6 +63,7 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import Pagination from '@/components/common/Pagination'
import WaybillDetailRef from "./WaybillDetail.vue"
import DriverDetail from "@/views/task/driverDetail.vue"
import { platformJobPage, platformJobSign } from '@/api'
import { statusMap } from '../config'
import { Message } from 'element-ui'
@@ -69,13 +71,15 @@
  components: {
    GlobalWindow,
    Pagination,
    WaybillDetailRef
    WaybillDetailRef,
    DriverDetail
  },
  data() {
    return {
      statusMap,
      isShowModal: false,
      isShowDetail: false,
      isShowDriver: false,
      subLoading: false,
      pagination: {
        total: 0,
@@ -108,6 +112,15 @@
        this.pagination.total = res.total
      })
    },
    subDetail(row) {
      this.isShowDriver = true
      this.$nextTick(() => {
        this.$refs.DriverDetailRef.id = row.bookId
        this.$refs.DriverDetailRef.type = row.objType
        this.$refs.DriverDetailRef.getDetail()
        this.$refs.DriverDetailRef.isShowModal = true
      })
    },
    handleDetail(row) {
      this.isShowDetail = true
      this.$nextTick(() => {
admin/src/views/platform/queueUp.vue
@@ -44,7 +44,9 @@
      <el-table-column prop="signDate" label="签到时间" min-width="150" />
      <el-table-column label="操作" align="center" width="100" fixed="right">
        <template slot-scope="{ row }">
          <el-button v-if="activeGroup.type == 2" type="text" @click="subDetail(row)">预约详情</el-button>
          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)"
            v-permissions="['business:company:update']">运单详情</el-button>
          <el-button v-else type="text" @click="subDetail(row)">预约详情</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -71,8 +73,9 @@
      <el-table-column prop="signDate" label="签到时间" min-width="150" />
      <el-table-column label="操作" align="center" width="100" fixed="right">
        <template slot-scope="{ row }">
          <el-button type="text" @click="handleDetail(row)"
          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)"
            v-permissions="['business:company:update']">运单详情</el-button>
          <el-button v-else type="text" @click="subDetail(row)">预约详情</el-button>
        </template>
      </el-table-column>
    </el-table>
admin/src/views/system/smsMessage.vue
@@ -1,20 +1,22 @@
<template>
  <div class="main_app">
    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)"
      @clear="clear">
    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear">
    </QueryForm>
    <!-- <div class="pt16">
      <el-button :loading="exLoading" @click="handleEx"
        v-permissions="['business:platformjob:exportExcel']">导出</el-button>
    </div> -->
    <el-table class="mb20" v-loading="loading" :data="list" stripe>
    <div class="pt16 mb10">
      <el-button type="primary" @click="batchStatus(0)"
        v-permissions="['business:platformjob:update']">批量启用</el-button>
      <el-button @click="batchStatus(1)" v-permissions="['business:platformjob:update']">批量禁用</el-button>
    </div>
    <el-table @selection-change="handleSelectionChange" class="mb20" v-loading="loading" :data="list" stripe>
      <el-table-column align="center" type="selection" width="55">
      </el-table-column>
      <el-table-column prop="name" label="消息标题" min-width="160" show-overflow-tooltip />
      <el-table-column prop="code" label="消息编码" min-width="150" show-overflow-tooltip />
      <el-table-column prop="content" label="消息模板" min-width="300" show-overflow-tooltip />
      <el-table-column label="状态" width="120" align="center" fixed="right">
        <template v-slot="scope">
          <el-switch v-model="scope.row.status" @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1">
          </el-switch>
          <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status" @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1">
          </el-switch>
        </template>
      </el-table-column>
    </el-table>
@@ -25,7 +27,7 @@
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
import { getSmsList, SmsStatusUpdate } from '@/api/system/sms'
import { getSmsList, SmsStatusUpdate, SmsStatussUpdate } from '@/api/system/sms'
import GlobalWindow from '@/components/common/GlobalWindow'
import { Message } from 'element-ui'
@@ -38,6 +40,7 @@
  },
  data() {
    return {
      ids: [],
      isShowDetail: false,
      exLoading: false,
      loading: false,
@@ -78,8 +81,32 @@
    this.getList()
  },
  methods: {
    handleSelectionChange(val) {
      this.ids = val.map(i => i.id)
      console.log('ids', this.ids)
    },
    batchStatus(status) {
      const { ids } = this
      if (ids.length == 0) return Message.error('请先选择要更改的短信通知')
      this.$confirm(`确定${status == 0 ? '启用' : '禁用'}选中的所有短信通知吗?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        SmsStatussUpdate({
          ids: ids.join(','),
          status
        }).then(res => {
          Message.success('批量更新成功')
          this.getList()
        }, () => {
          this.getList()
        })
      })
    },
    changeStatus(row) {
      console.log('row', row);
      console.log('row', row)
      SmsStatusUpdate({
        ...row
      }).then(res => {
@@ -109,8 +136,8 @@
        this.loading = false
      })
    },
    clear() {
      this.pagination.page = 1
      this.filters = {}
admin/src/views/task/driverDetail.vue
@@ -69,7 +69,7 @@
            <div class="content">
              <div class="head">
                <div class="event">{{ item.title }}</div>
                <div class="time">{{ item.createDate }}</div>
                <div class="time">{{ item.checkDate }}</div>
              </div>
              <div class="name_wrap">
                <span>{{ item.memberName }}<span v-if="item.statusInfo" class="status">({{ item.statusInfo
@@ -134,7 +134,7 @@
      id: '',
      type: '',
      title: '访客预约详情',
      title: '物流车预约详情',
      isShowModal: false,
      info: {},
      isShowAppr: false,
admin/src/views/task/visSubDetail.vue
@@ -115,7 +115,7 @@
                  <div class="company">
                    {{ item.memberName }}
                    <div style="display: inline" v-if="item.statusInfo != null && item.statusInfo != ''">
                      ï¼ˆ<span class="status" :class="{ padding: item.statusInfo == '处理中' || item.status == '1' }">{{
                      ï¼ˆ<span :class="{ padding: item.statusInfo == '处理中' || item.status == '1' }">{{
                        item.statusInfo || ""
                        }}</span>)
                    </div>
@@ -130,7 +130,7 @@
            " class="remark">
              {{ item.checkInfo || "" }}
            </div>
            <div v-if="item.approveType == 1 || item.approveType == 0" class="childList">
            <div v-if="item.approveType == 1" class="childList">
              <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
                <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" />
                <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
h5/pages/staff/task/driver.vue
@@ -101,7 +101,11 @@
      </view>
    </view>
    <view class="emyty"></view>
    <view class="main_footer">
    <view v-if="
      info.approveDateVO != null &&
      info.approveDateVO.canBeApproved != null &&
      info.approveDateVO.canBeApproved == 1
    " class="main_footer">
      <view class="btn" @click="handleSub('0')">拒绝</view>
      <view class="btn agree" @click="handleSub('1')">同意</view>
    </view>
h5/utils/config.js
@@ -1,5 +1,7 @@
export const baseUrl = 'admin_interface/'
// export const baseUrl = 'admin_interface/'
export const baseUrl = 'http://192.168.0.173/gateway_interface/'
export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`
pda/manifest.json
@@ -18,7 +18,7 @@
            "proxy": {
                "/gateway_interface": {
                    // è¿™ä¸ªå­—段名需与你配置的basePrefixUrl一致,系统识别到带有/dev-api请求的地址时,会在前面拼接上代理服务器地址
                    "target" : "http://10.50.250.178:8088/gateway_interface", // ä»£ç†æœåŠ¡å™¨åŸŸåæˆ–IP地址
                    "target" : "http://10.50.250.253:8088/gateway_interface", // ä»£ç†æœåŠ¡å™¨åŸŸåæˆ–IP地址
                    // "target": "http://192.168.0.100:10010", // ä»£ç†æœåŠ¡å™¨åŸŸåæˆ–IP地址
                    "changeOrigin": true, // å…è®¸è·¨åŸŸ 
                    "pathRewrite": {
pda/pages/index/control.vue
@@ -36,7 +36,7 @@
        },
        getPlatformGroup() {
            getPlatformGroupList({
                queryData: 1,
                queryData: 0,
                queryType: 0
            }).then(res => {
                this.platformGroupList = res.data || []
pda/utils/config.js
@@ -1,6 +1,6 @@
export const baseUrl = 'gateway_interface/'
// export const baseUrl = 'http://10.50.250.178:8088/gateway_interface/'
// export const baseUrl = 'gateway_interface/'
export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/'
export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`
screen/package.json
@@ -5,6 +5,7 @@
  "type": "module",
  "scripts": {
    "dev": "vite --host",
    "serve": "vite --host",
    "build": "vite build",
    "preview": "vite preview"
  },
screen/src/assets/images/energy_ef/bg@2x.png
screen/src/assets/images/energy_ef/car_kongxian@2x.png
screen/src/assets/images/energy_ef/car_lixian@2x.png
screen/src/assets/images/energy_ef/car_zaitu@2x.png
screen/src/assets/images/energy_ef/china@2x.png
screen/src/assets/images/energy_ef/chuku_ic_car@2x.png
screen/src/assets/images/energy_ef/chuku_task.png
screen/src/assets/images/energy_ef/chuku_task_ac.png
screen/src/assets/images/energy_ef/ic_bili@2x.png
screen/src/assets/images/energy_ef/ic_chukuxiaolv@2x.png
screen/src/assets/images/energy_ef/ic_renwuzongliang@2x.png
screen/src/assets/images/energy_ef/ic_rukuxiaolv@2x.png
screen/src/assets/images/energy_ef/ic_wanchengrenwu@2x.png
screen/src/assets/images/energy_ef/map_car_kongxian@2x.png
screen/src/assets/images/energy_ef/map_car_lixian@2x.png
screen/src/assets/images/energy_ef/map_car_zaitu@2x.png
screen/src/assets/images/energy_ef/ruku_task.png
screen/src/assets/images/energy_ef/ruku_task_ac.png
screen/src/assets/images/maintitle.gif
screen/src/router/index.js
@@ -6,7 +6,7 @@
  routes: [
    {
      path: '/',
      component: () => import('../views/PlatformCall.vue')
      component: () => import('../views/LogisticsEfficiency.vue')
    },
    {
      path: '/PlatformCall',
@@ -18,6 +18,11 @@
      name: 'EnergyConsum',
      component: () => import('../views/EnergyConsum.vue')
    },
    {
      path: '/LogisticsControl',
      name: 'LogisticsControl',
      component: () => import('../views/LogisticsEfficiency.vue')
    },
  ]
})
screen/src/views/EnergyConsum.vue
@@ -1,241 +1,243 @@
<template>
  <div class="main_app">
    <img src="@/assets/images/bg_main_app.png" class="main_bg" alt="" />
    <div class="main_header">
      <img src="@/assets/images/maintitle@2x.png" class="main_header_bg" alt="" />
      <div class="title">安泰智慧物流园区-绿色低碳运营</div>
      <div class="time">
        <span class="date">{{ date }}</span>
        <span class="week">{{ week }}</span>
        <span class="time">{{ time }}</span>
      </div>
    </div>
    <div class="main_content">
      <div class="left_box">
        <div class="left_box_one">
          <div class="com_header">
            <div class="title">
              <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
              <div>实时三相电流/电压</div>
            </div>
            <img src="@/assets/images/title@2x.png" class="bg" alt="" />
          </div>
          <div class="content">
            <div class="item">
              <div class="lab">A相电流(A)</div>
              <div class="val">60</div>
            </div>
            <div class="item">
              <div class="lab">B相电流(A)</div>
              <div class="val">60</div>
            </div>
            <div class="item">
              <div class="lab">C相电流(A)</div>
              <div class="val">60</div>
            </div>
            <div class="item">
              <div class="lab">有功功率(KW)</div>
              <div class="val">60</div>
            </div>
            <div class="item">
              <div class="lab">功率因数</div>
              <div class="val">60</div>
            </div>
            <div class="item">
              <div class="lab">有功电度(°)</div>
              <div class="val">60</div>
            </div>
          </div>
        </div>
        <div class="left_box_two">
          <div class="com_header">
            <div class="title">
              <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
              <div>实时负荷曲线</div>
            </div>
            <img src="@/assets/images/title@2x.png" class="bg" alt="" />
          </div>
          <div class="load_wrap">
            <div class="loadRef"></div>
          </div>
        </div>
        <div class="left_box_three">
          <div class="com_header">
            <div class="title">
              <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
              <div>月能耗分析</div>
            </div>
            <div class="tabs">
              <div class="tab active">用电</div>
              <div class="separate"></div>
              <div class="tab">用水</div>
              <div class="separate"></div>
              <div class="tab">用气</div>
            </div>
            <img src="@/assets/images/title@2x.png" class="bg" alt="" />
          </div>
          <div class="energy_wrap">
            <div class="energyRef"></div>
          </div>
  <v-scale-screen width="1920" height="960" :fullScreen="true">
    <div class="main_app">
      <img src="@/assets/images/bg_main_app.png" class="main_bg" alt="" />
      <div class="main_header">
        <img src="@/assets/images/maintitle@2x.png" class="main_header_bg" alt="" />
        <div class="title">安泰智慧物流园区-绿色低碳运营</div>
        <div class="time_wrap">
          <span class="date">{{ date }}</span>
          <span class="week">{{ week }}</span>
          <span class="time">{{ time }}</span>
        </div>
      </div>
      <div class="center_box">
        <div class="center_box_one">
          <div class="list">
            <div class="item">
              <div class="header">
                <img class="icon" src="@/assets/images/ic_yongdian@2x.png" alt="" />
                <div class="content">
                  <div class="name">上月用电(kw·h)</div>
                  <div class="num">450</div>
      <div class="main_content">
        <div class="left_box">
          <div class="left_box_one">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>实时三相电流/电压</div>
              </div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="content">
              <div class="item">
                <div class="lab">A相电流(A)</div>
                <div class="val">60</div>
              </div>
              <div class="item">
                <div class="lab">B相电流(A)</div>
                <div class="val">60</div>
              </div>
              <div class="item">
                <div class="lab">C相电流(A)</div>
                <div class="val">60</div>
              </div>
              <div class="item">
                <div class="lab">有功功率(KW)</div>
                <div class="val">60</div>
              </div>
              <div class="item">
                <div class="lab">功率因数</div>
                <div class="val">60</div>
              </div>
              <div class="item">
                <div class="lab">有功电度(°)</div>
                <div class="val">60</div>
              </div>
            </div>
          </div>
          <div class="left_box_two">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>实时负荷曲线</div>
              </div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="load_wrap">
              <div class="loadRef"></div>
            </div>
          </div>
          <div class="left_box_three">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>月能耗分析</div>
              </div>
              <div class="tabs">
                <div class="tab active">用电</div>
                <div class="separate"></div>
                <div class="tab">用水</div>
                <div class="separate"></div>
                <div class="tab">用气</div>
              </div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="energy_wrap">
              <div class="energyRef"></div>
            </div>
          </div>
        </div>
        <div class="center_box">
          <div class="center_box_one">
            <div class="list">
              <div class="item">
                <div class="header">
                  <img class="icon" src="@/assets/images/ic_yongdian@2x.png" alt="" />
                  <div class="content">
                    <div class="name">上月用电(kw·h)</div>
                    <div class="num">450</div>
                  </div>
                </div>
                <div class="static">
                  <span class="lab">同比</span>
                  <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
                  <span class="val">11</span>
                  <span class="lab">环比</span>
                  <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
                  <span class="val">11</span>
                </div>
              </div>
              <div class="static">
                <span class="lab">同比</span>
                <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
                <span class="val">11</span>
                <span class="lab">环比</span>
                <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
                <span class="val">11</span>
              </div>
            </div>
            <div class="item">
              <div class="header">
                <img class="icon" src="@/assets/images/ic_yongshui@2x.png" alt="" />
                <div class="content">
                  <div class="name">上月用水(t)</div>
                  <div class="num">450</div>
              <div class="item">
                <div class="header">
                  <img class="icon" src="@/assets/images/ic_yongshui@2x.png" alt="" />
                  <div class="content">
                    <div class="name">上月用水(t)</div>
                    <div class="num">450</div>
                  </div>
                </div>
                <div class="static">
                  <span class="lab">同比</span>
                  <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
                  <span class="val">11</span>
                  <span class="lab">环比</span>
                  <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
                  <span class="val">11</span>
                </div>
              </div>
              <div class="static">
                <span class="lab">同比</span>
                <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
                <span class="val">11</span>
                <span class="lab">环比</span>
                <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
                <span class="val">11</span>
              </div>
            </div>
            <div class="item">
              <div class="header">
                <img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" />
                <div class="content">
                  <div class="name">上月用气(t)</div>
                  <div class="num">450</div>
              <div class="item">
                <div class="header">
                  <img class="icon" src="@/assets/images/ic_yongqi@2x.png" alt="" />
                  <div class="content">
                    <div class="name">上月用气(t)</div>
                    <div class="num">450</div>
                  </div>
                </div>
                <div class="static">
                  <span class="lab">同比</span>
                  <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
                  <span class="val">11</span>
                  <span class="lab">环比</span>
                  <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
                  <span class="val">11</span>
                </div>
              </div>
              <div class="static">
                <span class="lab">同比</span>
                <img class="icon" src="@/assets/images/ic_up.webp" alt="" />
                <span class="val">11</span>
                <span class="lab">环比</span>
                <img class="icon" src="@/assets/images/ic_down.webp" alt="" />
                <span class="val">11</span>
            </div>
          </div>
          <div class="center_box_two">
            <img class="bg" src="@/assets/images/img_city@2x.png" alt="" />
            <div class="item item1">
              <div class="num fs_linear">240<span class="unit">kw·h</span></div>
              <div class="name">联合工房</div>
              <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
            </div>
            <div class="item item2">
              <div class="num fs_linear">240<span class="unit">kw·h</span></div>
              <div class="name">联合工房</div>
              <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
            </div>
            <div class="item item3">
              <div class="num fs_linear">240<span class="unit">kw·h</span></div>
              <div class="name">联合工房</div>
              <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
            </div>
            <div class="item item4">
              <div class="num fs_linear">240<span class="unit">kw·h</span></div>
              <div class="name">联合工房</div>
              <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
            </div>
            <div class="item item5">
              <div class="num fs_linear">240<span class="unit">kw·h</span></div>
              <div class="name">联合工房</div>
              <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
            </div>
            <div class="bottom_wrap">
              <div class="bottom bottom1">
                <div class="num fs_linear">240</div>
                <div class="name">昨日用电</div>
                <div class="unit">kw·h</div>
                <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
              </div>
              <div class="bottom bottom2">
                <div class="num">240</div>
                <div class="name">今日用电</div>
                <div class="unit">kw·h</div>
                <img src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
              </div>
              <div class="bottom bottom3">
                <div class="num fs_linear">240</div>
                <div class="name">本月用电</div>
                <div class="unit">kw·h</div>
                <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
              </div>
            </div>
          </div>
        </div>
        <div class="center_box_two">
          <img class="bg" src="@/assets/images/img_city@2x.png" alt="" />
          <div class="item item1">
            <div class="num fs_linear">240<span class="unit">kw·h</span></div>
            <div class="name">联合工房</div>
            <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
          </div>
          <div class="item item2">
            <div class="num fs_linear">240<span class="unit">kw·h</span></div>
            <div class="name">联合工房</div>
            <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
          </div>
          <div class="item item3">
            <div class="num fs_linear">240<span class="unit">kw·h</span></div>
            <div class="name">联合工房</div>
            <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
          </div>
          <div class="item item4">
            <div class="num fs_linear">240<span class="unit">kw·h</span></div>
            <div class="name">联合工房</div>
            <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
          </div>
          <div class="item item5">
            <div class="num fs_linear">240<span class="unit">kw·h</span></div>
            <div class="name">联合工房</div>
            <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" />
          </div>
          <div class="bottom_wrap">
            <div class="bottom bottom1">
              <div class="num fs_linear">240</div>
              <div class="name">昨日用电</div>
              <div class="unit">kw·h</div>
              <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
            </div>
            <div class="bottom bottom2">
              <div class="num">240</div>
              <div class="name">今日用电</div>
              <div class="unit">kw·h</div>
              <img src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" />
            </div>
            <div class="bottom bottom3">
              <div class="num fs_linear">240</div>
              <div class="name">本月用电</div>
              <div class="unit">kw·h</div>
              <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" />
            </div>
          </div>
        </div>
      </div>
      <div class="right_box">
        <div class="right_box_one">
          <div class="com_header">
            <div class="title">
              <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
              <div>本月碳排放量统计</div>
            </div>
            <img src="@/assets/images/title@2x.png" class="bg" alt="" />
          </div>
          <div class="content">
            <img src="@/assets/images/ic_co2@2x.png" class="co2" alt="">
            <div>
              <div class="name">本月累计碳排放</div>
              <div><span class="num">22.22</span><span>吨</span></div>
            </div>
          </div>
        </div>
        <div class="right_box_two">
          <div class="com_header">
            <div class="title">
              <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
              <div>上月油耗排行统计</div>
            </div>
            <div class="tabs">油耗:L</div>
            <img src="@/assets/images/title@2x.png" class="bg" alt="" />
          </div>
          <div class="list">
            <div class="line" v-for="item,i in 6">
              <div class="top"><span v-if="i < 3">top</span>{{ i }}</div>
              <div class="id_card">皖A12313</div>
              <div class="wrap">
                <ChargeRate :rate="15" :color />
        <div class="right_box">
          <div class="right_box_one">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>本月碳排放量统计</div>
              </div>
              <div class="num">1000</div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="content">
              <img src="@/assets/images/ic_co2@2x.png" class="co2" alt="">
              <div>
                <div class="name">本月累计碳排放</div>
                <div><span class="num">22.22</span><span>吨</span></div>
              </div>
            </div>
          </div>
        </div>
        <div class="right_box_three">
          <div class="com_header">
            <div class="title">
              <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
              <div>月油耗分析</div>
          <div class="right_box_two">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>上月油耗排行统计</div>
              </div>
              <div class="tabs">油耗:L</div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            <div class="list">
              <div class="line" v-for="item, i in 6">
                <div class="top"><span v-if="i < 3">top</span>{{ i }}</div>
                <div class="id_card">皖A12313</div>
                <div class="wrap">
                  <ChargeRate :rate="15" :color />
                </div>
                <div class="num">1000</div>
              </div>
            </div>
          </div>
          <div class="wrap">
            <div class="analyseRef"></div>
          <div class="right_box_three">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>月油耗分析</div>
              </div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="wrap">
              <div class="analyseRef"></div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
  </v-scale-screen>
</template>
<script setup>
@@ -243,6 +245,7 @@
import dayjs from 'dayjs'
import ChargeRate from '@/components/ChargeRate.vue'
import * as echarts from 'echarts'
import VScaleScreen from 'v-scale-screen'
const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',]
@@ -286,7 +289,7 @@
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: [1,2,3,4,5,5]
      data: [1, 2, 3, 4, 5, 5]
    },
    yAxis: {
      type: 'value',
@@ -313,7 +316,7 @@
    },
    series: [
      {
        data: [1,2,3,4,4,5].map(i => {
        data: [1, 2, 3, 4, 4, 5].map(i => {
          return {
            name: i,
            value: i,
@@ -398,7 +401,7 @@
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: [1,2,3,4,5,5]
      data: [1, 2, 3, 4, 5, 5]
    },
    yAxis: {
      type: 'value',
@@ -425,7 +428,7 @@
    },
    series: [
      {
        data: [1,2,3,4,4,4000].map(i => {
        data: [1, 2, 3, 4, 4, 4000].map(i => {
          return {
            name: i,
            value: i,
@@ -502,7 +505,7 @@
    },
    xAxis: {
      type: 'category',
      data: [1,2,3,4,4,5]
      data: [1, 2, 3, 4, 4, 5]
    },
    yAxis: {
      type: 'value',
@@ -520,7 +523,7 @@
    },
    series: [
      {
        data: [1,2,3,4,5],
        data: [1, 2, 3, 4, 5],
        type: 'bar',
        barWidth: 10,
        itemStyle: {
@@ -547,7 +550,7 @@
  initOperation()
  initLoadReal()
  initEnergy()
})
})
</script>
@@ -591,11 +594,13 @@
    .left_box_two {
      margin-bottom: 20px;
      .load_wrap{
      .load_wrap {
        width: 100%;
        height: 210px;
        padding: 12px 12px;
        .loadRef{
        .loadRef {
          width: 100%;
          height: 100%;
        }
@@ -603,10 +608,11 @@
    }
    .left_box_three {
      .energy_wrap{
      .energy_wrap {
        width: 100%;
        height: 200px;
        .energyRef{
        .energyRef {
          width: 100%;
          height: 100%;
        }
@@ -805,6 +811,7 @@
    .right_box_one {
      margin-bottom: 20px;
      .content {
        height: 164px;
        display: flex;
@@ -825,15 +832,19 @@
        }
      }
    }
    .right_box_two{
    .right_box_two {
      margin-bottom: 20px;
      .list{
      .list {
        padding: 20px 24px 4px;
        .line{
        .line {
          display: flex;
          align-items: center;
          margin-bottom: 16px;
          .top{
          .top {
            font-weight: 500;
            font-size: 12px;
            width: 33px;
@@ -844,19 +855,22 @@
            box-shadow: inset 0px 0px 3px 0px #01D9FE;
            margin-right: 10px;
          }
          .id_card{
          .id_card {
            color: #DBEAEA;
            font-weight: 500;
            margin-right: 14px;
            font-size: 14px;
          }
          .num{
          .num {
            font-weight: 500;
            font-size: 13px;
            color: #DBEAEA;
            margin-left: 15px;
          }
          .wrap{
          .wrap {
            flex: 1;
            height: 20px;
            border: 1px solid #686B6B;
@@ -864,10 +878,12 @@
        }
      }
    }
    .right_box_three{
      .wrap{
    .right_box_three {
      .wrap {
        padding: 8px;
        .analyseRef{
        .analyseRef {
          width: 100%;
          height: 210px;
        }
@@ -963,7 +979,7 @@
    -webkit-text-fill-color: transparent;
  }
  .time {
  .time_wrap {
    font-size: 26px;
    font-weight: 600;
    background-image: -webkit-linear-gradient(top,
@@ -1001,11 +1017,10 @@
}
.main_app {
  width: 100%;
  min-height: 100vh;
  width: 1920px;
  height: 980px;
  color: #ffffff;
  position: relative;
  .main_bg {
    position: absolute;
    left: 0;
screen/src/views/LogisticsControl.vue
ÎļþÒÑɾ³ý
screen/src/views/LogisticsEfficiency.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,637 @@
<template>
  <v-scale-screen width="1920" height="960" :fullScreen="true">
    <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@2x.png" class="main_header_bg" alt="" />
        <div class="title">安泰智慧物流园区-调度能效跟踪</div>
        <div class="time_wrap">
          <span class="date">{{ date }}</span>
          <span class="week">{{ week }}</span>
          <span class="time">{{ time }}</span>
        </div>
      </div>
      <div class="main_content">
        <div class="left_box">
          <div class="left_box_one">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>累计出库量统计</div>
              </div>
              <div class="tabs">
                <div class="tab active">本月</div>
                <div class="separate"></div>
                <div class="tab">本年</div>
              </div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="content_wrap">
              <div class="content">
                <div class="num">1000000</div>
                <div class="unit_wrap">
                  <span style="color: #869CC9;">同比</span>
                  <img src="@/assets/images/ic_up.png" class="icon" alt="">
                  <span>10.2%</span>
                </div>
              </div>
              <div class="train_wrap">
                <div class="icon_wrap">
                  <img src="@/assets//images/energy_ef/chuku_ic_car@2x.png" alt="">
                </div>
                <div class="total">
                  <span>累计出库车次</span>
                  <span><strong>3900</strong><span class="unit">次</span></span>
                </div>
              </div>
            </div>
          </div>
          <div class="left_box_two">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>月能耗分析</div>
              </div>
              <div class="tabs">
                <div class="tab active">近7日</div>
                <div class="separate"></div>
                <div class="tab">本月</div>
                <div class="separate"></div>
                <div class="tab">本年</div>
              </div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="energy_wrap">
              <div class="energyRef"></div>
            </div>
          </div>
          <div class="left_box_three">
            <div class="com_header">
              <div class="title">
                <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" />
                <div>当前运输任务</div>
              </div>
              <img src="@/assets/images/title@2x.png" class="bg" alt="" />
            </div>
            <div class="list_wrap">
              <div class="list">
                <div class="header line">
                  <span class="item flag">标识</span>
                  <span class="item order">运输单号</span>
                  <span class="item id_card">运输车辆</span>
                  <span class="item status">作业状态</span>
                  <span class="item addr">收货单位</span>
                  <span class="item time">任务开始时间</span>
                </div>
                <div class="line" v-for="i in 7">
                  <span class="item flag"><span class="flag_bg">出</span></span>
                  <span class="item order">11</span>
                  <span class="item id_card">11</span>
                  <span class="item status">11</span>
                  <span class="item addr">11</span>
                  <span class="item time">11</span>
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="center_box">
          <div class="center_box_one">
            <div class="tabs">
              <div class="tab active">
                <img src="@/assets/images/energy_ef/chuku_task_ac.png" alt="">
                <span>出库任务</span>
              </div>
              <div class="tab">
                <img src="@/assets/images/energy_ef/ruku_task.png" alt="">
                <span>入库任务</span>
              </div>
            </div>
            <div class="static_wrap">
              <div class="item">
                <img src="@/assets/images/energy_ef/ic_renwuzongliang@2x.png" alt="">
                <div class="content">
                  <div class="name">当前任务量</div>
                  <div class="num"><span>1000</span>万支</div>
                </div>
              </div>
              <div class="item">
                <img src="@/assets/images/energy_ef/ic_wanchengrenwu@2x.png" alt="">
                <div class="content">
                  <div class="name">当日完成任务总量</div>
                  <div class="num"><span class="today">1000</span>万支</div>
                </div>
              </div>
              <div class="item">
                <img src="@/assets/images/energy_ef/ic_bili@2x.png" alt="">
                <div class="content">
                  <div class="name">已完成比例</div>
                  <div class="num"><span class="finish">1000</span>万支</div>
                </div>
              </div>
            </div>
          </div>
          <div class="center_box_two"></div>
        </div>
        <div class="right_box">
          <div class="right_box_one"></div>
          <div class="right_box_two"></div>
          <div class="right_box_three"></div>
        </div>
      </div>
    </div>
  </v-scale-screen>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import VScaleScreen from 'v-scale-screen'
import dayjs from 'dayjs'
import * as echarts from 'echarts'
const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',]
const date = ref(dayjs().format('YYYY.MM.DD'))
const week = ref(weekMap[new Date().getDay()])
const time = ref(dayjs().format('HH:mm:ss'))
setInterval(() => {
  date.value = dayjs().format('YYYY-MM-DD')
  week.value = weekMap[new Date().getDay()]
  time.value = dayjs().format('HH:mm:ss')
}, 1000)
const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a']
const initEnergy = () => {
  var myChart = echarts.init(document.querySelector('.energyRef'))
  // ç»˜åˆ¶å›¾è¡¨
  const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a']
  myChart.setOption({
    grid: {
      top: '20%',
      left: '2%',
      right: '2%',
      bottom: '4%',
      containLabel: true
    },
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'line'
      },
    },
    xAxis: {
      type: 'category',
      data: [1, 2, 3, 4, 4, 5]
    },
    yAxis: {
      type: 'value',
      name: 'kw·h',
      nameTextStyle: {
        padding: [0, 0, 4, -30]    // å››ä¸ªæ•°å­—分别为上右下左与原位置距离
      },
      splitLine: {
        show: true,
        lineStyle: {
          //这里输入线条的样式
          color: 'rgba(255,255,255,0.14)',
        }
      }
    },
    series: [
      {
        data: [1, 2, 3, 4, 5],
        type: 'bar',
        barWidth: 10,
        itemStyle: {
          normal: {
            color: new echarts.graphic.LinearGradient(
              0, 0, 0, 1,
              [
                { offset: 0, color: arr[1] },
                { offset: 1, color: '#080807' }
              ]
            ),
            barBorderRadius: [10, 10, 0, 0]
          }
        }
      }
    ]
  })
  window.addEventListener('resize', function () {//执行
    myChart.resize()
  })
}
onMounted(() => {
  initEnergy()
})
</script>
<style lang="scss" scoped>
div {
  box-sizing: border-box;
}
.main_content {
  display: flex;
  padding: 20px 25px 0;
  .left_box {
    width: 440px;
    .left_box_one {
      width: 100%;
      position: relative;
      margin-bottom: 20px;
      .content_wrap {
        height: 164px;
        padding: 22px 20px 0;
        .content {
          display: flex;
          align-items: flex-end;
          margin: 10px 0 22px;
          .num {
            margin-right: 10px;
            font-weight: bold;
            font-size: 46px;
            height: 44px;
            line-height: 52px;
            font-weight: bold;
            color: #00F2F3;
            letter-spacing: 3px;
            background-image: -webkit-linear-gradient(top,
                #01D9FE 0%,
                #0177FE 60%,
                #0177FE 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
          }
          .unit_wrap {
            display: flex;
            align-items: center;
          }
          .icon {
            width: 10px;
            height: 12px;
            margin-right: 6px;
            margin-left: 4px;
          }
        }
        .train_wrap {
          display: flex;
          height: 40px;
          margin-top: 18px;
          .icon_wrap {
            width: 40px;
            height: 40px;
            display: flex;
            justify-content: center;
            align-items: center;
            margin-right: 4px;
            border: 1px solid;
            background: linear-gradient(180deg, rgba(0, 148, 235, 0.68) 0%, rgba(0, 148, 235, 0) 100%);
            border-image: linear-gradient(180deg, rgba(177, 210, 255, 0.64), rgba(0, 171, 255, 0.7)) 1 1;
            img {
              width: 26px;
            }
          }
          .total {
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 20px;
            font-size: 16px;
            border: 1px solid;
            border-image: linear-gradient(180deg, rgba(177, 210, 255, 0.64), rgba(0, 171, 255, 0.7)) 1 1;
            background: linear-gradient(180deg, rgba(0, 148, 235, 0.68) 0%, rgba(0, 148, 235, 0) 100%);
            .unit {
              margin-left: 5px;
              font-size: 13px;
            }
          }
        }
      }
    }
    .left_box_two {
      margin-bottom: 20px;
      .energy_wrap {
        width: 100%;
        height: 250px;
        .energyRef {
          width: 100%;
          height: 100%;
        }
      }
    }
    .left_box_three {
      .list_wrap {
        padding: 10px 0;
        .list {
          .line {
            display: flex;
            height: 30px;
            align-items: center;
            padding: 0 10px;
            font-size: 12px;
            &:nth-of-type(2n) {
              background: rgba(27, 64, 97, 0.52);
              .flag_bg {
                background: #01ABFE !important;
              }
            }
            .item {
              flex: 5;
              white-space: nowrap;
              overflow: hidden;
              text-overflow: ellipsis;
            }
            .flag {
              flex: 3;
              display: flex;
              .flag_bg {
                width: 22px;
                height: 22px;
                display: flex;
                justify-content: center;
                align-items: center;
                border-radius: 50%;
                background: #00F2F3;
                font-weight: 500;
                color: #001B3C;
              }
            }
            .status {
              color: #FEAF01;
            }
            .addr {
              flex: 8;
            }
            .time {
              flex: 8;
            }
          }
        }
      }
    }
  }
  .center_box {
    flex: 1;
    padding: 16px 60px;
    .center_box_one {
      .tabs {
        display: flex;
        align-items: center;
        .tab {
          display: flex;
          align-items: center;
          margin-right: 30px;
          img {
            width: 20px;
            height: 20px;
            margin-right: 8px;
          }
          font-size: 20px;
          font-weight: 600;
          color: #D2E0FF;
        }
        .active {
          background-image: -webkit-linear-gradient(top,
              #fff 0%,
              #eec05f 60%,
              #eec05f 100%);
          -webkit-background-clip: text;
          -webkit-text-fill-color: transparent;
        }
      }
      .static_wrap {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin: 30px 0 54px;
        .item {
          display: flex;
          img {
            width: 68px;
            height: 71px;
            margin-right: 15px;
          }
          .content {
            font-size: 15px;
            .num {
              font-size: 12px;
              color: #D2E0FF;
              span {
                font-weight: bold;
                font-size: 30px;
                margin-right: 5px;
                font-weight: 600;
                background-image: -webkit-linear-gradient(top,
                    #01D9FE 0%,
                    #01D9FE 60%,
                    #fff 100%);
                -webkit-background-clip: text;
                -webkit-text-fill-color: transparent;
              }
              .today {
                background-image: -webkit-linear-gradient(top,
                    #fff 0%,
                    #20FFC5 50%,
                    #20FFC5 100%);
              }
              .finish{
                background-image: -webkit-linear-gradient(top,
                    #fff 0%,
                    #FFB120 50%,
                    #FFB120 100%);
              }
            }
          }
        }
      }
    }
    .center_box_two{
      width: 100%;
      border: 1px solid;
    }
  }
  .right_box {
    width: 440px;
  }
}
.main_header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 90px;
  position: relative;
  padding: 0px 40px 16px;
  font-weight: 600;
  font-size: 36px;
  .title {
    background-image: -webkit-linear-gradient(top,
        #ffffff 0%,
        #c8ddff 70%,
        #85b4ff 80%,
        #74a9ff 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
  .time_wrap {
    font-size: 26px;
    font-weight: 600;
    background-image: -webkit-linear-gradient(top,
        #ffffff 0%,
        #c8ddff 50%,
        #85b4ff 80%,
        #74a9ff 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: flex;
    align-items: center;
    .time {
      width: 180px;
      display: flex;
      justify-content: flex-end;
      padding-bottom: 10px;
      font-size: 36px;
    }
    .week {
      margin-left: 36px;
    }
  }
  .main_header_bg {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -1;
  }
}
.com_header {
  height: 40px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 15px 0 13px;
  position: relative;
  .title {
    display: flex;
    align-items: center;
    font-weight: bold;
    font-size: 16px;
    background-image: -webkit-linear-gradient(top,
        #ffffff 0%,
        #c8ddff 66%,
        #85b4ff 72%,
        #74a9ff 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    .icon {
      width: 16px;
      height: 16px;
      margin-right: 14px;
    }
  }
  .tabs {
    display: flex;
    align-items: center;
    font-size: 14px;
    color: #d2e0ff;
    .separate {
      width: 1px;
      height: 14px;
      background-color: #d2e0ff;
      margin: 0 6px;
    }
    .active {
      color: #0094eb;
    }
  }
}
.main_app {
  width: 1920px;
  min-height: 960px;
  /* width: 100%;
  height: 100vh; */
  background: #0b2539;
  color: #FFFFFF;
  position: relative;
  z-index: -2;
  .main_bg {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -1;
  }
}
.bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -1;
}
</style>
screen/src/views/PlatformCall.vue
@@ -30,7 +30,6 @@
            }else{
              item.optTimeTemp = '-'
            }
          }
          // item.optTimeTemp = dayjs.duration(Math.abs(new Date().getTime() - item.optTime)).format('HH:mm')
        }
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -672,105 +672,6 @@
    }
    public  enum NoticeType {
        ZERO(0, "待审核","","","待审核","待处理","处理中"),
        ONE(1, "企业待签署","","","工种待审核","","已结案"),
        TWO(2, "待出单","待审核","待审核","","",""),
        THREE(3, "申请退回","申请退回","申请退回","","",""),
        FOUR(4, "已退回","已退回","已退回","","","已撤销"),
        FIVE(5, "申请驳回","申请驳回","申请驳回","","",""),
        //续保通知
        SIX(6, "","","","","",""),
        //商户端 å§”托保 - æŠ•保待审核 åŠ å‡ä¿ æ¢åŽ‚ å¾…审核
        SEVEN(7, "待审核","待审核","待审核","","",""),
        EIGHT(8, "","","","","",""),
        NINE(9, "","","","","",""),
        ;
        // æˆå‘˜å˜é‡
        private int status;
        private String insuranceApplyDetail;
        private String applyChangeDetail;
        private String changeFactoryDetail;
        private String dispatchUnitDetail;
        private String taxesDetail;
        private String settleClaimsDetail;
        // æž„造方法
        NoticeType(int status, String insuranceApplyDetail,String applyChangeDetail
                , String changeFactoryDetail,String dispatchUnitDetail
                , String taxesDetail,String settleClaimsDetail) {
            this.status = status;
            this.insuranceApplyDetail = insuranceApplyDetail;
            this.applyChangeDetail = applyChangeDetail;
            this.changeFactoryDetail = changeFactoryDetail;
            this.dispatchUnitDetail = dispatchUnitDetail;
            this.taxesDetail = taxesDetail;
            this.settleClaimsDetail = settleClaimsDetail;
        }
        // get set æ–¹æ³•
        public int getStatus() {
            return status;
        }
        public void setStatus(int status) {
            this.status = status;
        }
        public String getInsuranceApplyDetail() {
            return insuranceApplyDetail;
        }
        public void setInsuranceApplyDetail(String name) {
            this.insuranceApplyDetail = insuranceApplyDetail;
        }
        public String getApplyChangeDetail() {
            return applyChangeDetail;
        }
        public void setApplyChangeDetail(String info) {
            this.applyChangeDetail = applyChangeDetail;
        }
        public String getChangeFactoryDetail() {
            return changeFactoryDetail;
        }
        public void setChangeFactoryDetail(String info) {
            this.changeFactoryDetail = changeFactoryDetail;
        }
        public String getDispatchUnitDetail() {
            return dispatchUnitDetail;
        }
        public void setDispatchUnitDetail(String info) {
            this.dispatchUnitDetail = dispatchUnitDetail;
        }
        public String getTaxesDetail() {
            return taxesDetail;
        }
        public void setTaxesDetail(String info) {
            this.taxesDetail = taxesDetail;
        }
        public String getSettleClaimsDetail() {
            return settleClaimsDetail;
        }
        public void setSettleClaimsDetail(String info) {
            this.settleClaimsDetail = settleClaimsDetail;
        }
    }
    public  enum PlatformWarnEvent {
        STOP_TIMEOUT(0, "停靠超时","${carCode}月台停靠超时" ),
        STOP_ERROR(1, "停靠错误","${carCode}月台停靠错误" ),
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WmsPushCloudTestController.java
@@ -2,8 +2,16 @@
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest;
import com.doumee.core.tms.model.request.TmsOrderInfoRequest;
import com.doumee.core.tms.model.request.TmsOrderListRequest;
import com.doumee.core.tms.model.response.TmsBaseResponse;
import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
import com.doumee.core.tms.model.response.TmsOrderInfoResponse;
import com.doumee.core.tms.model.response.TmsOrderListResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.wms.model.response.WmsBaseResponse;
import com.doumee.service.business.third.TmsService;
import com.doumee.service.business.third.WmsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -11,12 +19,14 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
@@ -31,6 +41,8 @@
    @Autowired
    private WmsService wmsService;
    @Autowired
    private TmsService tmsService;
    @ApiOperation("【WMS】推送入库单通知任务")
    @PostMapping("/push/inboundNotice")
@@ -69,6 +81,27 @@
        doPringParam(request,"【WMS】推送出入库作业完成通知任务");
        return new WmsBaseResponse();
    }
    @ApiOperation("【TMS】电子锁上锁时间接口")
    @LoginNoRequired
    @PostMapping("/tms/lockStatusQuery")
    public TmsBaseResponse<List<TmsLockStatusQueryResponse>>  lockStatusQuery(@RequestBody  TmsLockStatusQueryRequest request )   {
        return  tmsService.lockStatusQuery(request);
    }
    @ApiOperation("【TMS】合同列表接口")
    @LoginNoRequired
    @PostMapping("/tms/orderList")
    public TmsBaseResponse<List<TmsOrderListResponse>> orderList(@RequestBody TmsOrderListRequest request )   {
        return  tmsService.orderList(request);
    }
    @ApiOperation("【TMS】合同详情接口")
    @LoginNoRequired
    @PostMapping("/tms/orderInfo")
    public TmsBaseResponse<TmsOrderInfoResponse> ordreInfo(@RequestBody TmsOrderInfoRequest request )   {
        return  tmsService.orderInfo(request);
    }
    public static void doPringParam(HttpServletRequest request,String name) {
        try {
server/visits/dmvisit_service/src/main/java/com/doumee/core/tms/model/response/TmsOrderInfoResponse.java
@@ -27,7 +27,7 @@
     }
     */
 
    private String   contratNumber    ; //合同号
    private String   contractNumber    ; //合同号
    private String   fromRepertotyName    ; //发货地
    private String    toRepertoty    ; //到货地
    private String    plateNumber; //    è½¦ç‰Œå·    åˆåŒæœªé…è½½åˆ™æ— 
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/TmsServiceImpl.java
@@ -6,9 +6,11 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest;
import com.doumee.core.tms.model.request.TmsOrderInfoRequest;
import com.doumee.core.tms.model.request.TmsOrderListRequest;
import com.doumee.core.tms.model.response.TmsBaseResponse;
import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
import com.doumee.core.tms.model.response.TmsOrderInfoResponse;
import com.doumee.core.tms.model.response.TmsOrderListResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
@@ -58,7 +60,7 @@
     * ç”µå­é”ä¸Šé”æ—¶é—´æŽ¥å£
     * æ ¹æ®åˆåŒå·ï¼ŒæŸ¥è¯¢ç”µå­é”ä¸Šé”æƒ…况;存在批量查询的情况;
     * @param param å‚æ•°
     * @return WmsBaseResponse
     * @return TmsBaseResponse
     */
    @Override
    public TmsBaseResponse<List<TmsLockStatusQueryResponse>> lockStatusQuery(TmsLockStatusQueryRequest param){
@@ -67,14 +69,14 @@
        TmsBaseResponse<List<TmsLockStatusQueryResponse>> response = sendHttpRequest(url,"电子锁上锁时间接口",JSONObject.toJSONString(param)
                ,new TypeReference< TmsBaseResponse<List<TmsLockStatusQueryResponse>>>(){});
        return  new TmsBaseResponse<>();
        return  response;
    }
    /**
     * åˆåŒåˆ—表接口
     * æ ¹æ®åŒºåŸŸID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示;
     * @param param å‚æ•°
     * @return WmsBaseResponse
     * @return TmsBaseResponse
     */
    @Override
    public  TmsBaseResponse<List<TmsOrderListResponse>> orderList(TmsOrderListRequest param){
@@ -82,7 +84,20 @@
                    +systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_ORDER_LIST_URL).getCode();
        TmsBaseResponse<List<TmsOrderListResponse>> response = sendHttpRequest(url,"合同列表接口",JSONObject.toJSONString(param)
                ,new TypeReference< TmsBaseResponse<List<TmsOrderListResponse>>>(){});
        return  new TmsBaseResponse<>();
        return response;
    }
    /**
     * åˆåŒè¯¦æƒ…接口
     * @param param å‚æ•°
     * @return TmsBaseResponse
     */
    @Override
    public TmsBaseResponse<TmsOrderInfoResponse> orderInfo(TmsOrderInfoRequest param){
        String url = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_INTERFACE_URL_PREFIX).getCode()
                    +systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.TMS_ORDER_DETAIL_URL).getCode();
        TmsBaseResponse<TmsOrderInfoResponse> response = sendHttpRequest(url,"合同详情接口",JSONObject.toJSONString(param)
                ,new TypeReference< TmsBaseResponse<TmsOrderInfoResponse>>(){});
        return  response;
    }
    /**
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/TmsService.java
@@ -1,9 +1,11 @@
package com.doumee.service.business.third;
import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest;
import com.doumee.core.tms.model.request.TmsOrderInfoRequest;
import com.doumee.core.tms.model.request.TmsOrderListRequest;
import com.doumee.core.tms.model.response.TmsBaseResponse;
import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
import com.doumee.core.tms.model.response.TmsOrderInfoResponse;
import com.doumee.core.tms.model.response.TmsOrderListResponse;
import com.doumee.core.wms.model.request.WmsActionNoticeRequest;
import com.doumee.core.wms.model.request.WmsBaseRequest;
@@ -27,7 +29,7 @@
     * ç”µå­é”ä¸Šé”æ—¶é—´æŽ¥å£
     * æ ¹æ®åˆåŒå·ï¼ŒæŸ¥è¯¢ç”µå­é”ä¸Šé”æƒ…况;存在批量查询的情况;
     * @param param å‚æ•°
     * @return WmsBaseResponse
     * @return TmsBaseResponse
     */
    TmsBaseResponse<List<TmsLockStatusQueryResponse>> lockStatusQuery(TmsLockStatusQueryRequest param);
@@ -35,9 +37,16 @@
     * åˆåŒåˆ—表接口
     * æ ¹æ®åŒºåŸŸID集合+筛选条件(合同号、制单开始日期、制单结束日期、发货地、到货地、省份,非需要),返回合同列表信息,按照时间倒序展示;
     * @param param å‚æ•°
     * @return WmsBaseResponse
     * @return TmsBaseResponse
     */
    TmsBaseResponse<List<TmsOrderListResponse>> orderList(TmsOrderListRequest param);
    /**
     * åˆåŒè¯¦æƒ…接口
     * @param param å‚æ•°
     * @return TmsBaseResponse
     */
    TmsBaseResponse<TmsOrderInfoResponse> orderInfo(TmsOrderInfoRequest param);
}