huanghongfeng
3 天以前 5ffc36a1db18d3112a9b50a9cf3953d7fcf21bae
更新
已添加3个文件
已修改70个文件
已删除1个文件
14037 ■■■■■ 文件已修改
项目代码/DP/pnpm-lock.yaml 10075 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/assets/img/gysp.mp4 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/home.vue 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/center-map.vue 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/index copy.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/index.vue 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/right-center.vue 287 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/station-four.vue 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/station-one.vue 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/station-three.vue 294 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/indexs/station-two.vue 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/DP/src/views/setting.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Client/src/views/Home.vue 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v7.bin 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v7.bin 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.jsx 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/Home.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_Config.vue 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue 285 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_User copy.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue 436 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_SelectionStandards.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/check/Dt_CheckResult.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_CZInfo_mes.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/outbound/Dt_OutWheels_hty.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/outbound/Dt_OutZdp_hty.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_Old.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_ZdpStock.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.metadata.v7.bin 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.projects.v7.bin 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/LevelChange/CheckTaskChangeHelper.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/LevelChange/LevelChangeHelper.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/ZY/CZInfo_ZY.cs 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Check/IDt_CheckResultService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationInfoService.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/GZ_ZC/Dt_CZInfo_mes.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/GZ_ZC/Dt_SelectionStandards.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_ConfigService.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_RoleService.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/Partial/UntieStation.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/Partial/genAgvSchedulingTask.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/ToAPP/Partial/SaveCLinfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/ToAPP/Partial/SaveCZInfo.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/ZY/Partial/getCZInfo.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Check/Dt_CheckResultRepository.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_SelectionStandardsService.cs 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/Dt_InWheels_mesService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Check/Dt_CheckResultService.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/Dt_WheelsStock_OldService.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/DP/pnpm-lock.yaml
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
ÏîÄ¿´úÂë/DP/src/assets/img/gysp.mp4
Binary files differ
ÏîÄ¿´úÂë/DP/src/views/home.vue
@@ -1,12 +1,4 @@
<!--
 * @Author: daidai
 * @Date: 2022-01-12 14:23:32
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-09-09 14:47:24
 * @FilePath: \web-pc\src\pages\big-screen\view\home.vue
-->
<template>
  <!-- <div id="index" ref="appRef" class="index_home" :class="{ pageisScale: isScale }"> -->
  <ScaleScreen
    :width="1920"
    :height="1080"
@@ -14,6 +6,11 @@
    :selfAdaption="$store.state.setting.isScale"
  >
    <div class="bg">
      <!-- å…¨å±é®ç½©å±‚ -->
      <div v-if="showMask" class="fullscreen-mask" @click="enterFullscreen">
        <button class="fullscreen-button">点击全屏显示</button>
      </div>
      <dv-loading v-if="loading">Loading...</dv-loading>
      <div v-else class="host-body">
        <!-- å¤´éƒ¨ s -->
@@ -43,7 +40,6 @@
    </div>
    <Setting ref="setting" />
  </ScaleScreen>
  <!-- </div> -->
</template>
<script>
@@ -60,6 +56,7 @@
      dateYear: null,
      dateWeek: null,
      weekday: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
      showMask: true // æŽ§åˆ¶é®ç½©å±‚显示
    };
  },
  filters: {
@@ -72,9 +69,13 @@
  mounted() {
    this.timeFn();
    this.cancelLoading();
    // ç›‘听全屏变化
    document.addEventListener('fullscreenchange', this.handleFullscreenChange);
  },
  beforeDestroy() {
    clearInterval(this.timing);
    document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
  },
  methods: {
    showSetting() {
@@ -90,13 +91,57 @@
    cancelLoading() {
      let timer = setTimeout(() => {
        this.loading = false;
        clearTimeout(timer);
      }, 1500);
      }, 100);
    },
    // è¿›å…¥å…¨å±
    enterFullscreen() {
      const element = document.documentElement;
      if (element.requestFullscreen) {
        element.requestFullscreen();
      } else if (element.webkitRequestFullscreen) {
        element.webkitRequestFullscreen();
      } else if (element.msRequestFullscreen) {
        element.msRequestFullscreen();
      }
    },
    // å¤„理全屏变化
    handleFullscreenChange() {
      this.showMask = !document.fullscreenElement;
    }
  },
};
</script>
<style lang="scss">
@import "./home.scss";
</style>
.fullscreen-mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.8);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
  cursor: pointer;
}
.fullscreen-button {
  padding: 15px 30px;
  font-size: 18px;
  background-color: #1a5cd7;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.3s;
  &:hover {
    background-color: #0d4bc2;
    transform: scale(1.05);
  }
}
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/center-map.vue
@@ -1,167 +1,98 @@
<template>
  <div class="centermap">
    <div class="mapwrap">
      <dv-border-box-13>
        <video
          ref="videoPlayer"
          class="screen-video"
          src="../../assets/img/2.mp4"
          loop
          autoplay
          preload="auto"
          muted
          @click="handleVideoClick"
        >
          æ‚¨çš„æµè§ˆå™¨ä¸æ”¯æŒè§†é¢‘播放。
        </video>
        <div v-if="showUnmuteButton" class="unmute-button" @click="unmuteVideo">
          <span>🔇 ç‚¹å‡»å–消静音</span>
        </div>
      </dv-border-box-13>
      <ItemWrap title="视频监控">
        <video id="video_left" autoplay muted controls playsinline width="100%" height="100%"></video>
      </ItemWrap>
    </div>
    <div class="mapwrap">
      <ItemWrap title="视频监控">
        <video id="video_right" autoplay muted controls playsinline width="100%" height="100%"></video>
      </ItemWrap>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      showUnmuteButton: true, // æ˜¾ç¤ºå–消静音按钮
      hasUserInteracted: false, // è®°å½•用户是否已交互
      wasPlaying: false // è®°å½•解除静音前的播放状态
    };
  },
  mounted() {
    this.initVideo();
    this.adjustVideoSize();
    window.addEventListener('resize', this.adjustVideoSize);
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.adjustVideoSize);
    const video = this.$refs.videoPlayer;
    if (video) {
      video.removeEventListener('error', this.handleVideoError);
    }
  },
  methods: {
    async initVideo() {
      const video = this.$refs.videoPlayer;
      if (video) {
        // ç¡®ä¿è§†é¢‘以静音状态开始
        video.muted = true;
        // æ·»åŠ é”™è¯¯ç›‘å¬
        video.addEventListener('error', this.handleVideoError);
        // å°è¯•自动播放(静音状态下通常允许)
        try {
          await video.play();
          this.wasPlaying = true;
        } catch (error) {
          console.log('自动播放被阻止:', error);
        }
      }
    },
    handleVideoClick() {
      if (!this.hasUserInteracted) {
        this.hasUserInteracted = true;
        // ç”¨æˆ·ç¬¬ä¸€æ¬¡ç‚¹å‡»è§†é¢‘时尝试解除静音
        this.unmuteVideo();
      }
    },
    async unmuteVideo() {
      const video = this.$refs.videoPlayer;
      if (!video) return;
      // è®°å½•当前播放状态
      this.wasPlaying = !video.paused;
      try {
        // å…ˆç¡®ä¿è§†é¢‘在播放
        if (this.wasPlaying) {
          await video.play();
        }
        // è§£é™¤é™éŸ³
        video.muted = false;
        // éšè—å–消静音按钮
        this.showUnmuteButton = false;
      } catch (error) {
        console.error('解除静音失败:', error);
        // æ˜¾ç¤ºæç¤ºï¼Œå‘ŠçŸ¥ç”¨æˆ·éœ€è¦äº¤äº’才能播放声音
        this.showUnmuteButton = true;
      }
    },
    handleVideoError(e) {
      const video = e.target;
      console.error('视频错误:', video.error);
    },
    adjustVideoSize() {
      const video = this.$refs.videoPlayer;
      if (video) {
        video.style.width = '100%';
        video.style.height = '100%';
        video.style.objectFit = 'cover';
      }
    }
<script setup>
import { ref, onMounted, onUnmounted, onActivated, onDeactivated } from 'vue'
// WebRTC æ’­æ”¾å™¨å®žä¾‹
const webRtcServer_left = ref(null)
const webRtcServer_right = ref(null)
// RTSP åœ°å€ï¼Œæ³¨æ„ URL ç¼–码特殊字符
const rtspLeft = 'rtsp://admin:Mx202513@172.21.7.244:554/Streaming/Channels/102?rtsp_transport=tcp'
const rtspRight = 'rtsp://admin:Mx202513@172.21.7.244:554/Streaming/Channels/202?rtsp_transport=tcp'
// WebRtcStreamer æœåŠ¡åœ°å€
const serverUrl = 'http://172.21.1.139:8000' // â† æ”¹ä¸ºä½ è¿è¡Œ webrtcstreamer çš„电脑 IP
// åˆå§‹åŒ–视频播放
const initVideo = () => {
  try {
    // å·¦æ‘„像头
    webRtcServer_left.value = new WebRtcStreamer('video_left', serverUrl)
    webRtcServer_left.value.connect(rtspLeft)
    // å³æ‘„像头
    webRtcServer_right.value = new WebRtcStreamer('video_right', serverUrl)
    webRtcServer_right.value.connect(rtspRight)
    console.log('视频初始化完成')
  } catch (err) {
    console.error('视频初始化失败: ' + err.message)
  }
};
}
// é”€æ¯è§†é¢‘播放
const destroyVideo = () => {
  if (webRtcServer_left.value) {
    webRtcServer_left.value.disconnect()
    webRtcServer_left.value = null
  }
  if (webRtcServer_right.value) {
    webRtcServer_right.value.disconnect()
    webRtcServer_right.value = null
  }
}
// é¡µé¢æ¿€æ´»æ—¶æ’­æ”¾
onActivated(() => {
  ['video_left', 'video_right'].forEach(id => {
    const video = document.getElementById(id)
    if (video && video.paused) video.play()
  })
})
// é¡µé¢åœç”¨æ—¶æš‚停
onDeactivated(() => {
  ['video_left', 'video_right'].forEach(id => {
    const video = document.getElementById(id)
    if (video && !video.paused) video.pause()
  })
})
// é¡µé¢æŒ‚载初始化
onMounted(() => {
  initVideo()
})
// é¡µé¢å¸è½½é”€æ¯
onUnmounted(() => {
  destroyVideo()
})
</script>
<style scoped>
.centermap {
  width: 100%;
  height: 100%;
  .mapwrap {
    height: 960px;
    width: 100%;
    box-sizing: border-box;
    position: relative;
    margin-top: 10px;
    & > dv-border-box-13 {
      width: 100%;
      height: 100%;
      position: relative;
      overflow: hidden;
    }
  }
}
.screen-video {
  position: absolute;
  top: 0;
  left: 0;
.mapwrap {
  height: 470px;
  width: 100%;
  height: 100%;
  object-fit: cover;
  cursor: pointer;
  box-sizing: border-box;
  position: relative;
  margin-top: 10px;
}
.unmute-button {
  position: absolute;
  bottom: 20px;
  right: 20px;
  background: rgba(0, 0, 0, 0.7);
  color: white;
  padding: 8px 16px;
  border-radius: 20px;
  cursor: pointer;
  z-index: 10;
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
  transition: all 0.3s ease;
  &:hover {
    background: rgba(0, 0, 0, 0.9);
  }
}
</style>
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/index copy.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
<template>
  <div>
    <!--===============================第一块轮播图===============================-->
    <div class="contents">
      <div class="contetn_center" style="border:  1px solid #fff;">
        <!-- <CenterMap class="contetn_center_top" /> -->
      </div>
      <div class="contetn_left">
        <div class="pagetab">
        </div>
        <ItemWrap class="contetn_left-bottom contetn_lr-item" title="库位信息">
          <!-- <stationone /> -->
        </ItemWrap>
        <ItemWrap class="contetn_left-bottom contetn_lr-item2" title="库存信息">
          <!-- <stationtwo /> -->
        </ItemWrap>
      </div>
    </div>
    <!--===============================第一块轮播图===============================-->
    <!--===============================第二块轮播图===============================-->
    <div>
      ç¬¬äºŒå—轮播图
    </div>
    <!--===============================第二块轮播图===============================-->
    <!--===============================第三块轮播图===============================-->
    <div>
      ç¬¬ä¸‰å—轮播图
    </div>
    <!--===============================第三块轮播图===============================-->
  </div>
</template>
<script>
import CenterMap from "./center-map.vue";
import stationone from './station-one.vue'
import stationtwo from './station-two.vue'
export default {
  components: {
    CenterMap,
    stationone,
    stationtwo,
  },
  data() {
    return {
    };
  },
  filters: {
    numsFilter(msg) {
      return msg || 0;
    },
  },
  created() {
  },
  mounted() { },
  methods: {
  },
};
</script>
<style lang="scss" scoped>
// å†…容
.contents {
  .contetn_left,
  .contetn_right {
    width: 475px;
    box-sizing: border-box;
    // padding: 16px 0;
  }
  .contetn_center {
    width: 1400px;
  }
  //左右两侧 ä¸‰ä¸ªå—
  .contetn_lr-item {
    height: 310px;
  }
  .contetn_lr-item2 {
    height: 620px;
  }
  .contetn_center_top {
    width: 100%;
  }
  // ä¸­é—´
  .contetn_center {
    display: flex;
    flex-direction: column;
    justify-content: space-around;
  }
  .contetn_center-bottom {
    height: 315px;
  }
  //左边 å³è¾¹ ç»“构一样
  .contetn_left,
  .contetn_right {
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    position: relative;
  }
}
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/index.vue
@@ -1,109 +1,156 @@
<!--
 * @Author: daidai
 * @Date: 2022-03-04 09:23:59
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-05-07 11:05:02
 * @FilePath: \web-pc\src\pages\big-screen\view\indexs\index.vue
-->
<template>
  <div class="contents">
    <div class="contetn_center">
      <CenterMap class="contetn_center_top" />
    </div>
    <div class="contetn_left">
      <div class="pagetab">
        <!-- <div class="item">实时监测</div> -->
  <div class="carousel-container">
    <!-- æ·»åŠ  transform æ ·å¼ç»‘定 -->
    <div class="carousel" :style="{ transform: `translateX(-${currentIndex * 100}%)` }">
      <div class="carousel-item">
        
      </div>
      <!-- <ItemWrap class="contetn_left-top contetn_lr-item" title="故障--种类频率">
        <LeftCenter />
      </ItemWrap> -->
      <ItemWrap
        class="contetn_left-bottom contetn_lr-item"
        title="库位信息"
      >
      <stationone/>
      </ItemWrap>
      <ItemWrap
        class="contetn_left-bottom contetn_lr-item2"
        title="库存信息"
      >
      <stationtwo/>
      </ItemWrap>
      <div class="carousel-item">
        <div class="contents">
      <div class="contetn_center" >
        <CenterMap class="contetn_center_top" />
      </div>
      <div class="contetn_left">
        <div class="pagetab">
        </div>
      <!-- <ItemWrap
        class="contetn_left-bottom contetn_lr-item"
        title="总体出入库信息"
      >
      <stationthree/>
      </ItemWrap> -->
        <ItemWrap class="contetn_left-bottom contetn_lr-item" title="打磨状态">
          <rightcenter />
        </ItemWrap>
        <ItemWrap class="contetn_left-bottom contetn_lr-item" title="测量状态">
        </ItemWrap>
      </div>
    </div>
      </div>
      <div class="carousel-item">
          <div class="contents2">
          <div class="contetn_left">
            <ItemWrap class="contetn_left-bottom contetn_lr-item" title="库位信息">
              <stationone />
            </ItemWrap>
            <div class="station-container">
            <ItemWrap class="contetn_left-bottom contetn_lr-item2" title="库存信息">
                <stationtwo />
            </ItemWrap>
            <ItemWrap class="contetn_left-bottom contetn_lr-item2" title="库存信息">
                <stationthree />
            </ItemWrap>
            <ItemWrap class="contetn_left-bottom contetn_lr-item2" title="库存信息">
                <stationfour />
            </ItemWrap>
            </div>
          </div>
        </div>
      </div>
    </div>
    <button class="carousel-button prev" @click="prev">←</button>
    <button class="carousel-button next" @click="next">→</button>
  </div>
</template>
<script>
import LeftTop from './left-top.vue'
import LeftCenter from "./left-center.vue";
import LeftBottom from "./left-bottom.vue";
import CenterMap from "./center-map.vue";
import CenterBottom from "./center-bottom.vue";
import RightTop from "./right-top.vue";
import RightCenter from "./right-center.vue";
import RightBottom from "./right-bottom.vue";
import LeftCenterRight from "./left-center-right.vue";
import stationone from './station-one.vue'
import stationtwo from './station-two.vue'
import stationthree from './station-three.vue'
import passtwo from './pass-two.vue'
import plan from './plan.vue'
import stationfour from './station-four.vue'
import rightcenter from './right-center.vue'
export default {
  components: {
    LeftTop,
    LeftCenter,
    LeftCenterRight,
    LeftBottom,
    CenterMap,
    RightTop,
    RightCenter,
    RightBottom,
    CenterBottom,
    stationone,
    stationtwo,
    stationthree,
    passtwo,
    plan
    stationfour,
    rightcenter
  },
  data() {
    return {
    };
      currentIndex: 0,
      interval: null
    }
  },
  filters: {
    numsFilter(msg) {
      return msg || 0;
    },
  },
  created() {
  },
  mounted() {},
  methods: {
    next() {
      this.currentIndex = (this.currentIndex + 1) % 3;
    },
    prev() {
      this.currentIndex = (this.currentIndex - 1 + 3) % 3;
    },
    startAutoPlay() {
      this.interval = setInterval(() => {
        this.next();
      }, 300000);
    },
    stopAutoPlay() {
      clearInterval(this.interval);
    }
  },
};
  mounted() {
    this.startAutoPlay();
  },
  beforeDestroy() {
    this.stopAutoPlay();
  }
}
</script>
<style lang="scss" scoped>
.carousel-container {
  position: relative;
  width: 100%;
  margin: 0 auto;
  overflow: hidden;
}
.carousel {
  display: flex;
  transition: transform 0.5s ease;
}
.carousel-item {
  min-width: 100%;
  padding: 20px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
}
.carousel-button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.5);
  color: white;
  border: none;
  padding: 10px 15px;
  cursor: pointer;
  z-index: 10;
}
.carousel-button.prev {
  left: 10px;
}
.carousel-button.next {
  right: 10px;
}
// å†…容
.contents {
  .contetn_left,
  .contetn_right {
    width: 475px;
@@ -117,11 +164,12 @@
  //左右两侧 ä¸‰ä¸ªå—
  .contetn_lr-item {
    height: 310px;
    height: 450px;
  }
  .contetn_lr-item2 {
    height: 620px;
    width: 30%;
  }
  .contetn_center_top {
@@ -147,36 +195,46 @@
    justify-content: space-around;
    position: relative;
  }
}
.labels {
        flex-shrink: 0;
        font-size: 24px;
        color: rgba(255, 255, 255, 0.6);
        float: left;
        margin-right: 11.5%;
      }
      .labelsd {
        flex-shrink: 0;
        font-size: 24px;
        color: rgba(255, 255, 255, 0.6);
        float: left;
        margin-left: 6%;
      }
@keyframes rotating {
    0% {
        -webkit-transform: rotate(0) scale(1);
        transform: rotate(0) scale(1);
    }
    50% {
        -webkit-transform: rotate(180deg) scale(1.1);
        transform: rotate(180deg) scale(1.1);
    }
    100% {
        -webkit-transform: rotate(360deg) scale(1);
        transform: rotate(360deg) scale(1);
    }
// ç¬¬ä¸€å—内容
.contents2 {
  width: 100%;
  .contetn_left {
    width: 100%;
    box-sizing: border-box;
    // padding: 16px 0;
  }
  //左右两侧 ä¸‰ä¸ªå—
  .contetn_lr-item {
    height: 210px;
  }
  .contetn_lr-item2 {
    height: 700px;
  }
  .contetn_center_top {
    width: 100%;
  }
}
</style>
.station-container {
  display: flex; /* ä½¿ç”¨ Flex å¸ƒå±€ */
  justify-content: space-between; /* å‡åŒ€åˆ†å¸ƒå­å…ƒç´  */
  gap: 16px; /* è®¾ç½®å­å…ƒç´ ä¹‹é—´çš„间距 */
  width: 100%; /* ç¡®ä¿å®¹å™¨å®½åº¦å¡«æ»¡çˆ¶å…ƒç´  */
}
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/right-center.vue
@@ -1,238 +1,91 @@
<template>
  <div id="centerLeft1">
    <div class="bg-color-black">
      <div class="d-flex pt-2 pl-2">
        <span>
          <ul>
            <li>合格:{{container_data.qualified}}</li>
            <li>待检:{{container_data.waitCheck}}</li>
            <li>检修中:{{container_data.checkIng}}</li>
            <li>空托:{{container_data.empty}}</li>
            <li>实托:{{container_data.full}}</li>
          </ul>
        </span>
  <ul class="user_Overview flex">
    <li class="user_Overview-item">
      <div class="user_Overview_nums" :class="kst ? 'allnum' : 'online'">
        <dv-digital-flop style="width:100%;height:100%;" />
      </div>
      <div class="d-flex jc-center" style="margin-left: 23%;">
        <CenterLeft1Chart />
      </div>
      <!-- 4个主要的数据 -->
      <!-- <div class="bottom-data">
        <div
          class="item-box mt-2"
          v-for="(item, index) in numberData"
          :key="index"
        >
          <div class="d-flex" style="margin-left:60px">
            <span class="coin">#</span>
            <dv-digital-flop class="dv-digital-flop" :config="item.number" />
          </div>
          <p class="text" style="text-align: center;">
            {{ item.text }}
            <span class="colorYellow">(个)</span>
          </p>
        </div>
      </div> -->
    </div>
  </div>
      <p>正常</p>
    </li>
  </ul>
</template>
<script>
import CenterLeft1Chart from '@/components/echart/centerLeft1Chart'
import axios from 'axios'
export default {
  data() {
    return {
      container_data:{},
      // numberData: [
      //   {
      //     number: {
      //       number: [15],
      //       toFixed: 1,
      //       textAlign: 'left',
      //       content: '{nt}',
      //       style: {
      //         fontSize: 24
      //       }
      //     },
      //     text: '今日构建总量'
      //   },
      //   {
      //     number: {
      //       number: [1144],
      //       toFixed: 1,
      //       textAlign: 'left',
      //       content: '{nt}',
      //       style: {
      //         fontSize: 24
      //       }
      //     },
      //     text: '总共完成数量'
      //   },
      //   {
      //     number: {
      //       number: [361],
      //       toFixed: 1,
      //       textAlign: 'left',
      //       content: '{nt}',
      //       style: {
      //         fontSize: 24
      //       }
      //     },
      //     text: '正在编译数量'
      //   },
      //   {
      //     number: {
      //       number: [157],
      //       toFixed: 1,
      //       textAlign: 'left',
      //       content: '{nt}',
      //       style: {
      //         fontSize: 24
      //       }
      //     },
      //     text: '未通过数量'
      //   }
      // ]
    }
      kst: true,
    };
  },
  components: {
    CenterLeft1Chart
  },
  mounted() {
    this.changeTiming()
  },
  methods: {
    changeTiming() {
      this.changeNumber()
      setInterval(() => {
        this.changeNumber()
      }, 3000)
    },
    changeNumber() {
      // this.numberData.forEach((item, index) => {
      //   item.number.number[0] += ++index
      //   item.number = { ...item.number }
      // })
      axios.post("http://192.168.12.189:8098/api/VV_Container/GetContainerMessage",null)
      .then((res) => {
        this.container_data = res;
        // this.numberData  = [
        //   {
        //     number: {
        //       number: [agvs.emptyNum],
        //       toFixed: 1,
        //       textAlign: 'left',
        //       content: '{nt}',
        //       style: {
        //         fontSize: 24
        //       }
        //     },
        //     text: '总共空货位'
        //   },
        //   {
        //     number: {
        //       number: [agvs.storedNum],
        //       toFixed: 1,
        //       textAlign: 'left',
        //       content: '{nt}',
        //       style: {
        //         fontSize: 24
        //       }
        //     },
        //     text: '总共有货货位'
        //   },
        //   {
        //     number: {
        //       number: [agvs.num],
        //       toFixed: 1,
        //       textAlign: 'left',
        //       content: '{nt}',
        //       style: {
        //         fontSize: 24
        //       }
        //     },
        //     text: '总共缓存架'
        //   },
        //   {
        //     number: {
        //       number: [agvs.ngNum],
        //       toFixed: 1,
        //       textAlign: 'left',
        //       content: '{nt}',
        //       style: {
        //         fontSize: 24
        //       }
        //     },
        //     text: '掉线缓存架数量'
        //   }
        // ]
          // this.numberData = GetLocationData
      }).catch((res) => {
        console.log(res)
      })
    }
  }
}
};
</script>
<style lang="scss" scoped>
$box-width: 610px;
$box-height: 410px;
<style lang='scss' scoped>
.user_Overview {
  li {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
#centerLeft1 {
  padding: 16px;
  height: $box-height;
  width: $box-width;
  border-radius: 10px;
  .bg-color-black {
    height: $box-height - 30px;
    border-radius: 10px;
  }
  .text {
    color: #c3cbde;
  }
  .dv-dec-3 {
    position: relative;
    width: 100px;
    height: 20px;
    top: -3px;
  }
    p {
      text-align: center;
      font-size: 16px;
      margin-top: 10px;
    }
  .bottom-data {
    .item-box {
      & > div {
        padding-right: 5px;
      }
      font-size: 14px;
      float: right;
    .user_Overview_nums {
      width: 200px;  /* æ”¾å¤§å®¹å™¨ */
      height: 200px;
      text-align: center;
      line-height: 250px;
      font-size: 52px;
      margin: 50px auto;
      position: relative;
      width: 50%;
      color: #d3d6dd;
      .dv-digital-flop {
        width: 120px;
        height: 30px;
      display: flex;
      justify-content: center;
      align-items: center;
      &::before {
        content: '';
        position: absolute;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;  /* å…³é”®ä¿®æ”¹ï¼šç­‰æ¯”例缩放 */
        z-index: 1;
      }
      // é‡‘币
      .coin {
      /* æ•°å­—内容层级提高 */
      > * {
        position: relative;
        top: 6px;
        font-size: 20px;
        color: #ffc107;
        z-index: 2;
      }
      .colorYellow {
        color: yellowgreen;
      &.bgdonghua::before {
        animation: rotating 14s linear infinite;
      }
      p {
        text-align: center;
      }
    }
    /* ä¸åŒç±»åå¯¹åº”不同背景图 */
    .allnum::before {
      background-image: url("../../assets/img/left_top_lan.png");
    }
    .online::before {
      background-image: url("../../assets/img/left_top_lv.png");
    }
    .offline::before {
      background-image: url("../../assets/img/left_top_huang.png");
    }
    .laramnum::before {
      background-image: url("../../assets/img/left_top_hong.png");
    }
  }
}
ul li{
  float: left;
  list-style-type: none;
  margin-left: 8%;
}
</style>
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/station-four.vue
@@ -1,237 +1,156 @@
<!--
 * @Author: daidai
 * @Date: 2022-02-28 16:16:42
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-07-20 17:57:11
 * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue
-->
<template>
  <ul class="user_Overview flex" v-if="pageflag">
      <li class="user_Overview-item" style="color: #00fdfa">
          <div class="user_Overview_nums allnum ">
              <dv-digital-flop :config="onlineconfig" style="width:100%;height:100%;" />
          </div>
          <p>10号检修台</p>
          <br>
          <p>{{stationstate[9].station_state}}</p>
      </li>
      <li class="user_Overview-item" style="color: #07f7a8">
          <div class="user_Overview_nums online">
              <dv-digital-flop :config="config" style="width:100%;height:100%;" />
          </div>
          <p>11号检修台</p>
          <br>
          <p>{{stationstate[10].station_state}}</p>
      </li>
      <li class="user_Overview-item" style="color: #e3b337">
          <div class="user_Overview_nums offline">
              <dv-digital-flop :config="offlineconfig" style="width:100%;height:100%;" />
          </div>
          <p>12号检修台</p>
          <br>
          <p>{{stationstate[11].station_state}}</p>
      </li>
  </ul>
  <Reacquire v-else @onclick="getData" line-height="200px">
      é‡æ–°èŽ·å–
  </Reacquire>
  <div class="table-container">
    <table class="data-table">
      <thead>
        <tr>
          <th v-for="(header, index) in headers" :key="index">
            {{ header }}
          </th>
        </tr>
      </thead>
      <tbody ref="tableBody">
        <tr v-for="(row, rowIndex) in visibleData" :key="rowIndex">
          <td v-for="(cell, cellIndex) in row" :key="cellIndex">
            {{ cell }}
          </td>
        </tr>
      </tbody>
    </table>
    <div v-if="loading" class="loading">加载中...</div>
    <div v-if="error" class="error">{{ error }}</div>
  </div>
</template>
<script>
import { currentGET } from 'api/modules'
import {Floorfault} from "@/api/http.js"
let style = {
  fontSize: 24
}
import axios from 'axios';
export default {
  data() {
      return {
          options: {},
          stationstate:[],
          userOverview: {
              alarmNum: 2,
              offlineNum: 3,
              onlineNum: 5,
              totalNum: 10,
          },
          pageflag: true,
          timer: null,
          config: {
              number: [100],
              content: '{nt}',
              style: {
                  ...style,
                  // stroke: "#00fdfa",
                  fill: "#00fdfa",
              },
          },
          onlineconfig: {
              number: [0],
              content: '{nt}',
              style: {
                  ...style,
                  // stroke: "#07f7a8",
                  fill: "#07f7a8",
              },
          },
          offlineconfig: {
              number: [0],
              content: '{nt}',
              style: {
                  ...style,
                  // stroke: "#e3b337",
                  fill: "#e3b337",
              },
          },
      };
  },
  filters: {
      numsFilter(msg) {
          return msg || 0;
      },
    return {
      headers: ['车型', '轮型', '数量'],
      tableData: [], // å­˜å‚¨API返回的所有数据
      visibleData: [], // å½“前显示的数据
      loading: false,
      error: null,
      currentIndex: 0, // å½“前显示数据的起始索引
      visibleRows: 12, // æ¯æ¬¡æ˜¾ç¤ºçš„行数
      scrollInterval: null, // æ»šåŠ¨å®šæ—¶å™¨
      scrollSpeed:  5000 // æ»šåŠ¨é€Ÿåº¦(毫秒)
    }
  },
  created() {
      this.getData()
    this.fetchData();
  },
  mounted() {
    this.startAutoScroll();
  },
  beforeDestroy() {
      this.clearData()
    this.stopAutoScroll();
  },
  methods: {
      clearData() {
          if (this.timer) {
              clearInterval(this.timer)
              this.timer = null
          }
      },
      async getData() {
          this.pageflag = true;
          // currentGET("big2").then((res) => {
          //     if (!this.timer) {
          //         console.log("设备总览2", res);
          //     }
          //     if (res.success) {
          //         this.userOverview = res.data;
          //            this.onlineconfig = {
          //             ...this.onlineconfig,
          //             number: [1]
          //         }
          //         this.config = {
          //             ...this.config,
          //             number: [7]
          //         }
          //         this.offlineconfig = {
          //             ...this.offlineconfig,
          //             number: [4]
          //         }
          //         this.laramnumconfig = {
          //             ...this.laramnumconfig,
          //             number: [10]
          //         }
          //         this.switper();
          //     } else {
          //         this.pageflag = false;
          //         this.$Message.warning(res.msg);
          //     }
          // });
                  let rep = await Floorfault((a)=>{
                  });
                  this.stationstate=rep;
                     this.onlineconfig = {
                      ...this.onlineconfig,
                      number: [rep[9].station_qty]
                  }
                  this.config = {
                      ...this.config,
                      number: [rep[10].station_qty]
                  }
                  this.offlineconfig = {
                      ...this.offlineconfig,
                      number: [rep[11].station_qty]
                  }
                  this.switper();
      },
      //轮询
      switper() {
          if (this.timer) {
              return
          }
          let looper = (a) => {
              this.getData()
          };
          this.timer = setInterval(looper, this.$store.state.setting.echartsAutoTime);
      },
  },
};
</script>
<style lang='scss' scoped>
.user_Overview {
  li {
      flex: 1;
      p {
          text-align: center;
          height: 16px;
          font-size: 16px;
    fetchData() {
      this.loading = true;
      axios.post("http://127.0.0.1:5000/api/Dt_WheelsStock/InventoryStatistics", null)
        .then((response) => {
          this.tableData = [];
          response.data.data.slice(25, 36).forEach(item => {
            this.tableData.push([
              item.wheels_CarType,
              item.wheels_ldxh,
              item.count
            ]);
          });
          this.updateVisibleData();
          this.loading = false;
        })
        .catch((error) => {
          console.error("请求失败:", error);
          this.tableData = [
            ['暂无数据', '暂无数据', '暂无数据'],
          ];
          this.error = "数据加载失败";
          this.loading = false;
        });
    },
    startAutoScroll() {
      this.stopAutoScroll(); // å…ˆåœæ­¢å·²æœ‰çš„定时器
      this.scrollInterval = setInterval(() => {
        if (this.tableData.length > this.visibleRows) {
          this.currentIndex = (this.currentIndex + 1) % this.tableData.length;
          this.updateVisibleData();
        }
      }, this.scrollSpeed);
    },
    stopAutoScroll() {
      if (this.scrollInterval) {
        clearInterval(this.scrollInterval);
        this.scrollInterval = null;
      }
      .user_Overview_nums {
          width: 100px;
          height: 100px;
          text-align: center;
          line-height: 100px;
          font-size: 22px;
          margin: 50px auto 30px;
          background-size: cover;
          background-position: center center;
          position: relative;
          &::before {
              content: '';
              position: absolute;
              width: 100%;
              height: 100%;
              top: 0;
              left: 0;
          }
          &.bgdonghua::before {
              animation: rotating 14s linear infinite;
          }
    },
    updateVisibleData() {
      if (this.tableData.length === 0) return;
      // èŽ·å–å½“å‰å¯è§çš„æ•°æ®
      const endIndex = this.currentIndex + this.visibleRows;
      if (endIndex <= this.tableData.length) {
        this.visibleData = this.tableData.slice(this.currentIndex, endIndex);
      } else {
        // å¤„理循环滚动
        const firstPart = this.tableData.slice(this.currentIndex);
        const secondPart = this.tableData.slice(0, endIndex - this.tableData.length);
        this.visibleData = [...firstPart, ...secondPart];
      }
      .allnum {
          // background-image: url("../../assets/img/left_top_lan.png");
          &::before {
              background-image: url("../../assets/img/left_top_lan.png");
          }
      }
      .online {
          &::before {
              background-image: url("../../assets/img/left_top_lv.png");
          }
      }
      .offline {
          &::before {
              background-image: url("../../assets/img/left_top_huang.png");
          }
      }
      .laramnum {
          &::before {
              background-image: url("../../assets/img/left_top_hong.png");
          }
      }
    }
  }
}
</script>
<style scoped>
.table-container {
  width: 100%;
  overflow-x: auto;
  position: relative;
  min-height: 200px;
  max-height: 700px; /* é™åˆ¶å®¹å™¨é«˜åº¦ */
  overflow-y: hidden; /* éšè—åž‚直滚动条 */
}
.data-table {
  width: 100%;
  border-collapse: collapse;
  margin: 20px 0;
  font-family: Arial, sans-serif;
}
.data-table th {
  font-weight: bold;
  padding: 12px 15px;
  text-align: left;
  border-bottom: 2px solid #c5c5c5;
  position: sticky;
  top: 0;
}
.data-table td {
  padding: 10px 15px;
  height: 25px;
  border-bottom: 1px solid #696969;
}
.loading, .error {
  padding: 20px;
  text-align: center;
  color: #666;
}
.error {
  color: #f56c6c;
}
/* æ·»åŠ å¹³æ»‘æ»šåŠ¨æ•ˆæžœ */
.data-table tbody {
  transition: transform 1s ease-in-out;
}
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/station-one.vue
@@ -1,84 +1,92 @@
<template>
    <div class="table-container">
      <table class="data-table">
        <thead>
          <tr>
            <th v-for="(header, index) in headers" :key="index">
              {{ header }}
            </th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(row, rowIndex) in tableData" :key="rowIndex">
            <td v-for="(cell, cellIndex) in row" :key="cellIndex">
              {{ cell }}
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </template>
  <script>
  <div class="table-container">
    <table class="data-table">
      <thead>
        <tr>
          <th>货位信息</th>
          <th v-for="(status, index) in statusTypes" :key="index">
            {{ status }}
          </th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>数量</td>
          <td v-for="(count, index) in statusCounts" :key="index">
            {{ count }}
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>
<script>
import axios from 'axios';
export default {
  data() {
    return {
      headers: ['货位信息', '数量'],
      tableData: []
      statusTypes: ['有货', '空货位', '有货禁用', '锁定'], // è¡¨å¤´çŠ¶æ€ç±»åž‹
      statusCounts: [0, 0, 0,0] // å¯¹åº”状态的数量
    };
  },
  created() {
    this.fetchData();
     this.fetchData();
  },
  methods: {
    fetchData() {
      axios.post("http://172.21.1.139:5000/api/LocationInfo/LocationStatus", null)
      axios.post("http://127.0.0.1:5000/api/LocationInfo/LocationStatus", null)
        .then((response) => {
          this.tableData = [];
          response.forEach(item => {
            this.tableData.push([
              item.status,
              item.count
            ]);
          });
          // å‡è®¾API返回的数据格式为:[{status: '有货', count: 9}, {status: '空货位', count: 2}, ...]
          const newCounts = [0, 0, 0,0];
          console.log(response.data)
          newCounts[0] = response.data.data[0].count;
          newCounts[1] = response.data.data[1].count;
          newCounts[2] = response.data.data[2].count;
          newCounts[3] = response.data.data[3].count;
          this.statusCounts = newCounts;
        })
        .catch((error) => {
          console.error("请求失败:", error);
          this.tableData = [
            ['空货位', 0],
            ['有货', 0],
            ['占用', 0]
          ];
          // ä½¿ç”¨é»˜è®¤æ•°æ®
          this.statusCounts = [0, 0, 0,0];
        });
    }
  }
};
</script>
  <style scoped>
  .table-container {
    width: 100%;
    overflow-x: auto;
  }
  .data-table {
    width: 100%;
    border-collapse: collapse;
    margin: 20px 0;
    font-family: Arial, sans-serif;
  }
  .data-table th {
    font-weight: bold;
    padding: 12px 15px;
    text-align: left;
    border-bottom: 2px solid #c9aeae;
  }
  .data-table td {
    padding: 10px 15px;
    border-bottom: 1px solid #ddd;
  }
  </style>
<style scoped>
.table-container {
  width: 100%;
  overflow-x: auto;
}
.data-table {
  width: 100%;
  border-collapse: collapse;
  margin: 20px 0;
  font-family: Arial, sans-serif;
}
.data-table th {
  font-weight: bold;
  padding: 12px 15px;
  text-align: center;
  border-bottom: 2px solid #c5c5c5;
}
.data-table td {
  padding: 10px 15px;
  border-bottom: 1px solid #696969;
  text-align: center;
}
.data-table th:first-child,
.data-table td:first-child {
  text-align: left;
  font-weight: bold;
}
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/station-three.vue
@@ -1,148 +1,156 @@
<template>
    <ul class="user_Overview flex">
        <li class="user_Overview-item" style="color: #00fdfa">
            <div class="user_Overview_nums allnum ">
                <dv-digital-flop :config="onlineconfig" style="width:100%;height:100%;" />
            </div>
            <br>
            <p>{{stationstate[0].station_state}}</p>
            <p v-if="stationstate[0].station_state == '检修中'">{{stationstate[0].station_checkName}}</p>
        </li>
        <li class="user_Overview-item" style="color: #07f7a8">
            <div class="user_Overview_nums online">
                <dv-digital-flop :config="config" style="width:100%;height:100%;" />
            </div>
            <br>
            <p>{{stationstate[1].station_state}}</p>
            <p v-if="stationstate[1].station_state == '检修中'">{{stationstate[1].station_checkName}}</p>
        </li>
        <!-- <li class="user_Overview-item" style="color: #e3b337">
            <div class="user_Overview_nums offline">
                <dv-digital-flop :config="offlineconfig" style="width:100%;height:100%;" />
            </div>
            <p>7号检修台</p>
            <br>
            <p>{{stationstate[2].station_state}}</p>
            <p v-if="stationstate[2].station_state == '检修中'">{{stationstate[2].station_checkName}}</p>
        </li>
        <li class="user_Overview-item" style="color: #e3b337">
            <div class="user_Overview_nums offline">
                <dv-digital-flop :config="offlineconfig" style="width:100%;height:100%;" />
            </div>
            <p>8号检修台</p>
            <br>
            <p>{{stationstate[3].station_state}}</p>
            <p v-if="stationstate[3].station_state == '检修中'">{{stationstate[3].station_checkName}}</p>
        </li> -->
    </ul>
  </template>
  <script>
  let style = {
    fontSize: 24
  }
  export default {
    data() {
        return {
            stationstate: [
                { station_state: '入库量', station_checkName: '' },
                { station_state: '出库量', station_checkName: '' },
                { station_state: '待机中', station_checkName: '' },
                { station_state: '故障中', station_checkName: '' }
            ],
            config: {
                number: [7],
                content: '{nt}',
                style: {
                    ...style,
                    fill: "#00fdfa",
                },
            },
            onlineconfig: {
                number: [1],
                content: '{nt}',
                style: {
                    ...style,
                    fill: "#07f7a8",
                },
            },
            offlineconfig: {
                number: [4],
                content: '{nt}',
                style: {
                    ...style,
                    fill: "#e3b337",
                },
            },
        };
  <div class="table-container">
    <table class="data-table">
      <thead>
        <tr>
          <th v-for="(header, index) in headers" :key="index">
            {{ header }}
          </th>
        </tr>
      </thead>
      <tbody ref="tableBody">
        <tr v-for="(row, rowIndex) in visibleData" :key="rowIndex">
          <td v-for="(cell, cellIndex) in row" :key="cellIndex">
            {{ cell }}
          </td>
        </tr>
      </tbody>
    </table>
    <div v-if="loading" class="loading">加载中...</div>
    <div v-if="error" class="error">{{ error }}</div>
  </div>
</template>
<script>
import axios from 'axios';
export default {
  data() {
    return {
      headers: ['车型', '轮型', '数量'],
      tableData: [], // å­˜å‚¨API返回的所有数据
      visibleData: [], // å½“前显示的数据
      loading: false,
      error: null,
      currentIndex: 0, // å½“前显示数据的起始索引
      visibleRows: 12, // æ¯æ¬¡æ˜¾ç¤ºçš„行数
      scrollInterval: null, // æ»šåŠ¨å®šæ—¶å™¨
      scrollSpeed:  5000 // æ»šåŠ¨é€Ÿåº¦(毫秒)
    }
  },
  created() {
    this.fetchData();
  },
  mounted() {
    this.startAutoScroll();
  },
  beforeDestroy() {
    this.stopAutoScroll();
  },
  methods: {
    fetchData() {
      this.loading = true;
      axios.post("http://127.0.0.1:5000/api/Dt_WheelsStock/InventoryStatistics", null)
        .then((response) => {
          this.tableData = [];
          response.data.data.slice(13, 24).forEach(item => {
            this.tableData.push([
              item.wheels_CarType,
              item.wheels_ldxh,
              item.count
            ]);
          });
          this.updateVisibleData();
          this.loading = false;
        })
        .catch((error) => {
          console.error("请求失败:", error);
          this.tableData = [
            ['暂无数据', '暂无数据', '暂无数据'],
          ];
          this.error = "数据加载失败";
          this.loading = false;
        });
    },
    filters: {
        numsFilter(msg) {
            return msg || 0;
        },
    startAutoScroll() {
      this.stopAutoScroll(); // å…ˆåœæ­¢å·²æœ‰çš„定时器
      this.scrollInterval = setInterval(() => {
        if (this.tableData.length > this.visibleRows) {
          this.currentIndex = (this.currentIndex + 1) % this.tableData.length;
          this.updateVisibleData();
        }
      }, this.scrollSpeed);
    },
  };
  </script>
  <style lang='scss' scoped>
  .user_Overview {
    li {
        flex: 1;
        p {
            text-align: center;
            height: 16px;
            font-size: 16px;
        }
        .user_Overview_nums {
            width: 100px;
            height: 100px;
            text-align: center;
            line-height: 100px;
            font-size: 22px;
            margin: 50px auto 30px;
            background-size: cover;
            background-position: center center;
            position: relative;
            &::before {
                content: '';
                position: absolute;
                width: 100%;
                height: 100%;
                top: 0;
                left: 0;
            }
            &.bgdonghua::before {
                animation: rotating 14s linear infinite;
            }
        }
        .allnum {
            &::before {
                background-image: url("../../assets/img/left_top_lan.png");
            }
        }
        .online {
            &::before {
                background-image: url("../../assets/img/left_top_lv.png");
            }
        }
        .offline {
            &::before {
                background-image: url("../../assets/img/left_top_huang.png");
            }
        }
        .laramnum {
            &::before {
                background-image: url("../../assets/img/left_top_hong.png");
            }
        }
    stopAutoScroll() {
      if (this.scrollInterval) {
        clearInterval(this.scrollInterval);
        this.scrollInterval = null;
      }
    },
    updateVisibleData() {
      if (this.tableData.length === 0) return;
      // èŽ·å–å½“å‰å¯è§çš„æ•°æ®
      const endIndex = this.currentIndex + this.visibleRows;
      if (endIndex <= this.tableData.length) {
        this.visibleData = this.tableData.slice(this.currentIndex, endIndex);
      } else {
        // å¤„理循环滚动
        const firstPart = this.tableData.slice(this.currentIndex);
        const secondPart = this.tableData.slice(0, endIndex - this.tableData.length);
        this.visibleData = [...firstPart, ...secondPart];
      }
    }
  }
  </style>
}
</script>
<style scoped>
.table-container {
  width: 100%;
  overflow-x: auto;
  position: relative;
  min-height: 200px;
  max-height: 700px; /* é™åˆ¶å®¹å™¨é«˜åº¦ */
  overflow-y: hidden; /* éšè—åž‚直滚动条 */
}
.data-table {
  width: 100%;
  border-collapse: collapse;
  margin: 20px 0;
  font-family: Arial, sans-serif;
}
.data-table th {
  font-weight: bold;
  padding: 12px 15px;
  text-align: left;
  border-bottom: 2px solid #c5c5c5;
  position: sticky;
  top: 0;
}
.data-table td {
  padding: 10px 15px;
  height: 25px;
  border-bottom: 1px solid #696969;
}
.loading, .error {
  padding: 20px;
  text-align: center;
  color: #666;
}
.error {
  color: #f56c6c;
}
/* æ·»åŠ å¹³æ»‘æ»šåŠ¨æ•ˆæžœ */
.data-table tbody {
  transition: transform 1s ease-in-out;
}
</style>
ÏîÄ¿´úÂë/DP/src/views/indexs/station-two.vue
@@ -1,99 +1,156 @@
<template>
    <div class="table-container">
      <table class="data-table">
        <thead>
          <tr>
            <th v-for="(header, index) in headers" :key="index">
              {{ header }}
            </th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(row, rowIndex) in tableData" :key="rowIndex">
            <td v-for="(cell, cellIndex) in row" :key="cellIndex">
              {{ cell }}
            </td>
          </tr>
        </tbody>
      </table>
      <div v-if="loading" class="loading">加载中...</div>
      <div v-if="error" class="error">{{ error }}</div>
    </div>
  </template>
  <script>
  import axios from 'axios';
  export default {
    data() {
      return {
        headers: ['车型','轮型',  '数量'],
        tableData: [], // å­˜å‚¨API返回的数据
        loading: false,
        error: null
      }
    },
    created() {
      this.fetchData();
    },
    methods: {
        fetchData() {
      axios.post("http://172.21.1.139:5000/api/Dt_WheelsStock/InventoryStatistics", null)
  <div class="table-container">
    <table class="data-table">
      <thead>
        <tr>
          <th v-for="(header, index) in headers" :key="index">
            {{ header }}
          </th>
        </tr>
      </thead>
      <tbody ref="tableBody">
        <tr v-for="(row, rowIndex) in visibleData" :key="rowIndex">
          <td v-for="(cell, cellIndex) in row" :key="cellIndex">
            {{ cell }}
          </td>
        </tr>
      </tbody>
    </table>
    <div v-if="loading" class="loading">加载中...</div>
    <div v-if="error" class="error">{{ error }}</div>
  </div>
</template>
<script>
import axios from 'axios';
export default {
  data() {
    return {
      headers: ['车型', '轮型', '数量'],
      tableData: [], // å­˜å‚¨API返回的所有数据
      visibleData: [], // å½“前显示的数据
      loading: false,
      error: null,
      currentIndex: 0, // å½“前显示数据的起始索引
      visibleRows: 12, // æ¯æ¬¡æ˜¾ç¤ºçš„行数
      scrollInterval: null, // æ»šåŠ¨å®šæ—¶å™¨
      scrollSpeed:  5000 // æ»šåŠ¨é€Ÿåº¦(毫秒)
    }
  },
  created() {
    this.fetchData();
  },
  mounted() {
    this.startAutoScroll();
  },
  beforeDestroy() {
    this.stopAutoScroll();
  },
  methods: {
    fetchData() {
      this.loading = true;
      axios.post("http://127.0.0.1:5000/api/Dt_WheelsStock/InventoryStatistics", null)
        .then((response) => {
          this.tableData = [];
          response.forEach(item => {
          response.data.data.slice(0, 12).forEach(item => {
            this.tableData.push([
            item.wheels_CarType,
            item.wheels_ldxh,
            item.count
              item.wheels_CarType,
              item.wheels_ldxh,
              item.count
            ]);
          });
          this.updateVisibleData();
          this.loading = false;
        })
        .catch((error) => {
          console.error("请求失败:", error);
          this.tableData = [
            ['暂无数据', '暂无数据', '暂无数据'],
          ];
          this.error = "数据加载失败";
          this.loading = false;
        });
    }
    },
    startAutoScroll() {
      this.stopAutoScroll(); // å…ˆåœæ­¢å·²æœ‰çš„定时器
      this.scrollInterval = setInterval(() => {
        if (this.tableData.length > this.visibleRows) {
          this.currentIndex = (this.currentIndex + 1) % this.tableData.length;
          this.updateVisibleData();
        }
      }, this.scrollSpeed);
    },
    stopAutoScroll() {
      if (this.scrollInterval) {
        clearInterval(this.scrollInterval);
        this.scrollInterval = null;
      }
    },
    updateVisibleData() {
      if (this.tableData.length === 0) return;
      // èŽ·å–å½“å‰å¯è§çš„æ•°æ®
      const endIndex = this.currentIndex + this.visibleRows;
      if (endIndex <= this.tableData.length) {
        this.visibleData = this.tableData.slice(this.currentIndex, endIndex);
      } else {
        // å¤„理循环滚动
        const firstPart = this.tableData.slice(this.currentIndex);
        const secondPart = this.tableData.slice(0, endIndex - this.tableData.length);
        this.visibleData = [...firstPart, ...secondPart];
      }
    }
  }
  </script>
  <style scoped>
  .table-container {
    width: 100%;
    overflow-x: auto;
    position: relative;
    min-height: 200px;
  }
  .data-table {
    width: 100%;
    border-collapse: collapse;
    margin: 20px 0;
    font-family: Arial, sans-serif;
  }
  .data-table th {
    font-weight: bold;
    padding: 12px 15px;
    text-align: left;
    border-bottom: 2px solid #c9aeae;
  }
  .data-table td {
    padding: 10px 15px;
    border-bottom: 1px solid #ddd;
  }
  .loading, .error {
    padding: 20px;
    text-align: center;
    color: #666;
  }
  .error {
    color: #f56c6c;
  }
  </style>
}
</script>
<style scoped>
.table-container {
  width: 100%;
  overflow-x: auto;
  position: relative;
  min-height: 200px;
  max-height: 700px; /* é™åˆ¶å®¹å™¨é«˜åº¦ */
  overflow-y: hidden; /* éšè—åž‚直滚动条 */
}
.data-table {
  width: 100%;
  border-collapse: collapse;
  margin: 20px 0;
  font-family: Arial, sans-serif;
}
.data-table th {
  font-weight: bold;
  padding: 12px 15px;
  text-align: left;
  border-bottom: 2px solid #c5c5c5;
  position: sticky;
  top: 0;
}
.data-table td {
  padding: 10px 15px;
  height: 25px;
  border-bottom: 1px solid #696969;
}
.loading, .error {
  padding: 20px;
  text-align: center;
  color: #666;
}
.error {
  color: #f56c6c;
}
/* æ·»åŠ å¹³æ»‘æ»šåŠ¨æ•ˆæžœ */
.data-table tbody {
  transition: transform 1s ease-in-out;
}
</style>
ÏîÄ¿´úÂë/DP/src/views/setting.vue
@@ -1,9 +1,7 @@
<template>
    <transition name="yh-setting-fade">
        <div class="setting" :class="{ settingShow: settingShow }" v-show="settingShow">
            <div class="setting_dislog" @click="settingShow = false">
            </div>
            <div class="setting_dislog" @click="settingShow = false"></div>
            <div class="setting_inner">
                <div class="setting_header">
                    è®¾ç½®
@@ -11,7 +9,7 @@
                <div class="setting_body">
                    <!-- <div class="left_shu"> å®žæ—¶ç›‘测</div> -->
                    <div class="left_shu"> å…¨å±€è®¾ç½®</div> 
                      <div class="setting_item">
                    <div class="setting_item">
                        <span class="setting_label">
                            æ˜¯å¦è¿›è¡Œè‡ªåŠ¨é€‚é…<span class="setting_label_tip">(默认分辨率1920*1080)</span>: 
                        </span>
@@ -20,35 +18,17 @@
                                <el-radio :label="true">是</el-radio>
                                <el-radio :label="false">否</el-radio>
                            </el-radio-group>
                        </div>
                    </div>
                    <!-- <div class="left_shu"> å®žæ—¶ç›‘测</div>
                    <div class="setting_item">
                        <span class="setting_label">
                            è®¾å¤‡æé†’自动轮询: <span class="setting_label_tip"></span>
                        </span>
                        <div class="setting_content">
                            <el-radio-group v-model="sbtxradio" @change="(val) => radiochange(val, 'sbtxSwiper')">
                                <el-radio :label="true">是</el-radio>
                                <el-radio :label="false">否</el-radio>
                            </el-radio-group>
                        </div>
                    </div>
                    <div class="setting_item">
                        <span class="setting_label">
                            å®žæ—¶é¢„警轮播:
                        </span>
                        <div class="setting_content">
                            <el-radio-group v-model="ssyjradio" @change="(val) => radiochange(val, 'ssyjSwiper')">
                                <el-radio :label="true">是</el-radio>
                                <el-radio :label="false">否</el-radio>
                            </el-radio-group>
                        </div>
                    </div> -->
                    <div class="flex justify-center">
                        <!-- <el-button type="primary" round size="mini">确定</el-button> -->
                        <el-button
                            type="primary"
                            @click="toggleFullScreen"
                            class="fullscreen-btn"
                        >
                            {{ isFullScreen ? '退出全屏' : '全屏显示' }}
                        </el-button>
                    </div>
                </div>
            </div>
@@ -57,16 +37,16 @@
</template>
<script>
export default {
    components: {},
    data() {
        return {
            settingShow: false,
            sbtxradio:true,
            sbtxradio: true,
            ssyjradio: true,
            isScaleradio:true,
            echartsAutoTime:3000
            isScaleradio: true,
            echartsAutoTime: 3000,
            isFullScreen: false
        };
    },
    computed: {},
@@ -76,12 +56,28 @@
        },
        radiochange(val, type) {
            this.$store.commit('setting/updateSwiper', { val, type })
            if(type==='isScale'){
            if(type === 'isScale'){
                // this.$router.go(0)
                // location.reload()
                // window.location.href=window.location.href+"?t="+Date.now()
            }
        },
        toggleFullScreen() {
            if (!document.fullscreenElement) {
                // è¿›å…¥å…¨å±
                document.documentElement.requestFullscreen().catch(err => {
                    console.error(`全屏错误: ${err.message}`);
                });
            } else {
                // é€€å‡ºå…¨å±
                if (document.exitFullscreen) {
                    document.exitFullscreen();
                }
            }
        },
        handleFullScreenChange() {
            this.isFullScreen = !!document.fullscreenElement;
        }
    },
    created() {
        this.$store.commit('setting/initSwipers')
@@ -91,8 +87,10 @@
    },
    mounted() {
        document.body.appendChild(this.$el);
        document.addEventListener('fullscreenchange', this.handleFullScreenChange);
    },
    beforeDestroy() {
        document.removeEventListener('fullscreenchange', this.handleFullScreenChange);
    },
    destroyed() {
        if (this.$el && this.$el.parentNode) {
@@ -103,4 +101,7 @@
</script>
<style lang='scss' scoped>
.fullscreen-btn {
    margin-top: 20px;
}
</style>
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Client/src/views/Home.vue
@@ -1,51 +1,101 @@
<template>
  <div class="title"></div>
  <el-container>
    <!-- <el-header>日志</el-header> -->
    <el-main>
      <el-card v-for="(log, index) in logs" :key="index" class="log-card" :style="{ color: log.color }">
        <div :style="{ color: log.color }">{{ log.logEntry }}</div>
        <div :style="{ color: log.color }">{{ log.time }}</div>
      </el-card>
    </el-main>
  </el-container>
  <div class="container">
    <div class="input-group">
      <span class="label">站台:</span>
      <el-select v-model="value1" placeholder="请选择" style="width: 40%;">
        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
        </el-option>
      </el-select>
    </div>
    <div class="input-group" style="width:50%;">
      <span class="label">条码:</span>
      <el-input v-model="input2" placeholder="请输入内容"></el-input>
    </div>
    <div class="input-group">
      <el-button type="primary" style="width: 50%;" @click="setBorot()">写入</el-button>
    </div>
  </div>
</template>
<script>
import { ref, onMounted } from 'vue'
import eventBus from "@/uitils/eventBus";
export default {
  setup() {
    const logs = ref([]);
    onMounted(() => {
      eventBus.on('Logs', eventData => {
        if (logs.value.length > 500) {
          logs.value = [];
        }
        const logEntry = "日志信息:" + eventData.log
        const time = "时间:" + eventData.time
        logs.value.unshift({ logEntry: logEntry, time: time, color: eventData.color });
        // logs.value.unshift(logEntry);
      });
    });
  data() {
    return {
      logs
      options: [{
        value: '1010',
        label: '1010'
      }, {
        value: '2015',
        label: '2015'
      }, {
        value: '2017',
        label: '2017'
      }, {
        value: '2021',
        label: '2021'
      }],
      value1: '',
      input2: '',
    }
  },
  methods: {
    setBorot() {
      if (this.value1 == "") {
        this.$message.error("请选择要写入的站台");
      }
      if (this.input2 == "") {
        this.$message.error("请选择要写入的条码");
      }
      this.$confirm("是否确定需要对该站台写入条码信息!!!", "提示", {
        // iconClass:"el-icon-success",//el-icon-remove自定义图标样式
        confirmButtonText: "确认",//确认按钮文字更换
        cancelButtonText: "取消",//取消按钮文字更换
        // cancelBtn:"取消",//取消按钮文字更换
        showClose: true,//是否显示右上角关闭按钮
        type: "warning",//提示类型 success:成功/info:信息/warning:警告/error:报错
      }).then(() => {
        var param = {
          DelKeys: [this.value1,this.input2],
          Extra: true
        }
        this.http
          .post("api/Task/SetPlcPalletCode",param, "数据处理中...")
          .then((x) => {
            if (x.status) {
              this.$Message.success('成功.');
              this.refresh();
            } else {
              return this.$error(x.message);
            }
          });
      })
    }
  }
}
</script>
<style scoped>
.title {
  line-height: 70vh;
  text-align: center;
  font-size: 28px;
  color: orange;
.container {
  font-size: 22px;
  margin-top: 20px;
  width: 50%;
}
.log-card {
  margin-bottom: 10px;
.input-group {
  display: flex;
  align-items: center;
  margin-bottom: 15px;
}
.label {
  min-width: 60px;
  /* ä¸ºæ ‡ç­¾è®¾ç½®æœ€å°å®½åº¦ä¿æŒå¯¹é½ */
  margin-right: 10px;
}
.el-input {
  flex: 1;
  /* è¾“入框占据剩余空间 */
}
</style>
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.metadata.v7.bin
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/ProjectEvaluation/wideseawcs_server.projects.v7.bin
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.suo
Binary files differ
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -89,6 +89,14 @@
        Task<WebResponseContent> RequestWheelsFlow(string palletCode);
        /// <summary>
        /// è½¦è½®æµå‘请求,查询历史表
        /// </summary>
        /// <param name="palletCode"></param>
        /// <param name="stationManager"></param>
        /// <returns></returns>
        string RequestWheletHty(string czCode);
        /// <summary>
        /// å‡ºåº“前 ç§»åº“检测
        /// </summary>
        /// <param name="taskNum"></param>
@@ -331,5 +339,13 @@
        /// <returns></returns>
        WebResponseContent GetPlcState(string TargetAddress);
        /// <summary>
        /// wcs首页写入内容
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        WebResponseContent SetPlcPalletCode(SaveModel saveModel);
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
@@ -77,5 +77,11 @@
        {
            return Service.GetPlcState(TargetAddress);
        }
        [HttpPost, Route("SetPlcPalletCode"), AllowAnonymous]
        public WebResponseContent SetPlcPalletCode([FromBody] SaveModel saveModel)
        {
            return Service.SetPlcPalletCode(saveModel);
        }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -16,12 +16,13 @@
  //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=MX_LDY_WCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCS2F08;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=True",
  //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=192.168.5.251;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=172.21.1.139;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=Admin123;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -213,6 +213,22 @@
            }
        }
        /// <summary>
        /// è½¦è½®æµå‘分配查询历史请求
        /// </summary>
        /// <param name="czCode"></param>
        /// <param name="stationManager"></param>
        /// <returns></returns>
        public string RequestWheletHty(string czCode)
        {
            WebResponseContent content = new WebResponseContent();
            Dt_Task_Hty dt_Task_Hty = _taskHtyRepository.QueryFirst(x => x.task_CZInfo == czCode && x.CreateDate >= DateTime.Now.AddMinutes(-30));
            if (dt_Task_Hty == null) return null;
            if (dt_Task_Hty.Towhereabouts == null && dt_Task_Hty.Towhereabouts == "") return null;
            return dt_Task_Hty.Towhereabouts;
        }
        // æ£€æŸ¥å½“前托盘是否存在任务
        private async Task<bool> HasTask(string palletCode)
        {
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -40,6 +40,7 @@
        private readonly IRouterRepository _routerRepository;
        private readonly ITask_HtyRepository _taskHtyRepository;
        private readonly IDt_needBarcodeRepository _taskNeedBarcodeRepository;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
        {
@@ -974,6 +975,7 @@
        public WebResponseContent GetPlcState(string TargetAddress)
        {
            Dt_StationManager dt_Station=_stationManagerRepository.QueryFirst(x => x.stationLocation == TargetAddress);
            if(dt_Station == null)
                return WebResponseContent.Instance.Error("未找到压装位信息!");
@@ -982,6 +984,17 @@
            IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1000");
            CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
            //DeviceProDTO? devicePr = conveyorLine.DeviceProDTOs.Find(x => x.DeviceChildCode == "2033" && x.DeviceProParamName == "ConveyorLineSingal");
            short agv20 = conveyorLine.Communicator.Read<short>("DB5.794");
            if (agv20 != 1)    //获取下轴处是否有料占用
            {
                return WebResponseContent.Instance.Error($"未检测到agv取料站台有货,不可下发任务,读取到:{agv20}");
            }
            DeviceProDTO? deviceProDTOt = conveyorLine.DeviceProDTOs.Find(x => x.DeviceChildCode == TargetAddress && x.DeviceProParamName == "ConveyorLineSingal");
            DeviceProDTO? deviceProDTOt2 = conveyorLine.DeviceProDTOs.Find(x => x.DeviceChildCode == TargetAddress && x.DeviceProParamName == "ResponState");
            if (conveyorLine.Communicator.Read<short>(deviceProDTOt.DeviceProAddress)==1)
@@ -995,5 +1008,57 @@
                return WebResponseContent.Instance.Error("读取到压装位信号反馈不可放货!不可生成agv任务");
            }
        }
        public WebResponseContent SetPlcPalletCode(SaveModel saveModel)
        {
            WebResponseContent webResponse = new WebResponseContent();
            try
            {
                if (saveModel.DelKeys.Count != 2)
                {
                    return webResponse.Error("wcs传参错误!");
                }
                string AddStitic = saveModel.DelKeys[0].ToString();
                if (AddStitic == "") return webResponse.Error("选择的站台为空,请选择选择站台!");
                string PalletCode = saveModel.DelKeys[1].ToString();
                if (PalletCode == "") return webResponse.Error("输入的条码为空,请输入条码信息!");
                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1000");
                CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
                bool setplc = false;
                switch (AddStitic)
                {
                    case "1010":
                        setplc = conveyorLine.Communicator.Write("DB5.914", (string)PalletCode);
                        break;
                    case "2015":
                        setplc = conveyorLine.Communicator.Write("DB5.434", (string)PalletCode);
                        break;
                    case "2017":
                        setplc = conveyorLine.Communicator.Write("DB5.554", (string)PalletCode);
                        break;
                    case "2021":
                        setplc = conveyorLine.Communicator.Write("DB5.794", (string)PalletCode);
                        break;
                }
                if (setplc)
                {
                    return webResponse.OK($"对{AddStitic}站台写入条码:{PalletCode},成功");
                }
                else
                {
                    return webResponse.Error($"对{AddStitic}站台写入条码:{PalletCode},失败");
                }
            }
            catch (Exception ex)
            {
                return webResponse.Error($"错误信息:{ex.Message}");
                throw;
            }
        }
    }
}
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -24,6 +24,7 @@
using Newtonsoft.Json;
using Quartz;
using SqlSugar;
using System.Net;
using System.Reflection;
using System.Threading.Tasks;
using WIDESEAWCS_BasicInfoRepository;
@@ -43,6 +44,7 @@
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_SignalR;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using WIDESEAWCS_Tasks.StackerCraneJob;
using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
namespace WIDESEAWCS_Tasks
@@ -295,9 +297,15 @@
                conveyorLine.SetValue(ConveyorLineDBName.WheelsDiameter, task.wheels_gkcc, stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.WheelsLX, task.WheelsLX, stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                _taskService.UpdatePosition(task.TaskNum, stationInfo.stationChildCode);
                Dt_Task dt_Task = _taskService.UpdatePosition(task.TaskNum, stationInfo.stationChildCode);
                if (dt_Task != null)
                {
                    conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                }
                else
                {
                    conveyorLine.SetValue(ConveyorLineDBName.ResponState, 3, stationInfo.stationChildCode);
                }
            }
        }
@@ -341,19 +349,29 @@
            var task = _taskService.QueryExecutingTaskByBarcode(command.Number, stationInfo.stationChildCode);
            if (task != null)
            {
                //根据车轴缓存位置 å†™å…¥å¯¹åº”目标地址
                if (task.TargetAddress == stationInfo.stationChildCode)
                if (task.TargetAddress == "2032" || task.TargetAddress == "2042")
                {
                    //WebResponseContent content = _taskService.RequestWheelsFlow(task.task_CZInfo).Result;
                    bool k1 = conveyorLine.SetValue(ConveyorLineDBName.SourceAddress, "2021", stationInfo.stationChildCode);
                    bool k2 = conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.TargetAddress, stationInfo.stationChildCode);
                    bool k3 = conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                    WebResponseContent k4 = _taskService.UpdateTaskStatusToNext(task);
                    Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},反馈至输送线信息====起始地址:{k1},目标地址“{k2},反馈信号:{k3},任务修改状态:{k4.Status}))");
                }
                else
                {
                    WebResponseContent content = _taskService.RequestWheelsFlow(task.PalletCode).Result;
                    if (content.Status)
                    {
                        string taraddress = content.Data.ToString(); // "2032";SourceAddress
                        bool k1 = conveyorLine.SetValue(ConveyorLineDBName.SourceAddress, "2021", stationInfo.stationChildCode);
                        bool k2= conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taraddress, stationInfo.stationChildCode);
                        bool k3= conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                        bool k2 = conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.TargetAddress, stationInfo.stationChildCode);
                        bool k3 = conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                        WebResponseContent k4 = _taskService.UpdateTaskStatusToNext(task);
                        Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},反馈至输送线信息====起始地址:{k1},目标地址“{k2},反馈信号:{k3},任务修改状态:{k4.Status}))");
@@ -365,20 +383,27 @@
                        Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},向WMS申请去向失败,原因:{content.Message},写入申诉信故障:2");
                    }
                }
                else
                {
                    bool k1= conveyorLine.SetValue(ConveyorLineDBName.SourceAddress, "2021", stationInfo.stationChildCode);
                    bool k2 = conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, task.TargetAddress, stationInfo.stationChildCode);
                    bool k3 = conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                    WebResponseContent k4 = _taskService.UpdateTaskStatusToNext(task);
                    Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},反馈至输送线信息====起始地址:{k1},目标地址“{k2},反馈信号:{k3},任务修改状态:{k4.Status}))");
                }
            }
            else
            {
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 2, stationInfo.stationChildCode);
                Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},未找到任务,申请下一地址为:{stationInfo.stationChildCode},写入申诉信故障:2");
                string taraddresspos = _taskService.RequestWheletHty(command.Number);
                if (taraddresspos != null)
                {
                    bool k1 = conveyorLine.SetValue(ConveyorLineDBName.SourceAddress, "2021", stationInfo.stationChildCode);
                    bool k2 = conveyorLine.SetValue(ConveyorLineDBName.TargetAddress, taraddresspos, stationInfo.stationChildCode);
                    bool k3 = conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
                    Console.Out.WriteLine($"历史查询信息,,申请条码:{command.Number},反馈至输送线信息====起始地址:{k1},目标地址“{k2},反馈信号:{k3},写入目标地址为:{taraddresspos})");
                }
                else
                {
                    conveyorLine.SetValue(ConveyorLineDBName.ResponState, 2, stationInfo.stationChildCode);
                    Console.Out.WriteLine($"读取到输送线申请,申请条码:{command.Number},未找到任务,申请下一地址为:{stationInfo.stationChildCode},写入申诉信故障:2");
                }
            }
        }
@@ -396,7 +421,7 @@
            if (content.Status)
            {
                conveyorLine.SetValue(ConveyorLineDBName.Number, content.Data.ToString(), stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.CarType,"001", stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.CarType, "001", stationInfo.stationChildCode);
                conveyorLine.SetValue(ConveyorLineDBName.ResponState, 1, stationInfo.stationChildCode);
            }
            else
@@ -440,7 +465,7 @@
        {
            DeviceProDTO? deviceProDTOt = conveyorLine.DeviceProDTOs.Find(x => x.DeviceChildCode == "3022" && x.DeviceProParamName == "Number");
            string Number = conveyorLine.Communicator.Read<string>(deviceProDTOt.DeviceProAddress);
            if (Number != "" && Number!=null)
            if (Number != "" && Number != null)
            {
                //调取wms接口申请agv任务
                WebResponseContent content = _taskService.GetAGVTaskdistribution(stationInfo.stationLocation);
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -250,10 +250,7 @@
                    _noticeService.Logs(userTokenIds, new { commonStackerCrane.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
                    WriteInfo(commonStackerCrane.DeviceName, log);
                    if (task == null)
                    {
                        task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                    }
                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
                }
                else
                {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.jsx
@@ -5,15 +5,15 @@
    //表单header、content、footer对应位置扩充的组件
    gridHeader: '',
    gridBody: {
      render () {
          return [
              h(resolveComponent('el-alert'), {
                  style: { 'margin-bottom': '12px' },
                  'show-icon': false, type: 'success',
                  closable: false, title: '关于TreeTable使用'
              }, ' treetable同样全部代码自动生成,页面生成后设置this.rowKe="xxx" tree主键字段,即可完成树形table配置,具体说明见Sys_Role1.js'),
          ]
      }
      // render () {
      //     return [
      //         h(resolveComponent('el-alert'), {
      //             style: { 'margin-bottom': '12px' },
      //             'show-icon': false, type: 'success',
      //             closable: false, title: '关于TreeTable使用'
      //         }, ' treetable同样全部代码自动生成,页面生成后设置this.rowKe="xxx" tree主键字段,即可完成树形table配置,具体说明见Sys_Role1.js'),
      //     ]
      // }
  },
    gridFooter: '',
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/Home.vue
@@ -31,6 +31,16 @@
    </div>
  </div>
  <div style="margin: 0px auto;width: 600px;">
    <div>
      <div style="color: brown;font-size: 25px;">车轮超期数量:   <i style="font-size: 35px;">{{ wheelsCount }} ä¸ª</i></div>
    </div>
    <div>
      <div style="color: brown;font-size: 25px;">制动盘超期数量:   <i style="font-size: 35px;">{{ zdpCount }} ä¸ª</i></div>
    </div>
  </div>
</template>
<script>
import axios from 'axios';
@@ -38,6 +48,8 @@
  data() {
    return {
      datalist: [],
      zdpCount:0,
      wheelsCount:0,
      url: "http://192.168.12.189/:8098/api/",
    };
@@ -45,6 +57,7 @@
  mounted() {
    // setInterval(() => {
    this.AddTask();
    this.StockYx();
    // }, 5000);
  },
@@ -78,6 +91,17 @@
          }
          
        })
    },
    StockYx() {
      axios.post("http://172.21.1.139:5000/api/Task/GetStockStatue")
        .then(response => {
          console.log(response.data.data.zdpCount)
          if(response.status){
              this.wheelsCount=response.data.data.wheelsCount;
              this.zdpCount=response.data.data.zdpCount;
          }
        })
    }
  },
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/system/Sys_Config.vue
@@ -23,29 +23,27 @@
            url: "/Sys_Config/",
            sortName: "id"
        });
        const editFormFields = ref({ "ParentId": [], "RoleName": "", "DeptName": "", "Enable": "", "Creator": "", "CreateDate": "", "Modifier": "", "ModifyDate": "" });
        const editFormOptions = ref([[{ "dataKey": "tree_roles", "data": [], "title": "父级ID", "required": true, "field": "ParentId", "type": "cascader" },
        { "title": "角色名称", "required": true, "field": "RoleName" }],
        [{ "title": "部门名称", "field": "DeptName" },
        { "dataKey": "enable", "data": [], "title": "是否启用", "field": "Enable", "type": "switch" }],
        [{ "title": "创建人", "field": "Creator", "disabled": true },
        { "title": "创建时间", "field": "CreateDate", "disabled": true, "type": "datetime" }],
        [{ "title": "修改人", "field": "Modifier", "disabled": true },
        { "title": "修改时间", "field": "ModifyDate", "disabled": true }]]);
        const searchFormFields = ref({ "RoleName": "", "DeptName": "", "Enable": "", "CreateDate": "", "ModifyDate": "" });
        const searchFormOptions = ref([[{ "title": "角色名称", "field": "RoleName", "type": "text" }, { "title": "部门名称", "field": "DeptName", "type": "text" }, { "dataKey": "enable", "data": [], "title": "是否启用", "field": "Enable", "type": "select" }], [{ "title": "创建时间", "field": "CreateDate", "type": "datetime" }, { "title": "修改时间", "field": "ModifyDate", "type": "datetime" }]]);
        const editFormFields = ref({ "configValue": "" });
        const editFormOptions = ref([
        [
        { "title": "天数", "field": "configValue", "required": true },
        ]]);
        const searchFormFields = ref();
        const searchFormOptions = ref();
        const columns = ref([
            { field: 'id', title: '主键', type: 'int', width: 70, readonly: true, hidden: true, require: true, align: 'left', sortable: true },
            { field: 'configKey', title: '参数名', type: 'string', width: 100, require: true, align: 'left' },
            { field: 'configValue', title: '参数值', type: 'string', width: 200, require: true, align: 'left' },
            { field: 'category', title: '类别', type: 'string', width: 90, align: 'left' },
            { field: 'remark', title: '备注', type: 'string', width: 90, align: 'left' },
            { field: 'status', title: '是否启用', type: 'byte', bind: { key: 'enable', data: [] }, width: 50, align: 'left' },
            { field: 'sortCode', title: '排序', type: 'int',hidden: true, width: 90, align: 'left' },
            { field: 'creater', title: '创建人', type: 'string', width: 75, readonly: true, align: 'left' },
            { field: 'createDate', title: '创建时间', type: 'datetime', width: 90, readonly: true, align: 'left', sortable: true },
            { field: 'modifier', title: '修改人', type: 'string', width: 75, readonly: true, align: 'left' },
            { field: 'modifyDate', title: '修改时间', type: 'datetime', width: 90, readonly: true, align: 'left', sortable: true }]);
            // { field: 'configKey', title: '参数名', type: 'string', width: 100, require: true, align: 'left' },
            { field: 'remark', title: '类型', type: 'string', width: 100, align: 'left' },
            { field: 'configValue', title: '时间', type: 'string', width: 100, require: true, align: 'left' },
            // { field: 'category', title: '类别', type: 'string', width: 90, align: 'left' },
            // { field: 'status', title: '是否启用', type: 'byte', bind: { key: 'enable', data: [] }, width: 50, align: 'left' },
            // { field: 'sortCode', title: '排序', type: 'int',hidden: true, width: 90, align: 'left' },
            // { field: 'creater', title: '创建人', type: 'string', width: 75, readonly: true, align: 'left' },
            // { field: 'createDate', title: '创建时间', type: 'datetime', width: 90, readonly: true, align: 'left', sortable: true },
            // { field: 'modifier', title: '修改人', type: 'string', width: 75, readonly: true, align: 'left' },
            // { field: 'modifyDate', title: '修改时间', type: 'datetime', width: 90, readonly: true, align: 'left', sortable: true }
        ]);
        const detail = ref({
            cnName: "#detailCnName",
            columns: [],
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue
@@ -4,69 +4,230 @@
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 *业务请在@/extension/system/Sys_Role.js此处编写
 -->
<template>
    <view-grid ref="grid"
               :columns="columns"
               :detail="detail"
               :editFormFields="editFormFields"
               :editFormOptions="editFormOptions"
               :searchFormFields="searchFormFields"
               :searchFormOptions="searchFormOptions"
               :table="table"
               :extend="extend">
    </view-grid>
 <template>
  <view-grid
    ref="grid"
    :columns="columns"
    :detail="detail"
    :editFormFields="editFormFields"
    :editFormOptions="editFormOptions"
    :searchFormFields="searchFormFields"
    :searchFormOptions="searchFormOptions"
    :table="table"
    :extend="extend"
  >
  </view-grid>
</template>
<script>
    import extend from "@/extension/system/Sys_Role.jsx";
    import { ref, defineComponent } from "vue";
    export default defineComponent({
        setup() {
            const table = ref({
                key: 'Role_Id',
                footer: "Foots",
                cnName: '角色管理',
                name: 'Sys_Role',
                url: "/Sys_Role/",
                sortName: "Role_Id"
            });
            const editFormFields = ref({"ParentId":[],"RoleName":"","DeptName":"","Enable":"","Creator":"","CreateDate":"","Modifier":"","ModifyDate":""});
            const editFormOptions = ref([[{"dataKey":"tree_roles","data":[],"title":"父级ID","required":true,"field":"ParentId","type":"cascader"},
                               {"title":"角色名称","required":true,"field":"RoleName"}],
                              [{"title":"部门名称","field":"DeptName"},
                               {"dataKey":"enable","data":[],"title":"是否启用","field":"Enable","type":"switch"}],
                              [{"title":"创建人","field":"Creator","disabled":true},
                               {"title":"创建时间","field":"CreateDate","disabled":true,"type":"datetime"}],
                              [{"title":"修改人","field":"Modifier","disabled":true},
                               {"title":"修改时间","field":"ModifyDate","disabled":true}]]);
            const searchFormFields = ref({"RoleName":"","DeptName":"","Enable":"","CreateDate":"","ModifyDate":""});
            const searchFormOptions = ref([[{"title":"角色名称","field":"RoleName","type":"text"},{"title":"部门名称","field":"DeptName","type":"text"},{"dataKey":"enable","data":[],"title":"是否启用","field":"Enable","type":"select"}],[{"title":"创建时间","field":"CreateDate","type":"datetime"},{"title":"修改时间","field":"ModifyDate","type":"datetime"}]]);
            const columns = ref([{field:'roleId',title:'角色ID',type:'int',width:70,readonly:true,require:true,align:'left',sortable:true},
                       {field:'parentId',title:'父级ID',type:'int',bind:{ key:'tree_roles',data:[]},width:70,require:true,align:'left'},
                       {field:'roleName',title:'角色名称',type:'string',link:true,width:90,require:true,align:'left'},
                       {field:'deptId',title:'部门ID',type:'int',width:90,hidden:true,align:'left'},
                       {field:'deptName',title:'部门名称',type:'string',width:90,align:'left'},
                       {field:'enable',title:'是否启用',type:'byte',bind:{ key:'enable',data:[]},width:90,align:'left'},
                       {field:'orderNo',title:'排序',type:'int',width:90,hidden:true,align:'left'},
                       {field:'creater',title:'创建人',type:'string',width:130,readonly:true,align:'left'},
                       {field:'createDate',title:'创建时间',type:'datetime',width:90,readonly:true,align:'left',sortable:true},
                       {field:'modifier',title:'修改人',type:'string',width:130,readonly:true,align:'left'},
                       {field:'modifyDate',title:'修改时间',type:'datetime',width:90,readonly:true,align:'left',sortable:true}]);
            const detail = ref({
                cnName: "#detailCnName",
                columns: [],
                sortName: "",
                key: ""
            });
            return {
                table,
                extend,
                editFormFields,
                editFormOptions,
                searchFormFields,
                searchFormOptions,
                columns,
                detail,
            };
        },
import extend from "@/extension/system/Sys_Role.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const table = ref({
      key: "roleId",
      footer: "Foots",
      cnName: "角色管理",
      name: "Sys_Role",
      url: "/Sys_Role/",
      sortName: "roleId",
    });
    const editFormFields = ref({
      parentId: [],
      roleName: "",
      deptId: "",
      enable: "",
      // creater: "",
      // createDate: "",
      // modifier: "",
      // modifyDate: "",
    });
    const editFormOptions = ref([
      [
        {
          dataKey: "tree_roles",
          data: [],
          title: "父级ID",
          required: true,
          field: "parentId",
          type: "cascader",
        },
      ],
      [
            { title: "角色名称", required: true, field: "roleName" },
      ],
      [
        // {
        //   dataKey: "enable",
        //   data: [],
        //   title: "任务权限是否启用",
        //   field: "deptId",
        //   type: "switch",
        // },
        {
          dataKey: "enable",
          data: [],
          title: "是否启用",
          field: "enable",
          type: "switch",
        },
      ],
      // [
      //   { title: "创建人", field: "creater", disabled: true },
      //   {
      //     title: "创建时间",
      //     field: "createDate",
      //     disabled: true,
      //     type: "datetime",
      //   },
      // ],
      // [
      //   { title: "修改人", field: "modifier", disabled: true },
      //   { title: "修改时间", field: "modifyDate", disabled: true },
      // ],
    ]);
    const searchFormFields = ref({
      roleName: "",
      deptId: "",
      enable: "",
      createDate: "",
      modifyDate: "",
    });
    const searchFormOptions = ref([
      [
        { title: "角色名称", field: "roleName", type: "text" },
        {
          dataKey: "enable",
          data: [],
          title: "任务权限是否启用",
          field: "deptId",
          type: "select",
        },
        {
          dataKey: "enable",
          data: [],
          title: "是否启用",
          field: "enable",
          type: "select",
        },
      ],
      [
        { title: "创建时间", field: "createDate", type: "datetime" },
        { title: "修改时间", field: "modifyDate", type: "datetime" },
      ],
    ]);
    const columns = ref([
      {
        field: "roleId",
        title: "角色ID",
        type: "int",
        width: 70,
        readonly: true,
        require: true,
        align: "left",
        sortable: true,
      },
      {
        field: "parentId",
        title: "父级ID",
        type: "int",
        bind: { key: "tree_roles", data: [] },
        width: 70,
        require: true,
        align: "left",
      },
      {
        field: "roleName",
        title: "角色名称",
        type: "string",
        link: true,
        width: 90,
        require: true,
        align: "left",
      },
    //   {
    //     field: "deptId",
    //     title: "任务权限是否启用",
    //     type: "byte",
    //     bind: { key: "enable", data: [] },
    //     width: 90,
    //     align: "left",
    //   },
    //   {
    //     field: "deptName",
    //     title: "部门名称",
    //     type: "string",
    //     width: 90,
    //     align: "left",
    //   },
      {
        field: "enable",
        title: "是否启用",
        type: "byte",
        bind: { key: "enable", data: [] },
        width: 90,
        align: "left",
      },
      {
        field: "orderNo",
        title: "排序",
        type: "int",
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 130,
        readonly: true,
        align: "left",
      },
      {
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        width: 90,
        readonly: true,
        align: "left",
        sortable: true,
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 130,
        readonly: true,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改时间",
        type: "datetime",
        width: 90,
        readonly: true,
        align: "left",
        sortable: true,
      },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
      columns: [],
      sortName: "",
      key: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/system/Sys_User copy.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
<!--
*Author:jxx
 *Contact:283591387@qq.com
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 *业务请在@/extension/system/Sys_User.js此处编写
 -->
<template>
    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
        :table="table" :extend="extend">
    </view-grid>
</template>
<script>
import extend from "@/extension/system/Sys_User.jsx";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'user_Id',
            footer: "Foots",
            cnName: '用户管理',
            name: 'Sys_User',
            url: "/Sys_User/",
            sortName: "user_Id"
        });
        const editFormFields = ref({ "userName": "", "userTrueName": "", "role_Id": [], "deptIds": "", "enable": "", "gender": "", "remark": "", "headImageUrl": "", "systemType": "" });
        const editFormOptions = ref([[{ "title": "帐号", "required": true, "field": "userName", "disabled": true }],
        [{ "title": "姓名", "required": true, "field": "userTrueName", "type": "text" }],
        [{ "dataKey": "tree_roles", "data": [], "title": "角色", "required": true, "field": "role_Id", "type": "cascader" }],
        [{ "dataKey": "组织机构", "data": [], "title": "组织构架", "field": "deptIds", "colSize": 12, "type": "treeSelect" }],
        [{ "dataKey": "enable", "data": [], "title": "是否可用", "required": true, "field": "enable", "type": "select" }],
        [{ "dataKey": "gender", "data": [], "title": "性别", "field": "gender", "type": "select" }],
        [{ "title": "备注", "field": "remark", "colSize": 12, "type": "textarea" }],
        [{ "title": "头像", "field": "headImageUrl", "type": "img" }],
        [{ "title": "系统", "field": "systemType", "type": "text", "required": true }]]);
        const searchFormFields = ref({ "UserName": "", "UserTrueName": "", "Gender": "", "DeptName": "", "Role_Id": [], "Token": "", "AppType": [], "CreateDate": "", "IsRegregisterPhone": "", "PhoneNo": "", "Enable": "", "LastLoginDate": "", "Address": "", "Email": "" });
        const searchFormOptions = ref([[{ "title": "帐号", "field": "UserName" }, { "title": "姓名", "field": "UserTrueName" }, { "dataKey": "gender", "data": [], "title": "性别", "field": "Gender", "type": "select" }], [{ "title": "不用", "field": "DeptName" }, { "dataKey": "tree_roles", "data": [], "title": "角色", "field": "Role_Id", "type": "select" }, { "title": "Token", "field": "Token" }], [{ "dataKey": "ut", "data": [], "title": "类型", "field": "AppType", "type": "selectList" }, { "dataKey": "isphone", "data": [], "title": "手机用户", "field": "IsRegregisterPhone", "type": "select" }, { "title": "手机号", "field": "PhoneNo" }], [{ "dataKey": "enable", "data": [], "title": "是否可用", "field": "Enable", "type": "select" }, { "title": "地址", "field": "Address" }, { "title": "Email", "field": "Email" }], [{ "title": "注册时间", "field": "CreateDate", "type": "datetime" }, { "title": "最后登陆时间", "field": "LastLoginDate", "type": "datetime" }]]);
        const columns = ref([{ field: 'user_Id', title: 'User_Id', type: 'int', width: 90, hidden: true, readonly: true, require: true, align: 'left' },
        { field: 'userName', title: '帐号', type: 'string', link: true, width: 120, readonly: true, require: true, align: 'left', sort: true },
        { field: 'userTrueName', title: '姓名', type: 'string', width: 120, require: true, align: 'left' },
        { field: 'gender', title: '性别', type: 'int', bind: { key: 'gender', data: [] }, width: 80, align: 'left' },
        { field: 'headImageUrl', title: '头像', type: 'img', width: 90, align: 'left' },
        { field: 'dept_Id', title: '不用', type: 'int', width: 90, hidden: true, align: 'left' },
        { field: 'deptName', title: '不用', type: 'string', width: 150, hidden: true, align: 'left' },
        { field: 'role_Id', title: '角色', type: 'int', bind: { key: 'tree_roles', data: [] }, width: 130, require: true, align: 'left' },
        { field: 'roleName', title: '不用', type: 'string', width: 90, hidden: true, align: 'left' },
        { field: 'token', title: 'Token', type: 'string', width: 180, hidden: true, align: 'left' },
        { field: 'appType', title: '类型', type: 'int', bind: { key: 'ut', data: [] }, width: 150, hidden: true, align: 'left' },
        { field: 'deptIds', title: '组织构架', type: 'string', bind: { key: '组织机构', data: [] }, width: 140, hidden: true, align: 'left' },
        { field: 'createDate', title: '注册时间', type: 'datetime', width: 150, readonly: true, align: 'left', sort: true },
        { field: 'isRegregisterPhone', title: '手机用户', type: 'int', bind: { key: 'isphone', data: [] }, width: 120, hidden: true, align: 'left' },
        { field: 'phoneNo', title: '手机号', type: 'string', width: 150, hidden: true, align: 'left' },
        { field: 'tel', title: 'Tel', type: 'string', width: 90, hidden: true, align: 'left' },
        { field: 'createID', title: 'CreateID', type: 'int', width: 90, hidden: true, align: 'left' },
        { field: 'creater', title: '创建人', type: 'string', width: 130, readonly: true, align: 'left' },
        { field: 'enable', title: '是否可用', type: 'byte', bind: { key: 'enable', data: [] }, width: 90, require: true, align: 'left' },
        { field: 'modifyID', title: 'ModifyID', type: 'int', width: 90, hidden: true, align: 'left' },
        { field: 'modifier', title: '修改人', type: 'string', width: 130, hidden: true, readonly: true, align: 'left' },
        { field: 'modifyDate', title: '修改时间', type: 'datetime', width: 90, hidden: true, readonly: true, align: 'left', sort: true },
        { field: 'auditStatus', title: '审核状态', type: 'int', bind: { key: 'audit', data: [] }, width: 90, hidden: true, align: 'left' },
        { field: 'auditor', title: '审核人', type: 'string', width: 90, hidden: true, align: 'left' },
        { field: 'auditDate', title: '审核时间', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
        { field: 'lastLoginDate', title: '最后登陆时间', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
        { field: 'lastModifyPwdDate', title: '最后密码修改时间', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
        { field: 'address', title: '地址', type: 'string', width: 190, hidden: true, align: 'left' },
        { field: 'mobile', title: '电话', type: 'string', width: 140, hidden: true, align: 'left' },
        { field: 'email', title: 'Email', type: 'string', width: 140, hidden: true, align: 'left' },
        { field: 'remark', title: '备注', type: 'string', width: 180, hidden: true, align: 'left' },
        { field: 'orderNo', title: '排序号', type: 'int', width: 90, hidden: true, align: 'left' }]);
        const detail = ref({
            cnName: "#detailCnName",
            table: "#detailTable",
            columns: [],
            sortName: "",
            key: ""
        });
        return {
            table,
            extend,
            editFormFields,
            editFormOptions,
            searchFormFields,
            searchFormOptions,
            columns,
            detail,
        };
    },
});
</script>
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue
@@ -1,89 +1,361 @@
<!--
*Author:jxx
 *Contact:283591387@qq.com
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 *业务请在@/extension/system/Sys_User.js此处编写
 -->
<template>
    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
        :table="table" :extend="extend">
    </view-grid>
  <view-grid
    ref="grid"
    :columns="columns"
    :detail="detail"
    :editFormFields="editFormFields"
    :editFormOptions="editFormOptions"
    :searchFormFields="searchFormFields"
    :searchFormOptions="searchFormOptions"
    :table="table"
    :extend="extend"
  >
  </view-grid>
</template>
<script>
import extend from "@/extension/system/Sys_User.jsx";
import extend from "@/extension/system/Sys_User.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'user_Id',
            footer: "Foots",
            cnName: '用户管理',
            name: 'Sys_User',
            url: "/Sys_User/",
            sortName: "user_Id"
        });
        const editFormFields = ref({ "userName": "", "userTrueName": "", "role_Id": [], "deptIds": "", "enable": "", "gender": "", "remark": "", "headImageUrl": "", "systemType": "" });
        const editFormOptions = ref([[{ "title": "帐号", "required": true, "field": "userName", "disabled": true }],
        [{ "title": "姓名", "required": true, "field": "userTrueName", "type": "text" }],
        [{ "dataKey": "tree_roles", "data": [], "title": "角色", "required": true, "field": "role_Id", "type": "cascader" }],
        [{ "dataKey": "组织机构", "data": [], "title": "组织构架", "field": "deptIds", "colSize": 12, "type": "treeSelect" }],
        [{ "dataKey": "enable", "data": [], "title": "是否可用", "required": true, "field": "enable", "type": "select" }],
        [{ "dataKey": "gender", "data": [], "title": "性别", "field": "gender", "type": "select" }],
        [{ "title": "备注", "field": "remark", "colSize": 12, "type": "textarea" }],
        [{ "title": "头像", "field": "headImageUrl", "type": "img" }],
        [{ "title": "系统", "field": "systemType", "type": "text", "required": true }]]);
        const searchFormFields = ref({ "UserName": "", "UserTrueName": "", "Gender": "", "DeptName": "", "Role_Id": [], "Token": "", "AppType": [], "CreateDate": "", "IsRegregisterPhone": "", "PhoneNo": "", "Enable": "", "LastLoginDate": "", "Address": "", "Email": "" });
        const searchFormOptions = ref([[{ "title": "帐号", "field": "UserName" }, { "title": "姓名", "field": "UserTrueName" }, { "dataKey": "gender", "data": [], "title": "性别", "field": "Gender", "type": "select" }], [{ "title": "不用", "field": "DeptName" }, { "dataKey": "tree_roles", "data": [], "title": "角色", "field": "Role_Id", "type": "select" }, { "title": "Token", "field": "Token" }], [{ "dataKey": "ut", "data": [], "title": "类型", "field": "AppType", "type": "selectList" }, { "dataKey": "isphone", "data": [], "title": "手机用户", "field": "IsRegregisterPhone", "type": "select" }, { "title": "手机号", "field": "PhoneNo" }], [{ "dataKey": "enable", "data": [], "title": "是否可用", "field": "Enable", "type": "select" }, { "title": "地址", "field": "Address" }, { "title": "Email", "field": "Email" }], [{ "title": "注册时间", "field": "CreateDate", "type": "datetime" }, { "title": "最后登陆时间", "field": "LastLoginDate", "type": "datetime" }]]);
        const columns = ref([{ field: 'user_Id', title: 'User_Id', type: 'int', width: 90, hidden: true, readonly: true, require: true, align: 'left' },
        { field: 'userName', title: '帐号', type: 'string', link: true, width: 120, readonly: true, require: true, align: 'left', sort: true },
        { field: 'userTrueName', title: '姓名', type: 'string', width: 120, require: true, align: 'left' },
        { field: 'gender', title: '性别', type: 'int', bind: { key: 'gender', data: [] }, width: 80, align: 'left' },
        { field: 'headImageUrl', title: '头像', type: 'img', width: 90, align: 'left' },
        { field: 'dept_Id', title: '不用', type: 'int', width: 90, hidden: true, align: 'left' },
        { field: 'deptName', title: '不用', type: 'string', width: 150, hidden: true, align: 'left' },
        { field: 'role_Id', title: '角色', type: 'int', bind: { key: 'tree_roles', data: [] }, width: 130, require: true, align: 'left' },
        { field: 'roleName', title: '不用', type: 'string', width: 90, hidden: true, align: 'left' },
        { field: 'token', title: 'Token', type: 'string', width: 180, hidden: true, align: 'left' },
        { field: 'appType', title: '类型', type: 'int', bind: { key: 'ut', data: [] }, width: 150, hidden: true, align: 'left' },
        { field: 'deptIds', title: '组织构架', type: 'string', bind: { key: '组织机构', data: [] }, width: 140, hidden: true, align: 'left' },
        { field: 'createDate', title: '注册时间', type: 'datetime', width: 150, readonly: true, align: 'left', sort: true },
        { field: 'isRegregisterPhone', title: '手机用户', type: 'int', bind: { key: 'isphone', data: [] }, width: 120, hidden: true, align: 'left' },
        { field: 'phoneNo', title: '手机号', type: 'string', width: 150, hidden: true, align: 'left' },
        { field: 'tel', title: 'Tel', type: 'string', width: 90, hidden: true, align: 'left' },
        { field: 'createID', title: 'CreateID', type: 'int', width: 90, hidden: true, align: 'left' },
        { field: 'creater', title: '创建人', type: 'string', width: 130, readonly: true, align: 'left' },
        { field: 'enable', title: '是否可用', type: 'byte', bind: { key: 'enable', data: [] }, width: 90, require: true, align: 'left' },
        { field: 'modifyID', title: 'ModifyID', type: 'int', width: 90, hidden: true, align: 'left' },
        { field: 'modifier', title: '修改人', type: 'string', width: 130, hidden: true, readonly: true, align: 'left' },
        { field: 'modifyDate', title: '修改时间', type: 'datetime', width: 90, hidden: true, readonly: true, align: 'left', sort: true },
        { field: 'auditStatus', title: '审核状态', type: 'int', bind: { key: 'audit', data: [] }, width: 90, hidden: true, align: 'left' },
        { field: 'auditor', title: '审核人', type: 'string', width: 90, hidden: true, align: 'left' },
        { field: 'auditDate', title: '审核时间', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
        { field: 'lastLoginDate', title: '最后登陆时间', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
        { field: 'lastModifyPwdDate', title: '最后密码修改时间', type: 'datetime', width: 150, hidden: true, align: 'left', sort: true },
        { field: 'address', title: '地址', type: 'string', width: 190, hidden: true, align: 'left' },
        { field: 'mobile', title: '电话', type: 'string', width: 140, hidden: true, align: 'left' },
        { field: 'email', title: 'Email', type: 'string', width: 140, hidden: true, align: 'left' },
        { field: 'remark', title: '备注', type: 'string', width: 180, hidden: true, align: 'left' },
        { field: 'orderNo', title: '排序号', type: 'int', width: 90, hidden: true, align: 'left' }]);
        const detail = ref({
            cnName: "#detailCnName",
            table: "#detailTable",
            columns: [],
            sortName: "",
            key: ""
        });
        return {
            table,
            extend,
            editFormFields,
            editFormOptions,
            searchFormFields,
            searchFormOptions,
            columns,
            detail,
        };
    },
  setup() {
    const table = ref({
      key: "user_Id",
      footer: "Foots",
      cnName: "用户管理",
      name: "Sys_User",
      url: "/Sys_User/",
      sortName: "user_Id",
    });
    const editFormFields = ref({
      systemType: "0",
      userName: "",
      userTrueName: "",
      role_Id: [],
      //deptIds: "",
      enable: "",
      gender: "",
      remark: "",
      //headImageUrl: "",
    });
    const editFormOptions = ref([
      [{ title: "帐号", required: true, field: "userName"}],
      [{ title: "姓名", required: true, field: "userTrueName", type: "text" }],
      [
        {
          dataKey: "tree_roles",
          data: [],
          title: "角色",
          required: true,
          field: "role_Id",
          type: "cascader",
        },
      ],
      [
        {
          dataKey: "enable",
          data: [],
          title: "是否可用",
          required: true,
          field: "enable",
          type: "select",
        },
      ],
      [
        {
          dataKey: "gender",
          data: [],
          title: "性别",
          field: "gender",
          type: "select",
        },
      ],
      [{ title: "备注", field: "remark", colSize: 12, type: "textarea" }],
    ]);
    const searchFormFields = ref({
      systemType: "0",
      userName: "",
      userTrueName: "",
      gender: "",
      deptName: "",
      role_Id: [],
      token: "",
      appType: [],
      createDate: "",
      isRegregisterPhone: "",
      enable: "",
      lastLoginDate: "",
      address: "",
      email: "",
    });
    const searchFormOptions = ref([
      [
        { title: "帐号", field: "userName" },
        { title: "姓名", field: "userTrueName" },
        {
          dataKey: "gender",
          data: [],
          title: "性别",
          field: "gender",
          type: "select",
        },
      ],
      [
        {
          dataKey: "enable",
          data: [],
          title: "是否可用",
          field: "enable",
          type: "select",
        },
        { title: "注册时间", field: "createDate", type: "datetime" },
      ],
    ]);
    const columns = ref([
      {
        field: "user_Id",
        title: "User_Id",
        type: "int",
        width: 90,
        hidden: true,
        readonly: true,
        require: true,
        align: "left",
      },
      {
        field: "userName",
        title: "帐号",
        type: "string",
        link: true,
        width: 120,
        readonly: true,
        require: true,
        align: "left",
        sort: true,
      },
      {
        field: "userTrueName",
        title: "姓名",
        type: "string",
        width: 120,
        require: true,
        align: "left",
      },
      {
        field: "gender",
        title: "性别",
        type: "int",
        bind: { key: "gender", data: [] },
        width: 80,
        align: "left",
      },
      // {
      //   field: "headImageUrl",
      //   title: "头像",
      //   type: "img",
      //   width: 90,
      //   align: "left",
      // },
      {
        field: "dept_Id",
        title: "不用",
        type: "int",
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "deptName",
        title: "不用",
        type: "string",
        width: 150,
        hidden: true,
        align: "left",
      },
      {
        field: "role_Id",
        title: "角色",
        type: "int",
        bind: { key: "tree_roles", data: [] },
        width: 130,
        require: true,
        align: "left",
      },
      {
        field: "roleName",
        title: "不用",
        type: "string",
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "token",
        title: "Token",
        type: "string",
        width: 180,
        hidden: true,
        align: "left",
      },
      {
        field: "appType",
        title: "类型",
        type: "int",
        bind: { key: "ut", data: [] },
        width: 150,
        hidden: true,
        align: "left",
      },
      {
        field: "deptIds",
        title: "组织构架",
        type: "string",
        bind: { key: "组织机构", data: [] },
        width: 140,
        hidden: true,
        align: "left",
      },
      {
        field: "createDate",
        title: "注册时间",
        type: "datetime",
        width: 150,
        readonly: true,
        align: "left",
        sort: true,
      },
      {
        field: "phoneNo",
        title: "手机号",
        type: "string",
        width: 150,
        hidden: true,
        align: "left",
      },
      {
        field: "tel",
        title: "Tel",
        type: "string",
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 130,
        readonly: true,
        align: "left",
      },
      {
        field: "enable",
        title: "是否可用",
        type: "byte",
        bind: { key: "enable", data: [] },
        width: 90,
        require: true,
        align: "left",
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 130,
        hidden: true,
        readonly: true,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改时间",
        type: "datetime",
        width: 90,
        hidden: true,
        readonly: true,
        align: "left",
        sort: true,
      },
      {
        field: "auditStatus",
        title: "审核状态",
        type: "int",
        bind: { key: "audit", data: [] },
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "auditor",
        title: "审核人",
        type: "string",
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "auditDate",
        title: "审核时间",
        type: "datetime",
        width: 150,
        hidden: true,
        align: "left",
        sort: true,
      },
      {
        field: "lastModifyPwdDate",
        title: "最后密码修改时间",
        type: "datetime",
        width: 150,
        hidden: true,
        align: "left",
        sort: true,
      },
      {
        field: "address",
        title: "地址",
        type: "string",
        width: 190,
        hidden: true,
        align: "left",
      },
      {
        field: "email",
        title: "Email",
        type: "string",
        width: 140,
        hidden: true,
        align: "left",
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
        width: 180,
        hidden: true,
        align: "left",
      },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
      table: "#detailTable",
      columns: [],
      sortName: "",
      key: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_SelectionStandards.vue
@@ -33,14 +33,15 @@
            "upperValue": "",
            "isCantainGK": "",
            "lowerValue_gk": "",
            "upperValue_gk": ""
            "upperValue_gk": "",
            "postContainer":""
        });
        const editFormOptions = ref([
            [
                { "title": "适用车型", "field": "carType", "type": "textarea" },
            ],
            [
                { "title": "动拖属性", "field": "mttype", "type": "text" },
                 { "title": "动拖属性", "field": "mttype", "type": "select", dataKey: "dongtuoshux", data: []  },
                { "title": "新旧属性", "field": "neworold", "type": "select", dataKey: "NewOld", data: []  },
                { "title": "毂孔等级", "field": "gkdj", "type": "select", dataKey: "Level", data: [] },
            ],
@@ -55,6 +56,9 @@
            [
                { "title": "截面过盈量下限", "field": "lowerValue_gk", "type": "decimal" },
                { "title": "截面过盈量上限", "field": "upperValue_gk", "type": "decimal" }
            ],
            [
                { "title": "制动盘方向", "field": "postContainer", "type": "select", dataKey: "", data: [{key:"中",value:"中"},{key:"ä¾§",value:"ä¾§"}] },
            ]
        ]);
        const searchFormFields = ref({
@@ -65,7 +69,7 @@
            [
                { "title": "适用车型", "field": "carType", type: "text" },
                //{ "title": "货位状态", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] },
                { "title": "动拖属性", "field": "mttype", type: "text" },
                { "title": "动拖属性", "field": "mttype", "type": "select", dataKey: "dongtuoshux", data: []  },
            ],
            [
                //{ "title": "是否禁用", "field": "enalbeStatus", "type": "select", dataKey: "EnalbeStatus", data: [] }
@@ -75,7 +79,7 @@
        ]);
        const columns = ref([{ field: 'id', title: 'ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
        { field: 'carType', title: '适用车型', type: 'string', width: 200, require: true, align: 'left' },
        { field: 'mttype', title: '动拖属性', type: 'string', width: 90, align: 'left' },
        { field: 'mttype', title: '动拖属性', type: 'string', width: 110, align: 'left', bind: { key: "dongtuoshux", data: [] } },
        { field: 'neworold', title: '新旧属性', type: 'string', width: 90, require: true, align: 'left',bind: { key: "NewOld", data: []} },
        { field: 'gkdj', title: '毂孔等级', type: 'string', width: 90, align: 'left',bind: { key: "Level", data: []} },
        { field: 'lowerValue', title: '过盈量下限', type: 'decimal', width: 90, align: 'left' },
@@ -87,6 +91,7 @@
        { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 90, align: 'left', sort: true },
        //{ field: 'modifier', title: '修改人', type: 'string', sort: true, width: 90, align: 'left' },
        //{ field: 'modifyDate', title: '修改时间', type: 'datetime', sort: true, width: 90, align: 'left', sort: true },
        { field: 'postContainer', title: '制动盘方向', type: 'bool', width: 120, align: 'left', bind: { key: "", data: [{key:"中",value:"中"},{key:"ä¾§",value:"ä¾§"}]} },
        ]);
        const detail = ref({
            cnName: "#detailCnName",
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/check/Dt_CheckResult.vue
@@ -18,29 +18,26 @@
        const table = ref({
            key: 'id',
            footer: "Foots",
            cnName: '测量数据',
            cnName: '车轴信息',
            name: 'check/Dt_CheckResult',
            url: "/Dt_CheckResult/",
            sortName: "id"
        });
        const editFormFields = ref({
        });
        const editFormOptions = ref([
        ]);
        const searchFormFields = ref({
            cltm: ""
        });
        const searchFormOptions = ref([
            [
                { "title": "车轮条码", "field": "cltm", type: "text" },
            ]
        ]);
        const columns = ref([
            { field: 'id', title: '主键ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
            { field: 'equipNo', title: '设备编号', type: 'string', width: 110, align: 'left', hidden: true },
            //{ field: 'wheels_SequenceNum', title: '序列号', type: 'string', width: 110, align: 'left', sort: true, link: true, },
            { field: 'cltm', title: '车轮条码', type: 'string', width: 150, align: 'left' },
            { field: 'iD', title: '主键ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' },
            { field: 'cLTM', title: '车轮条码', type: 'string', width: 150, align: 'left' },
            { field: 'checkType', title: '类型(è½®/盘)', type: 'string', width: 80, align: 'left', bind: { key: "IscheckType", data: [{key:"1",value:'è½®'},{key:"2",value:'盘'}] }  },
            { field: 'gkzjI1', title: '毂孔A1', type: 'string', width: 75, align: 'left' },
            { field: 'gkzjI2', title: '毂孔A2', type: 'string', width: 75, align: 'left' },
@@ -58,8 +55,6 @@
            { field: 'result', title: '是否合格', type: 'string', width: 70, align: 'left', bind: { key: "IsQuan", data: [] } },
            { field: 'inDate', title: '测量时间', type: 'dateTime', width: 100, align: 'left' },
            { field: 'isUploadMES', title: '是否已上传智粤', type: 'string', width: 110, align: 'left', bind: { key: "Cantain", data: [] } },
            //{ field: 'creater', title: '创建人', type: 'string', width: 75, align: 'left' },
            //{ field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 100, align: 'left' },
        ]);
        const detail = ref({
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/inbound/Dt_CZInfo_mes.vue
@@ -16,7 +16,7 @@
export default defineComponent({
    setup() {
        const table = ref({
            key: 'ID',
            key: 'id',
            footer: "Foots",
            cnName: '车轴信息',
            name: 'inbound/Dt_CZInfo_mes',
@@ -24,7 +24,7 @@
            sortName: "id"
        });
        const editFormFields = ref({
             "id": "",
             id: "",
            // "CHEXING": "",
            // "MTTYPE": "",
             "CZTM":"",
@@ -44,6 +44,7 @@
            ],
        ]);
        const searchFormFields = ref({
            CZTM: ""
        });
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/outbound/Dt_OutWheels_hty.vue
@@ -61,11 +61,11 @@
            ],
            [
                { "title": "新/旧", "field": "wheels_NewOrOld", type: "select", dataKey: "NewOld", data: [] },
                { "title": "动拖属性", "field": "wheels_mttype", type: "text" },
                { "title": "属性", "field": "wheelsProps", type: "text" },
                 { "title": "动拖属性", "field": "wheels_mttype", type: "select", dataKey: "dongtuoshux", data: [] },
                { "title": "等级", "field": "wheelsProps", type: "select", dataKey: "shuxing", data: [] },
            ],
            [
                { "title": "等级", "field": "wheels_level", type: "text" },
                { "title": "等级", "field": "wheels_level", type: "select", dataKey: "Level", data: [] },
                { "title": "创建时间", "field": "createDate", type: "datetime" },
            ]
        ]);
@@ -97,6 +97,8 @@
            { field: 'wheels_InDate', title: '入库日期', type: 'string', width: 100, align: 'left' },
            { field: 'creater', title: '创建时间', type: 'string', width: 100, align: 'left' },
            { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 100, align: 'left' },
            { field: 'wheels_Statue', title: '存期状态', type: 'string',  width: 100, align: 'left',bind: { key: "wheelsStatueDet", data: [] }} ,
            { field: 'wheels_DateDet', title: '当前库存天数', type: 'int', sort: true, width: 100, align: 'left' },
        ]);
        const detail = ref({
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/outbound/Dt_OutZdp_hty.vue
@@ -68,7 +68,9 @@
            { field: 'zdp_GKJZ', title: '毂孔直径', type: 'string', width: 100, align: 'left' },
            { field: 'zdp_LSCSYMH', title: '螺栓侧剩余磨耗', type: 'string', width: 120, align: 'left' },
            { field: 'zdp_LMCSYMH', title: '螺母侧剩余磨耗', type: 'string', width: 120, align: 'left' },
            { field: 'zdp_rksj', title: '入库日期', type: 'string', width: 100, align: 'left' }
            { field: 'zdp_rksj', title: '入库日期', type: 'string', width: 100, align: 'left' },
            { field: 'zdp_Statue', title: '存期状态', type: 'string',  width: 100, align: 'left',bind: { key: "wheelsStatueDet", data: [] }} ,
            { field: 'zdp_DateDet', title: '当前库存天数', type: 'int', sort: true, width: 100, align: 'left' },
        ]);
        const detail = ref({
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock.vue
@@ -47,11 +47,11 @@
            ],
            [
                { "title": "新/旧", "field": "wheels_NewOrOld", type: "select", dataKey: "NewOld", data: [] },
                { "title": "动拖属性", "field": "wheels_mttype", type: "text" },
                { "title": "属性", "field": "wheelsProps", type: "text" },
                 { "title": "动拖属性", "field": "wheels_mttype", type: "select", dataKey: "dongtuoshux", data: [] },
                { "title": "属性", "field": "wheelsProps", type: "select", dataKey: "shuxing", data: [] },
            ],
            [
                { "title": "等级", "field": "wheels_level", type: "text" },
                { "title": "等级", "field": "wheels_level", type: "select", dataKey: "Level", data: [] },
                { "title": "创建时间", "field": "createDate", type: "datetime" },
                { "title": "库位号", "field": "wheels_Location", type: "text" },
            ]
@@ -73,7 +73,8 @@
            { field: 'wheels_CarNo', title: '车组', type: 'string', width: 75, align: 'left' },
            { field: 'wheels_ldh', title: '轮对号', type: 'string', width: 100, align: 'left' },
            //{ field: 'wheels_WheelsType', title: '轮型', type: 'string',  width: 100, align: 'left' },
            { field: 'wheels_mttype', title: '动拖属性', type: 'string',  width: 100, align: 'left' },
            { field: 'wheels_mttype', title: '动拖属性', type: 'string', width: 110, align: 'left', bind: { key: "dongtuoshux", data: [] } },
            { field: 'wheels_NewOrOld', title: '新旧类型', type: 'string',  width: 100, align: 'left',bind: { key: "NewOld", data: [] }} ,
            { field: 'wheelsProps', title: '属性', type: 'string',  width: 100, align: 'left' },
            { field: 'wheels_level', title: '等级', type: 'string', width: 100, align: 'left' },
@@ -83,7 +84,7 @@
       
            { field: 'wheels_ljz', title: '轮径值', type: 'string', sort: true, width: 100, align: 'left' },
            { field: 'wheels_ygljz', title: '预估轮径值', type: 'string', sort: true, width: 100, align: 'left' },
            { field: 'wheels_Statue', title: '存期状态', type: 'int', sort: true, width: 100, align: 'left' },
            { field: 'wheels_Statue', title: '存期状态', type: 'string',  width: 100, align: 'left',bind: { key: "wheelsStatueDet", data: [] }} ,
            { field: 'wheels_DateDet', title: '当前库存天数', type: 'int', sort: true, width: 100, align: 'left' },
            { field: 'wheels_InDate', title: '入库日期', type: 'string',width: 100, align: 'left' },
            { field: 'creater', title: '创建人', type: 'string',  width: 100, align: 'left' },
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_WheelsStock_Old.vue
@@ -39,18 +39,18 @@
        });
        const searchFormOptions = ref([
            [
                { "title": "车轮条码", "field": "wheel_code", type: "text" },
                { "title": "车轮条码", "field": "wheel_code", type: "like" },
                { "title": "车型", "field": "model", type: "select", dataKey: "traintype_names", data: [] },
                //{ "title": "库存类型", "field": "StockType", type: "select", dataKey: "GroupType", data: [] },
                { "title": "轮型", "field": "axes_type", type: "text" },
                { "title": "轮型", "field": "axes_type", type: "like" },
            ],
            [
                { "title": "新/旧", "field": "repair_item", type: "select", dataKey: "NewOld", data: [] },
                { "title": "动拖属性", "field": "dqtz_state", type: "text" },
               { "title": "等级", "field": "venderno", type: "text" },
                { "title": "新品/检修", "field": "repair_item", type: "select", dataKey: "", data: [{key:"新品",name:"新品"},{key:"检修",name:"检修"}] },
               { "title": "动拖属性", "field": "dqtz_state", type: "select", dataKey: "dongtuoshux", data: [] },
                { "title": "等级", "field": "venderno", type: "select", dataKey: "shuxing", data: [] },
            ],
            [
                { "title": "库位号", "field": "wheels_Location", type: "text" },
                { "title": "库位号", "field": "wheels_Location", type: "like" },
            ]
        ]);
        const columns = ref([
@@ -61,7 +61,7 @@
            //{ field: 'wheels_SequenceNum', title: '序列号', type: 'string', width: 110, align: 'left', sort: true, link: true, },
            //{ field: 'wheels_Num', title: '车轮号', type: 'string', width: 110, align: 'left' },
            //{ field: 'wheels_Type', title: '类型(è½®/盘)', type: 'string', width: 110, align: 'left' },
            { field: 'repair_item', title: '新/旧', type: 'string', width: 75, align: 'left' },
            { field: 'repair_item', title: '新品/检修', type: 'string', width: 75, align: 'left' },
            //{ field: 'repair_item', title: '新旧类型', type: 'string',  width: 100, align: 'left',bind: { key: "NewOld", data: [] }} ,
            { field: 'dqtz_state', title: '动/拖', type: 'int', width: 75, align: 'left' },
            { field: 'axes_type', title: '轮型', type: 'string', width: 100, align: 'left' },
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_ZdpStock.vue
@@ -79,6 +79,8 @@
            { field: 'zdp_LSCSYMH', title: '螺栓侧剩余磨耗', type: 'string', width: 120, align: 'left' },
            { field: 'zdp_LMCSYMH', title: '螺母侧剩余磨耗', type: 'string', width: 120, align: 'left' },
            { field: 'zdp_rksj', title: '入库日期', type: 'string', width: 100, align: 'left' },
            { field: 'zdp_Statue', title: '存期状态', type: 'string',  width: 100, align: 'left',bind: { key: "wheelsStatueDet", data: [] }} ,
            { field: 'zdp_DateDet', title: '当前库存天数', type: 'int', sort: true, width: 100, align: 'left' },
            { field: 'creater', title: '创建人', type: 'string',  width: 100, align: 'left' },
            { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 100, align: 'left' },
        ]);
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.metadata.v7.bin
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/ProjectEvaluation/widesea_wmsserver.projects.v7.bin
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/DesignTimeBuild/.dtbcache.v2
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.futdcache.v2
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/.suo
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/fileList.bin
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Common/LevelChange/CheckTaskChangeHelper.cs
@@ -66,15 +66,15 @@
        public static string CheckZdpPost(string Posttype)
        {
            string PostContainer = string.Empty;
            if (Posttype=="左侧")
            if (Posttype.Contains("å·¦"))
            {
                PostContainer = "left";
            }
            else if (Posttype == "右侧")
            else if (Posttype.Contains("右"))
            {
                PostContainer = "right";
            }
            else
            else if(Posttype.Contains("中"))
            {
                PostContainer = "middle";
            }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Common/LevelChange/LevelChangeHelper.cs
@@ -75,5 +75,7 @@
                afterLevel = "检修等级6";
            return afterLevel;
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Common/ZY/CZInfo_ZY.cs
@@ -231,4 +231,246 @@
        [XmlElement]
        public string WXRW { get; set; }
    }
    [XmlRoot("ROOT")]
    public class WheelSetMeasurement : CZInfo_ZY
    {
        // Left disc seat diameters
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„A1
        /// </summary>
        [XmlElement("ZPZA1")]
        public string ZPZA1 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„A2
        /// </summary>
        [XmlElement("ZPZA2")]
        public string ZPZA2 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„A3
        /// </summary>
        [XmlElement("ZPZA3")]
        public string ZPZA3 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„A
        /// </summary>
        [XmlElement("ZPZA")]
        public string ZPZA { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„B1
        /// </summary>
        [XmlElement("ZPZB1")]
        public string ZPZB1 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„B2
        /// </summary>
        [XmlElement("ZPZB2")]
        public string ZPZB2 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„B3
        /// </summary>
        [XmlElement("ZPZB3")]
        public string ZPZB3 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„B
        /// </summary>
        [XmlElement("ZPZB")]
        public string ZPZB { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„C1
        /// </summary>
        [XmlElement("ZPZC1")]
        public string ZPZC1 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„C2
        /// </summary>
        [XmlElement("ZPZC2")]
        public string ZPZC2 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„C3
        /// </summary>
        [XmlElement("ZPZC3")]
        public string ZPZC3 { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„C
        /// </summary>
        [XmlElement("ZPZC")]
        public string ZPZC { get; set; }
        /// <summary>
        /// å·¦ç›˜åº§ç›´å¾„
        /// </summary>
        [XmlElement("ZPZZJ")]
        public string ZPZZJ { get; set; }
        // Middle disc seat diameters
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A1
        /// </summary>
        [XmlElement("MPZA1")]
        public string MPZA1 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A2
        /// </summary>
        [XmlElement("MPZA2")]
        public string MPZA2 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A3
        /// </summary>
        [XmlElement("MPZA3")]
        public string MPZA3 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A
        /// </summary>
        [XmlElement("MPZA")]
        public string MPZA { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B1
        /// </summary>
        [XmlElement("MPZB1")]
        public string MPZB1 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B2
        /// </summary>
        [XmlElement("MPZB2")]
        public string MPZB2 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B3
        /// </summary>
        [XmlElement("MPZB3")]
        public string MPZB3 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B
        /// </summary>
        [XmlElement("MPZB")]
        public string MPZB { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C1
        /// </summary>
        [XmlElement("MPZC1")]
        public string MPZC1 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C2
        /// </summary>
        [XmlElement("MPZC2")]
        public string MPZC2 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C3
        /// </summary>
        [XmlElement("MPZC3")]
        public string MPZC3 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C
        /// </summary>
        [XmlElement("MPZC")]
        public string MPZC { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„
        /// </summary>
        [XmlElement("MPZZJ")]
        public string MPZZJ { get; set; }
        // Right disc seat diameters
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„A1
        /// </summary>
        [XmlElement("YPZA1")]
        public string YPZA1 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„A2
        /// </summary>
        [XmlElement("YPZA2")]
        public string YPZA2 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„A3
        /// </summary>
        [XmlElement("YPZA3")]
        public string YPZA3 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„A
        /// </summary>
        [XmlElement("YPZA")]
        public string YPZA { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„B1
        /// </summary>
        [XmlElement("YPZB1")]
        public string YPZB1 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„B2
        /// </summary>
        [XmlElement("YPZB2")]
        public string YPZB2 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„B3
        /// </summary>
        [XmlElement("YPZB3")]
        public string YPZB3 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„B
        /// </summary>
        [XmlElement("YPZB")]
        public string YPZB { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„C1
        /// </summary>
        [XmlElement("YPZC1")]
        public string YPZC1 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„C2
        /// </summary>
        [XmlElement("YPZC2")]
        public string YPZC2 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„C3
        /// </summary>
        [XmlElement("YPZC3")]
        public string YPZC3 { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„C
        /// </summary>
        [XmlElement("YPZC")]
        public string YPZC { get; set; }
        /// <summary>
        /// å³ç›˜åº§ç›´å¾„
        /// </summary>
        [XmlElement("YPZZJ")]
        public string YPZZJ { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs
@@ -117,5 +117,7 @@
        /// </summary>
        /// <returns></returns>
        WebResponseContent DownLoadTemplate();
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs
@@ -115,11 +115,11 @@
                        // é’ˆå¯¹å¸ƒå°”类型字段进行精确查询
                        if (searchParametersList[i].Value.ToLower() == "true" || searchParametersList[i].Value.ToLower() == "false")
                        {
                            where += $" and {searchParametersList[i].Name} = '{searchParametersList[i].Value.ToLower()}'";
                            where += $" and [{searchParametersList[i].Name}] = '{searchParametersList[i].Value.ToLower()}'";
                        }
                        else
                        {
                            where += $" and {searchParametersList[i].Name} like '%{searchParametersList[i].Value}%'";
                            where += $" and [{searchParametersList[i].Name}] like '%{searchParametersList[i].Value}%'";
                        }
                    }
                }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Check/IDt_CheckResultService.cs
@@ -3,4 +3,6 @@
public interface IDt_CheckResultService : IService<Dt_CheckResult>
{
    WebResponseContent HandUploadData(int id);
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationInfoService.cs
@@ -23,4 +23,12 @@
    WebResponseContent LocationEnable(SaveModel saveModel);
    WebResponseContent LocationStatus();
    /// <summary>
    /// æŸ¥æ‰¾è´§ä½
    /// </summary>
    /// <param name="RoadWayNo"></param>
    /// <param name="locationInfos"></param>
    /// <returns></returns>
    DtLocationInfo RequestLocation(string RoadWayNo, List<DtLocationInfo> locationInfos = null);
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
@@ -177,7 +177,11 @@
    /// <returns></returns>
    WebResponseContent CreateAndSendOutboundTask(SaveModel saveModel);
    WebResponseContent GetStockStatue();
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/GZ_ZC/Dt_CZInfo_mes.cs
@@ -248,5 +248,79 @@
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "agv目标地址")]
        public string AGVaddres { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A1
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径A1")]
        public string MPZA1 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A2
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径A2")]
        public string MPZA2 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A3
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径A3")]
        public string MPZA3 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„A
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径A")]
        public string MPZA { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B1
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径B1")]
        public string MPZB1 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B2
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径B2")]
        public string MPZB2 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B3
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径B3")]
        public string MPZB3 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„B
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径B")]
        public string MPZB { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C1
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径C1")]
        public string MPZC1 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C2
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径C2")]
        public string MPZC2 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C3
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径C3")]
        public string MPZC3 { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„C
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径C")]
        public string MPZC { get; set; }
        /// <summary>
        /// ä¸­ç›˜åº§ç›´å¾„
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "中盘座直径")]
        public string MPZZJ { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/GZ_ZC/Dt_SelectionStandards.cs
@@ -60,5 +60,13 @@
        [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "毂孔过盈量上限")]
        public decimal upperValue_gk { get; set; }
        /// <summary>
        /// åˆ¶åŠ¨ç›˜ä½ç½®
        /// </summary>
        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "制动盘方向")]
        public string PostContainer { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_ConfigService.cs
@@ -10,6 +10,8 @@
using WIDESEA_IRepository;
using WIDESEA_Core.BaseRepository;
using System.Net;
using AngleSharp.Dom;
using SqlSugar;
namespace WIDESEA_Services
{
@@ -39,5 +41,17 @@
        {
            return BaseDal.QueryData(x => x.Category == category && x.ConfigKey == configKey).FirstOrDefault();
        }
        public virtual PageGridData<Sys_Config> GetPageData(PageDataOptions options)
        {
            string wheres = "(Category = 'SYS_Parameters')";
            //获取排序字段
            Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(TProperties);
            PageGridData<Sys_Config> pageGridData = new PageGridData<Sys_Config>();
            pageGridData = BaseDal.QueryPage(wheres, options.Page, options.Rows, orderbyDic);
            return pageGridData;
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_RoleService.cs
@@ -135,8 +135,7 @@
            string message = "";
            try
            {
                UserInfo user = App.User.GetCurrentUserInfo();
                if (!GetAllChildren(user.RoleId).Exists(x => x.Id == roleId))
                if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId))
                    return WebResponseContent.Instance.Error("没有权限修改此角色的权限信息");
                //当前用户的权限
                List<Permissions> permissions = _MenuRepository.GetPermissions(App.User.RoleId);
@@ -147,7 +146,7 @@
                List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>();
                foreach (UserPermissionDTO x in userPermissions)
                {
                    Permissions per = permissions.Where(p => p.MenuId == x.Id).FirstOrDefault();
                    Permissions per = permissions.FirstOrDefault(p => p.MenuId == x.Id);
                    //不能分配超过当前用户的权限
                    if (per == null) continue;
                    //per.UserAuthArr.Contains(a.Value)校验权限范围
@@ -169,9 +168,9 @@
                            AuthValue = string.Join(",", arr),
                            AuthId = auth == null ? 0 : auth.AuthId,
                            ModifyDate = DateTime.Now,
                            Modifier = user.UserName,
                            Modifier = App.User.UserName,
                            CreateDate = DateTime.Now,
                            Creater = user.UserName
                            Creater = App.User.UserName
                        });
                    }
                    else
@@ -196,7 +195,7 @@
                    x.AuthValue = "";
                });
                //将取消的权限设置为""
                _RoleAuthRepository.UpdateData(delAuths);
                _RoleAuthRepository.DeleteData(delAuths);
                int addCount = updateAuths.Where(x => x.AuthId <= 0).Count();
                int updateCount = updateAuths.Where(x => x.AuthId > 0).Count();
@@ -204,7 +203,7 @@
                string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff");
                content.OK($"保存成功:新增加配菜单权限{addCount}条,更新菜单{updateCount}条,删除权限{delAuths.Count()}条");
                content.OK($"保存成功:新增加配菜单权限{addCount}条,更新菜单{updateCount}条,删除权限{delAuths.Count}条");
            }
            catch (Exception ex)
            {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/Partial/UntieStation.cs
@@ -49,7 +49,7 @@
                var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(TargetAddress));   //http://localhost:9291/api/Task/ReceiveTask,
                if (respon == null) return content.OK("生成任务成功");
                if (respon == null) return content.Error("失败!调取wcs失败");
                WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString());
                if (!respone.Status)
@@ -59,6 +59,8 @@
                RequestTaskDto input=new RequestTaskDto();
                input.Position = TargetAddress;
                input.RequestType = "888";
                input.PalletCode = CZTM;
                WebResponseContent agvtocon=genAgvSchedulingTask(input);
                if(agvtocon.Status)
                {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/Partial/genAgvSchedulingTask.cs
@@ -39,12 +39,23 @@
                //查找当前在车轴线末端需要agv搬运的车轴
                List<Dt_CZInfo_mes> CZInfotlist = _task_CZInfoRepository.QueryData(x => x.CurrentStatue == "3" /*|| x.CurrentStatue == "4" || x.CurrentStatue == "5"*/ || x.CurrentStatue == "13");
                List<Dt_CZInfo_mes> CZInfotlist = _task_CZInfoRepository.QueryData(x => x.CurrentStatue == "4" || x.CurrentStatue == "5" );
                if (CZInfotlist.Count >= 2) { return content.Error($"已有agv任务正在进行中,下发失败!!!"); }
                Dt_CZInfo_mes CZInfot = CZInfotlist.FirstOrDefault(x => x.CurrentStatue == "3" || x.CurrentStatue == "13");
                if (CZInfot == null) { return content.Error($"未找到现有输送线完成的车轴信息"); }
                Dt_CZInfo_mes CZInfot = null;
                if (input.RequestType == "888")
                {
                    CZInfot = _task_CZInfoRepository.QueryFirst(x =>x.CZTM==input.PalletCode && (x.CurrentStatue == "11" || x.CurrentStatue == "12" || x.CurrentStatue == "13"));
                    if (CZInfot == null) { return content.Error($"未找到现有输送线完成的车轴信息"); }
                }
                else
                {
                    CZInfot = _task_CZInfoRepository.QueryFirst(x => x.CurrentStatue == "3");
                    if (CZInfot == null) { return content.Error($"未找到现有输送线完成的车轴信息"); }
                }
                CZInfot.CurrentStatue = "4";
               
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/ToAPP/Partial/SaveCLinfo.cs
@@ -31,7 +31,7 @@
                if (string.IsNullOrEmpty(clCode) || string.IsNullOrEmpty(clh))
                    throw new Exception($"车轮条码不能为空");
                if (!clCode.Contains("/") && !clCode.ToUpper().StartsWith("L")) throw new Exception($"车轮条码错误,请重新核对");
                //if ((!clCode.Contains("/") && !clCode.ToUpper().StartsWith("L")) || (!clCode.Contains("/") && !clCode.ToUpper().StartsWith("BVV"))) throw new Exception($"车轮条码错误,请重新核对");
                var clinfo = _InWheels_MesRepository.QueryFirst(x => x.Wheels_code == clCode || x.Wheels_Num == clh);
                if (clinfo != null) throw new Exception("车轮录入信息已存在");
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/ToAPP/Partial/SaveCZInfo.cs
@@ -176,7 +176,7 @@
                    Creater = "admin",
                    CurrentStatue = "1",
                    CZH = czh,
                    CZXH = czxh,
                    CZXH = czxh,    //车轴型号
                    LDTM = ldtm,
                    MTTYPE = mttype,
                    ZLZA1 = zlzA1,
@@ -219,8 +219,32 @@
                var hourpara = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_Parameters, SysConfigConst.TempHour);
                int hour = hourpara.ConfigValue.ObjToInt();
                //找出所有符合条件的库存车轮
                var WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps);
                List<Dt_WheelsStock> WheelsList = null;
                //特殊车轴型号()
                //M1A  å¯¹åº” è½¦åž‹    CRH1A  CRH1A-200
                //M1B  å¯¹åº” è½¦åž‹    CRH1B  CRHA1A-250
                //M1C  å¯¹åº” è½¦åž‹    CRH1C  CRH1A-A
                if (czxh == "M1A")
                {
                    WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && (x.Wheels_CarType == "CRH1A" || x.Wheels_CarType == "CRH1A-200") && x.Wheels_Statue==0);
                }
                else if(czxh == "M1B")
                {
                    WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && (x.Wheels_CarType == "CRH1B" || x.Wheels_CarType == "CRHA1A-250") && x.Wheels_Statue == 0);
                }
                else if (czxh == "M1C")
                {
                    WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && (x.Wheels_CarType == "CRH1C" || x.Wheels_CarType == "CRH1A-A") && x.Wheels_Statue == 0);
                }
                else
                {
                    //找出所有符合条件的库存车轮
                    WheelsList = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1 && x.Wheels_mttype == CZInfo_Mes.MTTYPE && x.Wheels_ldxh == clxh && x.Wheels_NewOrOld == newOrOld && x.CreateDate.AddHours(hour) <= DateTime.Now && x.WheelsProps == wheelsProps && x.Wheels_Statue == 0);
                }
                //x.Wheels_CarType  == CZInfo_Mes.CHEXING && x.Wheels_ldtm == CZInfo_Mes.LDTM && selectionStandards.CarType.Contains(x.Wheels_CarType)
                if (null != WheelsList && WheelsList.Count > 0)
                {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/ZY/Partial/getCZInfo.cs
@@ -34,37 +34,11 @@
                var responStr = HttpsClient.PostXml(ipaddress, dic);
                //CLInfo_ZY info = JsonConvert.DeserializeObject<CLInfo_ZY>(responStr);
                //CLInfo_ZY info = JsonConvert.DeserializeObject<CLInfo_ZY>(responStr);1
                CZInfo_ZY inf2o = XMLSerializationTool.DeserializeXmlToObject<CZInfo_ZY>(responStr);
                WheelSetMeasurement inf2o = XMLSerializationTool.DeserializeXmlToObject<WheelSetMeasurement>(responStr);
                if (inf2o.FLAG != "S") throw new Exception($"获取信息失败:接口返回失败:{inf2o.ERROR}");
                //string info2 = XMLSerializationTool.SerializeObjectToXml<string>(responStr);
                //CLInfo_ZY info_ZY = new CLInfo_ZY()  //测试数据
                //{
                //    //level = "1",
                //    //InboundDate = "2020-04-10",
                //    //gkzjjz = "520.11",
                //    //gkjmz = "421.1",
                //    //czh = "100",
                //    //clh = "L E123-52 4A",
                //    //cartype = "CRH1A",
                //    //Ltype = "SDA",
                //    //lx = "DA",
                //    //mttype = "crh",
                //    //NewOrOld = "NEW",
                //    //psj = "动车组",
                //    //sx = "da",
                //    //xlh = "1",
                //    //ygljz = "121"
                //};
                //inf2o.CHEXING = "CRH1A";
                //inf2o.MTTYPE = "M";
                //CLInfo_ZY info_ZY = XmlToJson(responStr);
                content.OK(data: inf2o);
            }
            catch (Exception ex)
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Check/Dt_CheckResultRepository.cs
@@ -1,4 +1,6 @@
namespace WIDESEA_StorageBasicRepository
using WIDESEA_IStorageBasicRepository;
namespace WIDESEA_StorageBasicRepository
{
    public class Dt_CheckResultRepository : RepositoryBase<Dt_CheckResult>, IDt_CheckResultRepository
    {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_SelectionStandardsService.cs
@@ -26,15 +26,26 @@
                decimal lowerValue = Convert.ToDecimal(saveModel.MainData["lowerValue"]);
                decimal upperValue = Convert.ToDecimal(saveModel.MainData["upperValue"]);
                int isCantainGK = saveModel.MainData["isCantainGK"].ObjToInt();
                decimal lowerValue_gk = Convert.ToDecimal(saveModel.MainData["lowerValue_gk"]);
                decimal upperValue_gk = Convert.ToDecimal(saveModel.MainData["upperValue_gk"]);
                string PostContainer = saveModel.MainData["postContainer"].ToString();
                if (lowerValue < 0 || upperValue < 0) throw new Exception("过盈量值异常");
                decimal lowerValue_gk = 0;
                decimal upperValue_gk = 0;
                if (isCantainGK != 0)
                {
                    if (lowerValue_gk < 0 || upperValue_gk < 0) throw new Exception("截面过盈量值异常");
                     lowerValue_gk = Convert.ToDecimal(saveModel.MainData["lowerValue_gk"]);
                     upperValue_gk = Convert.ToDecimal(saveModel.MainData["upperValue_gk"]);
                    if (isCantainGK != 0)
                    {
                        if (lowerValue_gk < 0 || upperValue_gk < 0) throw new Exception("截面过盈量值异常");
                    }
                }
                Dt_SelectionStandards selectionStandards = new Dt_SelectionStandards
                {
@@ -48,7 +59,8 @@
                    mttype = mttype,
                    neworold = neworold,
                    upperValue_gk = upperValue_gk,
                    upperValue = upperValue
                    upperValue = upperValue,
                    PostContainer = PostContainer,
                };
                if (BaseDal.AddData(selectionStandards) > 0)
@@ -82,21 +94,30 @@
                string gkdj = saveModel.MainData["gkdj"].ToString();
                decimal lowerValue = Convert.ToDecimal(saveModel.MainData["lowerValue"]);
                decimal upperValue = Convert.ToDecimal(saveModel.MainData["upperValue"]);
                string PostContainer = saveModel.MainData["postContainer"].ToString();
                int isCantainGK = saveModel.MainData["isCantainGK"].ObjToInt();
                decimal lowerValue_gk = Convert.ToDecimal(saveModel.MainData["lowerValue_gk"]);
                decimal upperValue_gk = Convert.ToDecimal(saveModel.MainData["upperValue_gk"]);
                Dt_SelectionStandards dt_Selection = BaseDal.QueryFirst(x => x.ID == id);
                dt_Selection.CarType=carType;
                dt_Selection.mttype=mttype;
                dt_Selection.CarType = carType;
                dt_Selection.mttype = mttype;
                dt_Selection.neworold = neworold;
                dt_Selection.gkdj = gkdj;
                dt_Selection.lowerValue = lowerValue;
                dt_Selection.upperValue = upperValue;
                dt_Selection.isCantainGK = isCantainGK != 0 ? true : false;
                dt_Selection.lowerValue_gk = lowerValue_gk;
                dt_Selection.upperValue_gk = upperValue_gk;
                dt_Selection.PostContainer = PostContainer;
                dt_Selection.isCantainGK = isCantainGK != 0 ? true : false;
                if (isCantainGK != 0)
                {
                    decimal lowerValue_gk = Convert.ToDecimal(saveModel.MainData["lowerValue_gk"]);
                    decimal upperValue_gk = Convert.ToDecimal(saveModel.MainData["upperValue_gk"]);
                    dt_Selection.lowerValue_gk = lowerValue_gk;
                    dt_Selection.upperValue_gk = upperValue_gk;
                }
                if (BaseDal.UpdateData(dt_Selection))
                {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/Dt_InWheels_mesService.cs
@@ -94,7 +94,7 @@
            Dt_InWheels_mes wheels_Mes = new Dt_InWheels_mes
            {
                Wheels_code = DateTime.Now.ToString("yyyyMMddHHmmss") + clCode,
                Wheels_Type = "1",
                Wheels_Type = "车轮",
                Wheels_Num = DateTime.Now.ToString("yyyyMMddHHmmss") + clCode,
                CreateDate = DateTime.Now,
                Creater = App.User.UserName == null ? "admin" : App.User.UserName,
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Check/Dt_CheckResultService.cs
@@ -5,20 +5,35 @@
using System.Collections.Generic;
using System.Drawing.Printing;
using System.Linq.Expressions;
using WIDESEA.Common;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_StorageBasicRepository;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEA_IStoragIntegrationServices;
using WIDESEA.Common;
using WIDESEA_Common.ZY;
using Autofac.Core;
using NetTaste;
using AngleSharp.Io;
using WIDESEA_IStorageBasicRepository;
namespace WIDESEA_StorageBasicService;
public class Dt_CheckResultService : ServiceBase<Dt_CheckResult, IDt_CheckResultRepository>, IDt_CheckResultService
{
    public Dt_CheckResultService(IDt_CheckResultRepository BaseDal) : base(BaseDal)
    {
    }
    public static string ZY_CheckResultInterface = "http://172.21.1.117/barcode/Webservice/WebService_ZY/Service_EQP.asmx";
    public override PageGridData<Dt_CheckResult> GetPageData(PageDataOptions options)
    {
        return base.GetPageData(options);
    }
    public WebResponseContent HandUploadData(int id)
    {
        WebResponseContent content = new WebResponseContent();
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
@@ -21,6 +21,7 @@
    private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
    private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
    private readonly IDt_WheelsStockRepository _WheelsStockRepository;
    private readonly IDt_ZdpStockRepository _zdpStockRepository;
    private readonly IMapper _mapper;
    public LocationInfoService(ILocationInfoRepository BaseDal,
@@ -33,7 +34,8 @@
                                    IStockInfoDetailRepository stockInfoDetailRepository,
                                    IMapper mapper,
                                    IDt_TaskService taskService,
                                    IDt_WheelsStockRepository wheelsStockRepository) : base(BaseDal)
                                    IDt_WheelsStockRepository wheelsStockRepository,
                                    IDt_ZdpStockRepository zdpStockRepository) : base(BaseDal)
    {
        _unitOfWorkManage = unitOfWorkManage;
        _taskRepository = taskRepository;
@@ -45,6 +47,7 @@
        _mapper = mapper;
        _taskService = taskService;
        _WheelsStockRepository = wheelsStockRepository;
        _zdpStockRepository = zdpStockRepository;
    }
    /// <summary>
@@ -80,6 +83,8 @@
                // èŽ·å–æ–°çš„åº“ä½çš„ä»»åŠ¡
                var internalTransferTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == newLocationID && x.Roadway == outboundTask.Roadway && x.TaskState == (int)TaskOutStatusEnum.OutNew);
                LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,获取新库位的任务", $"新库位任务:{internalTransferTask}");
                // å¦‚果新的库位没有找到对应的任务
@@ -369,8 +374,12 @@
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var stockInfo = await _WheelsStockRepository.QueryFirstAsync(x => x.Wheels_Location == newLocationID);
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var zdpInfo = await _zdpStockRepository.QueryFirstAsync(x => x.Zdp_Location == newLocationID);
        LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到新库位任务", $"该位置是否有库存:{stockInfo}");
        if (stockInfo == null)
        if (stockInfo == null && zdpInfo==null)
        {
            LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到库存数据", $"直接返回原先出库任务:{outboundTask}");
            // å¦‚果没有库存,直接返回当前出库任务
@@ -388,14 +397,14 @@
            {
                CreateDate = DateTime.Now,
                Creater = App.User.UserName == null ? "admin" : App.User.UserName,
                CurrentAddress = stockInfo.Wheels_Location,
                CurrentAddress = stockInfo != null ?stockInfo.Wheels_Location: zdpInfo.Zdp_Location,
                Grade = 99,
                MaterialNo = stockInfo.Wheels_Type,
                MaterialNo = stockInfo != null ? stockInfo.Wheels_Type: "2",
                NextAddress = emptyLocation.LocationCode,
                PalletCode = stockInfo.Wheels_Num,
                PalletCode = stockInfo != null ? stockInfo.Wheels_Num : zdpInfo.Zdp_code,
                Remark = "移库",
                Roadway = "SC1",
                SourceAddress = stockInfo.Wheels_Location,
                SourceAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
                TaskNum = taskNo,
                TargetAddress = emptyLocation.LocationCode,
                TaskState = (int)TaskStatus.Created,
@@ -424,8 +433,12 @@
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var stockInfo = await _WheelsStockRepository.QueryFirstAsync(x => x.Wheels_Location == newLocationID);
        // åˆ¤æ–­è¯¥ä½ç½®æ˜¯å¦æœ‰åº“å­˜
        var zdpInfo = await _zdpStockRepository.QueryFirstAsync(x => x.Zdp_Location == newLocationID);
        LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到新库位任务", $"该位置是否有库存:{stockInfo}");
        if (stockInfo == null)
        if (stockInfo == null && zdpInfo == null)
        {
            LogFactory.GetLog("检查是否需要移库").InfoFormat(true, "需要移库,未获取到库存数据", $"直接返回原先出库任务:{inboundTask}");
            // å¦‚果没有库存,直接返回当前出库任务
@@ -443,14 +456,14 @@
            {
                CreateDate = DateTime.Now,
                Creater = App.User.UserName == null ? "admin" : App.User.UserName,
                CurrentAddress = stockInfo.Wheels_Location,
                CurrentAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
                Grade = 99,
                MaterialNo = stockInfo.Wheels_Type,
                MaterialNo = stockInfo != null ? stockInfo.Wheels_Type : "2",
                NextAddress = emptyLocation.LocationCode,
                PalletCode = stockInfo.Wheels_Num,
                PalletCode = stockInfo != null ? stockInfo.Wheels_Num : zdpInfo.Zdp_code,
                Remark = "移库",
                Roadway = "SC1",
                SourceAddress = stockInfo.Wheels_Location,
                SourceAddress = stockInfo != null ? stockInfo.Wheels_Location : zdpInfo.Zdp_Location,
                TaskNum = taskNo,
                TargetAddress = emptyLocation.LocationCode,
                TaskState = (int)TaskStatus.Created,
@@ -497,7 +510,7 @@
                //List<DtLocationInfo> locations = new List<DtLocationInfo>();
                if (locationInfos == null || locationInfos.Count == 0)
                {
                    locationInfos = BaseDal.QueryData(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1);
                    locationInfos = BaseDal.QueryData(x => x.LocationStatus == 0 && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1);
                }
@@ -518,7 +531,7 @@
                        {
                            locationInfos.Remove(location);
                            if (locationInfos.Count == 0) return null;
                            RequestLocation(RoadWayNo, locationInfos);
                            return RequestLocation(RoadWayNo, locationInfos);
                        }
                    }
                }
@@ -539,7 +552,7 @@
    }
    private DtLocationInfo GetEmptyLocation(List<DtLocationInfo> dtLocationInfos)
    {
        var locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1).OrderBy(x => x.Layer).ThenByDescending(x => x.Depth).ThenBy(x => x.Row).ThenBy(x => x.Column).FirstOrDefault();
        var locationinfo = dtLocationInfos.Where(x => x.LocationStatus == 0 && x.RoadwayNo == "SC1" && x.EnalbeStatus == 1 && x.LocationType == 1).OrderBy(x => x.Layer).ThenByDescending(x => x.Depth).ThenBy(x => x.Row).ThenBy(x => x.Column).FirstOrDefault();
        return locationinfo;
    }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/Dt_WheelsStock_OldService.cs
@@ -40,13 +40,15 @@
            var deleteList = currentList.Except(oldWheels).ToList();
            //currentList.Where(x=>x.wheel_code)
            BaseDal.DeleteData(BaseDal.QueryData());
            if (BaseDal.AddData(oldWheels) > 1)
            {
                return content.OK("旧库数据获取成功");
            }
            else
            {
                return content.Error();
                return content.Error("添加失败");
            }
        }
        catch (Exception ex)
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -2,6 +2,8 @@
using MailKit.Search;
using Mapster;
using Masuit.Tools;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Database;
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using System.Diagnostics;
using System.Reflection.Emit;
@@ -339,6 +341,8 @@
                Wheels_mttype = stock.Wheels_mttype,
                //Wheels_SequenceNum = "",
                Wheels_ygljz = stock.Wheels_ygljz,
                Wheels_DateDet = stock.Wheels_DateDet,
                Wheels_Statue = stock.Wheels_Statue,
            };
@@ -424,6 +428,8 @@
                Zdp_GKJZ = stock.Zdp_GKJZ,
                Zdp_LSCSYMH = stock.Zdp_LSCSYMH,
                Zdp_rksj = stock.Zdp_rksj,
                Zdp_Statue= stock.Zdp_Statue,
                Zdp_DateDet = stock.Zdp_DateDet,
            };
            // äº‹åŠ¡å¤„ç†
@@ -1128,6 +1134,7 @@
                var wheels_Mes_Hty = inWheels_Mes.Adapt<Dt_InWheels_mes_hty>();
                wheels_Mes_Hty.Wheels_Type = "è½®";
                wheels_Mes_Hty.Wheels_CurrentStatue = "2";
                wheels_Mes_Hty.FinishDate = DateTime.Now;
                wheels_Mes_Hty.OperateType = (int)OperateTypeEnum.自动完成;
@@ -1417,4 +1424,21 @@
    #endregion ä»»åŠ¡è¯·æ±‚æ–¹æ³•
    #endregion private å†…部方法
    public WebResponseContent GetStockStatue()
    {
        WebResponseContent content=new WebResponseContent();
        int Wherecount = _WheelsStockRepository.QueryData(x => x.Wheels_Statue == 1).Count();
        int Zdpcount = _ZdpStockRepository.QueryData(x => x.Zdp_Statue == 1).Count();
        content.Data = new
        {
            WheelsCount = Wherecount,
            ZdpCount = Zdpcount
        };
        return content;
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1,6 +1,7 @@
using log4net.Core;
using Masuit.Tools;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using WIDESEA_Common;
using WIDESEA_Core.Const;
@@ -266,12 +267,19 @@
            if(cacheinfo.Towhereabouts =="" && cacheinfo.Towhereabouts == null) throw new Exception($"{input.PalletCode}运输目标地址为空");
            return content.OK(data: cacheinfo.Towhereabouts);*/
            var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode);
            if (task == null) throw new Exception($"未找到{input.PalletCode}托盘信息");
            if (task.Towhereabouts == "" && task.Towhereabouts == null) throw new Exception($"{input.PalletCode}运输目标地址为空");
            return content.OK(data: task.Towhereabouts);
            var task = await BaseDal.QueryFirstAsync(x => input.PalletCode.Contains(x.PalletCode));
            if (task != null)
            {
                if (task.Towhereabouts == "" && task.Towhereabouts == null) return content.Error($"{input.PalletCode}运输目标地址为空");
                return content.OK(data: task.Towhereabouts);
            }
            else
            {
                Dt_Task_Hty dt_Task_Hty = _task_HtyRepository.QueryFirst(x => input.PalletCode.Contains(x.PalletCode) && x.CreateDate >= DateTime.Now.AddHours(-2));
                if (dt_Task_Hty == null) return content.Error($"未找到{input.PalletCode}托盘历史信息");
                if (dt_Task_Hty.Towhereabouts == null && dt_Task_Hty.Towhereabouts == "") return content.Error($"{input.PalletCode}托盘历史信息没有记录目标地址");
                return content.OK(data: dt_Task_Hty.Towhereabouts);
            }
        }
        catch (Exception err)
        {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
@@ -45,4 +45,10 @@
        return Service.LocationStatus();
    }
    [HttpPost, AllowAnonymous, Route("RequestLocation")]
    public DtLocationInfo RequestLocation(string RoadWayNo, List<DtLocationInfo> locationInfos = null)
    {
        return Service.RequestLocation(RoadWayNo);
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
@@ -142,4 +142,15 @@
    {
        return  Service.UpWheelsFlow(saveModel);
    }
    /// <summary>
    /// æ˜¾ç¤ºåº“存有多少超期的
    /// </summary>
    /// <param name="saveModel"></param>
    /// <returns></returns>
    [HttpPost, AllowAnonymous, Route("GetStockStatue")]
    public WebResponseContent GetStockStatue()
    {
        return Service.GetStockStatue();
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -20,6 +20,7 @@
using Swashbuckle.AspNetCore.SwaggerGen;
using Microsoft.OpenApi.Models;
using WIDESEA_StorageTaskServices;
using WIDESEA_StoragIntegrationServices.WMSJob;
var builder = WebApplication.CreateBuilder(args);
@@ -110,7 +111,7 @@
    }
});
//builder.Services.AddHostedService<MyBackgroundService>();
builder.Services.AddHostedService<WMSCruJob>();
var app = builder.Build();
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -11,11 +11,11 @@
  //连接字符串
  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
  //"ConnectionString": "Data Source=192.168.5.251;Initial Catalog=WIDESEA_WMSDB_BBMain;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWMS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWMS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=MX_LDY_WMS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WMSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionStringWCS": "Data Source=192.168.5.251;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionStringWCS": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //"ConnectionStringWCS": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
    "PolicyName": "CorsIpAccess", //策略名称