chenyong
5 天以前 823f0ece05689758ae8f42e26c4ec994db77bc56
新增异常库位提示页面,优化前端显示

新增异常库位提示页面,优化前端显示
已修改16个文件
已复制1个文件
已重命名1个文件
已添加6个文件
917 ■■■■ 文件已修改
Code Management/WCS/WIDESEAWCS_Client/src/api/http.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/extension/ProcessParameters/extend/importDevicePro.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/extension/quartzJob/deviceInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/views/ProcessParameters/extend/importDevicePro.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/api/http.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock_Hty.jsx 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_OutTime.jsx 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationStatus.vue 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock_Hty.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_OutTime.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml.user 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/api/http.js
@@ -11,16 +11,15 @@
let loadingInstance;
let loadingStatus = false;
if (process.env.NODE_ENV == 'development') {
     axios.defaults.baseURL = 'http://127.0.0.1:9291/';
if (process.env.NODE_ENV == 'development') {axios.defaults.baseURL = 'http://127.0.0.1:9291/';
    // axios.defaults.baseURL = 'http://192.168.20.251:9291/';
}
else if (process.env.NODE_ENV == 'debug') {
    axios.defaults.baseURL = 'http://127.0.0.1:8098/';
    axios.defaults.baseURL = 'http://192.168.15.253:9291/';
}
else if (process.env.NODE_ENV == 'production') {
    axios.defaults.baseURL = 'http://192.168.20.253:9291/';
    axios.defaults.baseURL = 'http://192.168.15.253:9291/';
}
if (!axios.defaults.baseURL.endsWith('/')) {
    axios.defaults.baseURL+="/";
Code Management/WCS/WIDESEAWCS_Client/src/extension/ProcessParameters/extend/importDevicePro.vue
Code Management/WCS/WIDESEAWCS_Client/src/extension/quartzJob/deviceInfo.js
@@ -1,4 +1,4 @@
import gridBody from "./extend/importDevicePro.vue";
import gridBody from '@/extension/ProcessParameters/extend/importDevicePro.vue';
let extension = {
  components: {
    //查询界面扩展组件
Code Management/WCS/WIDESEAWCS_Client/src/views/ProcessParameters/extend/importDevicePro.vue
copy from Code Management/WCS/WIDESEAWCS_Client/src/extension/quartzJob/extend/importDevicePro.vue copy to Code Management/WCS/WIDESEAWCS_Client/src/views/ProcessParameters/extend/importDevicePro.vue
Code Management/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue
@@ -176,7 +176,7 @@
        type: "string",
        width: 90,
        align: "left",
        hidden: true,
      },
      {
        field: "grade",
Code Management/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue
@@ -68,7 +68,7 @@
        { title: "巷道号", field: "roadway", type: "text" },
        { "title": "生产产线", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
        { title: "创建人", field: "creater", type: "text" },
        { title: "创建时间", field: "createDate", type: "datetime" },
        { title: "完成时间", field: "createDate", type: "datetime" },
      ],
    ]);
    const columns = ref([
@@ -161,7 +161,7 @@
        type: "string",
        width: 90,
        align: "left",
        hidden: true,
      },
      {
        field: "grade",
@@ -176,6 +176,7 @@
        type: "datetime",
        width: 150,
        align: "left",
        hidden: true,
      },
      {
        field: "wMSId",
@@ -188,7 +189,7 @@
      
      {
        field: "createDate",
        title: "创建时间",
        title: "完成时间",
        type: "datetime",
        width: 150,
        align: "left",
@@ -199,10 +200,11 @@
        type: "datetime",
        width: 160,
        align: "left",
        hidden: true,
      },
      {
        field: "creater",
        title: "创建人",
        title: "完成者",
        type: "string",
        width: 90,
        align: "left",
@@ -213,6 +215,7 @@
        type: "string",
        width: 90,
        align: "left",
        hidden: true,
      },
      {
        field: "remark",
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -157,7 +157,7 @@
        /// <param name="taskNum">任务号</param>
        /// <param name="nextAddress">下一地址</param>
        /// <returns></returns>
        Dt_Task QueryExecutingConveyorLineTask(string nextAddress, string Barcode)
        Dt_Task QueryExecutingConveyorLineTask(string nextAddress, string Barcode);
        /// <summary>
        /// æ ¹æ®æ‰˜ç›˜å·ã€ä¸‹ä¸€åœ°å€æŸ¥è¯¢è¾“送线执行中的任务
@@ -320,5 +320,12 @@
        /// <param name="deviceNo"></param>
        /// <returns></returns>
        Dt_Task QueryOutFireAlarmTask(string deviceNo);
        /// <summary>
        /// åˆ é™¤ä»»åŠ¡
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        WebResponseContent Delete(Dt_Task task);
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -1,28 +1,28 @@
{
  "urls": "http://*:9291", //web服务端口,如果用IIS部署,把这个去掉
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "dics": "deviceType,devicePlcType,jobAssembly,jobClassName,deviceStatus,taskType,taskState,inOutType",
  "AllowedHosts": "*",
  "ConnectionStringsEncryption": false,
  "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
  //连接字符串
  //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=WIDESEA_WCSDBB2F;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_WCSDB_BB3F;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
    "PolicyName": "CorsIpAccess", //策略名称
    "EnableAllIPs": true, //当为true时,开放所有IP均可访问。
    // æ”¯æŒå¤šä¸ªåŸŸåç«¯å£ï¼Œæ³¨æ„ç«¯å£å·åŽä¸è¦å¸¦/斜杆:比如localhost:8000/,是错的
    // æ³¨æ„ï¼Œhttp://127.0.0.1:1818 å’Œ http://localhost:1818 æ˜¯ä¸ä¸€æ ·çš„
    "IPs": "http://127.0.0.1:8080,http://localhost:8080,http://127.0.0.1:8081,http://localhost:8081"
  },
  "ApiName": "WIDESEA",
  "ExpMinutes": 120,
  "QuartzJobAutoStart": true,
  "LogDeubgEnable": true
    "urls": "http://*:9291", //web服务端口,如果用IIS部署,把这个去掉
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
        }
    },
    "dics": "deviceType,devicePlcType,jobAssembly,jobClassName,deviceStatus,taskType,taskState,inOutType",
    "AllowedHosts": "*",
    "ConnectionStringsEncryption": false,
    "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
    //连接字符串
    //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=WIDESEA_WCSDBB2F;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSDB_BBMain;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    //跨域
    "Cors": {
        "PolicyName": "CorsIpAccess", //策略名称
        "EnableAllIPs": true, //当为true时,开放所有IP均可访问。
        // æ”¯æŒå¤šä¸ªåŸŸåç«¯å£ï¼Œæ³¨æ„ç«¯å£å·åŽä¸è¦å¸¦/斜杆:比如localhost:8000/,是错的
        // æ³¨æ„ï¼Œhttp://127.0.0.1:1818 å’Œ http://localhost:1818 æ˜¯ä¸ä¸€æ ·çš„
        "IPs": "http://127.0.0.1:8080,http://localhost:8080,http://127.0.0.1:8081,http://localhost:8081"
    },
    "ApiName": "WIDESEA",
    "ExpMinutes": 120,
    "QuartzJobAutoStart": true,
    "LogDeubgEnable": true
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -935,7 +935,13 @@
            }
            return wcsBasez + address;
        }
        public WebResponseContent Delete(Dt_Task task)
        {
            var taskHty = task.Adapt<Dt_Task_Hty>();
            taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
            _taskHtyRepository.AddData(taskHty);
            return base.DeleteData(task);
        }
        #region é‡å†™æ–¹æ³•
        public override WebResponseContent DeleteData(object[] key)
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
@@ -1,5 +1,7 @@
using Masuit.Tools;
using Mapster;
using Masuit.Tools;
using Newtonsoft.Json;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
@@ -238,34 +240,23 @@
        {
            if (command.ConveyorLineBarcode != "NoRead")
            {
                //var config = _sys_ConfigService.GetByConfigKey("SYS_BASE", "ISFRINTRAY");
                //if (config.ConfigValue == "1")
                //{
                //    Random random = new Random();
                //    var task = new Dt_Task()
                //    {
                //        CurrentAddress = childDeviceCode,
                //        Grade = 1,
                //        NextAddress = "2066",
                //        PalletCode = command.ConveyorLineBarcode,
                //        Roadway = "FR",
                //        SourceAddress = childDeviceCode,
                //        TargetAddress = "2066",
                //        TaskNum = random.Next(1,9999),
                //        TaskType = (int)TaskInboundTypeEnum.InTray,
                //        TaskState = (int)TaskInStatusEnum.Line_InExecuting,
                //        WMSId = 0
                //    };
                //    var taskCommand = MapTaskCommand(task, command);
                //    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                //}
                //else
                //{
                var taskDTO = CreateEmptyTrayTaskDto(command.ConveyorLineBarcode, childDeviceCode);
                if (_taskRepository.QueryFirst(x => x.PalletCode == taskDTO.PalletCode) != null)
                if (_taskRepository.QueryFirst(x => x.PalletCode == command.ConveyorLineBarcode) != null)
                {
                    WriteInfo(conveyorLine.DeviceName, "当前托盘存在任务");
                    List<string> strings = new List<string>() { "1743", "1739", "1837", "1841" };
                    var taskExecuting = _taskRepository.QueryFirst(x => x.PalletCode == command.ConveyorLineBarcode && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting && strings.Contains(x.TargetAddress));
                    if (taskExecuting != null)
                    {
                        taskExecuting.ExceptionMessage = "未接收到线体完成信号系统内部自动完成";
                        _taskService.Delete(taskExecuting);
                    }
                    ConsoleHelper.WriteErrorLine($"当前托盘存在任务:【{command.ConveyorLineBarcode}】");
                    WriteInfo(conveyorLine.DeviceName, $"当前托盘存在任务{command.ConveyorLineBarcode}");
                    return;
                }
@@ -319,9 +310,6 @@
        /// </summary>
        private async void RequestWmsTask(CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, Dt_StationManager stationManager)
        {
            //var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && (x.TaskState == (int)TaskOutStatusEnum.OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutPending));
            //if (taskGW != null)
            //    _taskRepository.DeleteData(taskGW);
            if (command.ConveyorLineBarcode.IsNullOrEmpty()) return;
            var content = await _taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode);
            if (content.Status)
@@ -329,9 +317,6 @@
                var task = _taskService.QueryBarCodeConveyorLineTask(command.ConveyorLineBarcode, childDeviceCode);
                if (task != null)
                {
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTaskNum, task.TaskNum, childDeviceCode);
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, task.NextAddress, childDeviceCode);
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineBarcode, command.ConveyorLineBarcode, childDeviceCode);
                    var GWTask = _taskRepository.QueryData(x => x.Roadway.Contains("GWSC2") && x.SourceAddress == "1039" && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskInStatusEnum.Line_InFinish)).ToList();
                    if (GWTask.Count >= 2 && childDeviceCode == "1039" && task.Roadway.Contains("GWSC2"))
                    {
Code Management/WMS/WIDESEA_WMSClient/src/api/http.js
@@ -11,15 +11,15 @@
let loadingInstance
let loadingStatus = false
if (process.env.NODE_ENV == 'development') {
  //  axios.defaults.baseURL = 'http://localhost:5000/';
  axios.defaults.baseURL = 'http://192.168.20.253:5000/';
   axios.defaults.baseURL = 'http://localhost:5000/';
  // axios.defaults.baseURL = 'http://192.168.20.253:5000/';
}
else if (process.env.NODE_ENV == 'debug') {
  axios.defaults.baseURL = 'http://192.168.20.253:5000/';
  axios.defaults.baseURL = 'http://192.168.15.253:5000/';
}
else if (process.env.NODE_ENV == 'production') {
  // axios.defaults.baseURL = 'http://127.0.0.1:5000/';
  axios.defaults.baseURL = 'http://192.168.20.253:5000/';
  axios.defaults.baseURL = 'http://192.168.15.253:5000/';
}
//axios.defaults.baseURL = 'http://api.volcore.xyz/';
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock_Hty.jsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
/*****************************************************************************************
 **  Author:jxx 2022
 **  QQ:283591387
 **完整文档见:http://v2.volcore.xyz/document/api ã€ä»£ç ç”Ÿæˆé¡µé¢ViewGrid】
 **常用示例见:http://v2.volcore.xyz/document/vueDev
 **后台操作见:http://v2.volcore.xyz/document/netCoreDev
 *****************************************************************************************/
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
// import gridHeader from "./demo_Product/Dt_BillGroupStockDetail.vue";
import gridBody from "./extend/SupplementationData.vue"
let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: gridBody,
    gridFooter: '',
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelFooter: ''
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前,
      let OutBoundBtn = this.buttons.find((x) => x.value == 'OutBound')
      if (OutBoundBtn) {
        OutBoundBtn.onClick = function () {
          // this.$Message.success('点击了按钮')
          let row = this.$refs.table.getSelected() //获取选中的行
          if (row <= 0) {
            //如果没有选中行
            this.$Message.error('请选择一行数据')
            return
          }
          let locationCode = row[0].locationCode
          let palletCode = row[0].palletCode
          this.http
            .get(
              `/api/Task/CreateAndSendOutboundTask?locationCode=${locationCode}&palletCode=${palletCode}`,
              {},
              '正在创建任务'
            )
            .then((res) => {
              //示例:调用后台接口
              if (res.status) {
                this.$Message.success('创建任务成功')
                console.log(res)
                this.refresh() //刷新表格
              } else {
                this.$Message.error(res.message) //错误提示
              }
            })
        }
      }
      var btnSupplementationData = this.buttons.find(x => x.value == "SupplementationData");
            if (btnSupplementationData != null) {
                btnSupplementationData.onClick = () => {
                    let rows = this.$refs.table.getSelected();
                        if (rows.length == 0) {
                            return this.$error("请选择数据!");
                        } else if (rows.length > 1) {
                            return this.$error("只能选择单条数据");
                        }
                        this.$refs.gridBody.open(rows[0].palletCode);
                        this.refresh();
                    }
                }
      //示例:在按钮的最前面添加一个按钮
      // this.buttons.unshift({
      //   //也可以用push或者splice方法来修改buttons数组
      //   name: '直接出库', //按钮名称
      //   icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
      //   type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
      //   onClick: function () {
      //     this.$Message.success('点击了按钮')
      //     let row = this.$refs.table.getSelected() //获取选中的行
      //     if (row <= 0) {
      //       //如果没有选中行
      //       this.$Message.error('请选择一行数据')
      //       return
      //     }
      //     let locationCode = row[0].locationCode
      //     let palletCode = row[0].palletCode
      //     this.http.get(`/api/Task/CreateAndSendOutboundTask?locationCode=${locationCode}&palletCode=${palletCode}`, {}, "正在创建任务").then((res) => {
      //       //示例:调用后台接口
      //       if (res.status) {
      //         this.$Message.success('创建任务成功')
      //       } else {
      //         this.$Message.error(res.message) //错误提示
      //       }
      //     })
      //   }
      // })
      //示例:设置修改新建、编辑弹出框字段标签的长度
      this.boxOptions.labelWidth = 150
      // this.columns.push({
      //   title: "操作",
      //   field: "操作",
      //   width: 150,
      //   align: "left", // 'center',
      //   render: (h, { row, column, index }) => {
      //     return (
      //       <div>
      //         <el-button
      //           onClick={($e) => {
      //             this.$refs.gridHeader.openModel1(row);
      //           }}
      //           type="primary"
      //           plain
      //           style="height:26px; padding: 10px !important;"
      //         >
      //           æŸ¥çœ‹åº“存明细
      //         </el-button>
      //       </div>
      //     );
      //   },
      // });
      this.columns.forEach((column) => {
        //修改颜色
        if (column.field == 'roadwayNo') {
          column.formatter = (row) => {
            // return '<span style="color: #2d8cf0;">' + row?.locationInfo?.roadwayNo + '</span>'
            return  row?.locationInfo?.roadwayNo
          }
        }
        if (column.field == 'materielCode') {
          column.formatter = (row) => {
            // return '<span style="color: #2d8cf0;">' + row?.locationInfo?.roadwayNo + '</span>'
            return  row?.stockInfoDetails[0]?.materielCode
          }
        }
        //格式化日期
        // æ£€æŸ¥å½“前列的字段是否为 'locationStatus'
        if (column.field == 'locationStatus') {
          // ä½¿ç”¨å¯¹è±¡å­—面量来映射 'locationStatus' çš„值和对应的文本
          const statusMap = {
            '-1': '全部',
            '0': '空闲',
            '1': '锁定',
            '2': '有货',
            '3': '有货禁用',
            '4': '无货禁用'
          };
          // å®šä¹‰ä¸€ä¸ªæ ¼å¼åŒ–函数,根据 'locationStatus' çš„值返回相应的文本
          column.formatter = (row) => {
            // ä½¿ç”¨ statusMap å¯¹è±¡æ¥èŽ·å–å¯¹åº”çš„æ–‡æœ¬ï¼Œå¦‚æžœæ²¡æœ‰åŒ¹é…åˆ™è¿”å›ž '未知状态'
            return statusMap[row?.locationInfo?.locationStatus] || '未知状态';
          }
        }
      })
    },
    onInited() {
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      this.detailOptions.columns.forEach(column=>{
        console.log(column)
      });
    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false,则不会执行查询
      return true
    },
    searchAfter(result) {
     console.log(result)
      return true
    },
    addBefore(formData) {
      //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
      return true
    },
    updateBefore(formData) {
      //编辑保存前formData为对象,包括明细表、删除行的Id
      return true
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
      //(1)判断是编辑还是新建操作: this.currentAction=='Add';
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段='xxx';
      //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看:console.log(this.editFormOptions)
    }
  }
}
export default extension
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_OutTime.jsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
/*****************************************************************************************
 **  Author:jxx 2022
 **  QQ:283591387
 **完整文档见:http://v2.volcore.xyz/document/api ã€ä»£ç ç”Ÿæˆé¡µé¢ViewGrid】
 **常用示例见:http://v2.volcore.xyz/document/vueDev
 **后台操作见:http://v2.volcore.xyz/document/netCoreDev
 *****************************************************************************************/
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
// import gridHeader from "./demo_Product/Dt_BillGroupStockDetail.vue";
import gridBody from "./extend/SupplementationData.vue"
let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: gridBody,
    gridFooter: '',
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelFooter: ''
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前,
      let OutBoundBtn = this.buttons.find((x) => x.value == 'OutBound')
      if (OutBoundBtn) {
        OutBoundBtn.onClick = function () {
          // this.$Message.success('点击了按钮')
          let row = this.$refs.table.getSelected() //获取选中的行
          if (row <= 0) {
            //如果没有选中行
            this.$Message.error('请选择一行数据')
            return
          }
          let locationCode = row[0].locationCode
          let palletCode = row[0].palletCode
          this.http
            .get(
              `/api/Task/CreateAndSendOutboundTask?locationCode=${locationCode}&palletCode=${palletCode}`,
              {},
              '正在创建任务'
            )
            .then((res) => {
              //示例:调用后台接口
              if (res.status) {
                this.$Message.success('创建任务成功')
                console.log(res)
                this.refresh() //刷新表格
              } else {
                this.$Message.error(res.message) //错误提示
              }
            })
        }
      }
      var btnSupplementationData = this.buttons.find(x => x.value == "SupplementationData");
            if (btnSupplementationData != null) {
                btnSupplementationData.onClick = () => {
                    let rows = this.$refs.table.getSelected();
                        if (rows.length == 0) {
                            return this.$error("请选择数据!");
                        } else if (rows.length > 1) {
                            return this.$error("只能选择单条数据");
                        }
                        this.$refs.gridBody.open(rows[0].palletCode);
                        this.refresh();
                    }
                }
      //示例:在按钮的最前面添加一个按钮
      // this.buttons.unshift({
      //   //也可以用push或者splice方法来修改buttons数组
      //   name: '直接出库', //按钮名称
      //   icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
      //   type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
      //   onClick: function () {
      //     this.$Message.success('点击了按钮')
      //     let row = this.$refs.table.getSelected() //获取选中的行
      //     if (row <= 0) {
      //       //如果没有选中行
      //       this.$Message.error('请选择一行数据')
      //       return
      //     }
      //     let locationCode = row[0].locationCode
      //     let palletCode = row[0].palletCode
      //     this.http.get(`/api/Task/CreateAndSendOutboundTask?locationCode=${locationCode}&palletCode=${palletCode}`, {}, "正在创建任务").then((res) => {
      //       //示例:调用后台接口
      //       if (res.status) {
      //         this.$Message.success('创建任务成功')
      //       } else {
      //         this.$Message.error(res.message) //错误提示
      //       }
      //     })
      //   }
      // })
      //示例:设置修改新建、编辑弹出框字段标签的长度
      this.boxOptions.labelWidth = 150
      // this.columns.push({
      //   title: "操作",
      //   field: "操作",
      //   width: 150,
      //   align: "left", // 'center',
      //   render: (h, { row, column, index }) => {
      //     return (
      //       <div>
      //         <el-button
      //           onClick={($e) => {
      //             this.$refs.gridHeader.openModel1(row);
      //           }}
      //           type="primary"
      //           plain
      //           style="height:26px; padding: 10px !important;"
      //         >
      //           æŸ¥çœ‹åº“存明细
      //         </el-button>
      //       </div>
      //     );
      //   },
      // });
      this.columns.forEach((column) => {
        //修改颜色
        if (column.field == 'roadwayNo') {
          column.formatter = (row) => {
            // return '<span style="color: #2d8cf0;">' + row?.locationInfo?.roadwayNo + '</span>'
            return  row?.locationInfo?.roadwayNo
          }
        }
        if (column.field == 'materielCode') {
          column.formatter = (row) => {
            // return '<span style="color: #2d8cf0;">' + row?.locationInfo?.roadwayNo + '</span>'
            return  row?.stockInfoDetails[0]?.materielCode
          }
        }
        //格式化日期
        // æ£€æŸ¥å½“前列的字段是否为 'locationStatus'
        if (column.field == 'locationStatus') {
          // ä½¿ç”¨å¯¹è±¡å­—面量来映射 'locationStatus' çš„值和对应的文本
          const statusMap = {
            '-1': '全部',
            '0': '空闲',
            '1': '锁定',
            '2': '有货',
            '3': '有货禁用',
            '4': '无货禁用'
          };
          // å®šä¹‰ä¸€ä¸ªæ ¼å¼åŒ–函数,根据 'locationStatus' çš„值返回相应的文本
          column.formatter = (row) => {
            // ä½¿ç”¨ statusMap å¯¹è±¡æ¥èŽ·å–å¯¹åº”çš„æ–‡æœ¬ï¼Œå¦‚æžœæ²¡æœ‰åŒ¹é…åˆ™è¿”å›ž '未知状态'
            return statusMap[row?.locationInfo?.locationStatus] || '未知状态';
          }
        }
      })
    },
    onInited() {
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      this.detailOptions.columns.forEach(column=>{
        console.log(column)
      });
    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false,则不会执行查询
      return true
    },
    searchAfter(result) {
     console.log(result)
      return true
    },
    addBefore(formData) {
      //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
      return true
    },
    updateBefore(formData) {
      //编辑保存前formData为对象,包括明细表、删除行的Id
      return true
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
      //(1)判断是编辑还是新建操作: this.currentAction=='Add';
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段='xxx';
      //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看:console.log(this.editFormOptions)
    }
  }
}
export default extension
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js
@@ -29,6 +29,14 @@
    }
  },
  {
    path: '/Dt_LocationStatus',
    name: 'Dt_LocationStatus',
    component: () => import('@/views/widesea_wms/basicinfo/LocationStatusChange.vue'),
    meta: {
    }
  },
  {
    path: '/Dt_InboundOrderDetail',
    name: 'Dt_InboundOrderDetail',
    component: () => import('@/views/widesea_wms/invoices/Dt_InboundOrderDetail.vue'),
@@ -260,6 +268,13 @@
    meta: {
      keepAlive: false
    }
  },{
    path: '/Dt_BillGroupStock_Hty',
    name: 'Dt_BillGroupStock_Hty',
    component: () => import('@/views/widesea_wms/stock/Dt_BillGroupStock_Hty.vue'),
    meta: {
      keepAlive: false
    }
  },
]
export default tables
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationStatus.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
<!--
*Author:jxx
 *Contact:283591387@qq.com
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 *业务请在@/extension/widesea_wms/basicinfo/Dt_LocationInfo.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/widesea_wms/basicinfo/Dt_LocationInfo.jsx";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'id',
            footer: "Foots",
            cnName: '货位信息',
            name: '/api',
            url: "/Task/LocationStatus",
            sortName: "id"
        });
        const editFormFields = ref({ "locationStatus": "" });
        const editFormOptions = ref([
            [
                { "title": "货位状态", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] },
                { "title": "是否禁用", "field": "enalbeStatus", "type": "select", dataKey: "EnalbeStatus", data: [] },
            ]
        ]);
        const searchFormFields = ref({ "LocationID": "",roadWayNO:"" });
        const searchFormOptions = ref([
            [
                { "title": "货位编号", "field": "locationCode", type: "text" },
                { "title": "货位状态", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] },
                { "title": "巷道编号", "field": "roadWayNO", type: "text" },
            ],
            [
                { "title": "行", "field": "row", type: "text" },
                { "title": "列", "field": "column", "type": "text" },
                { "title": "层", "field": "layer", type: "text" },
            ]
        ]);
        const columns = ref([{ field: 'locationID', title: '货位ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
        { field: 'locationCode', title: '货位编号', type: 'string', width: 110, require: true, align: 'left' },
        { field: 'locationName', title: '货位名称', type: 'string', width: 120, align: 'left' },
        { field: 'roadwayNo', title: '巷道号', type: 'string', width: 110, require: true, align: 'left', sort: true },
        { field: 'row', title: '行', type: 'string', width: 70, align: 'left' },
        { field: 'column', title: '列', type: 'string', width: 70, align: 'left' },
        { field: 'layer', title: '层', type: 'string', width: 110, align: 'left' },
        { field: 'depth', title: '深度', type: 'string', width: 110, align: 'left', hidden: true  },
        { field: 'scNo', title: '对应堆垛机号', type: 'string', width: 110, align: 'left', hidden: true },
        { field: 'locationType', title: '货位类型', type: 'int', width: 110, align: 'left',bind: { key: "LocationType", data: [] } },
        { field: 'locationStatus', title: '货位状态', type: 'int', width: 110, align: 'left', bind: { key: "LocationState", data: [] } },
        { field: 'enalbeStatus', title: '是否禁用', type: 'int', width: 75, align: 'left', bind: { key: "EnalbeStatus", data: [] }},
        // { field: 'isLocked', title: '是否锁定', type: 'bool', width: 110, align: 'left', bind: { key: "IsLocked", data: [] } },
        { field: 'locationDesc', title: '货位描述', type: 'string', width: 110, align: 'left', hidden: true },
        { field: 'remark', title: '检测柜允许', type: 'string', width: 110, align: 'left' ,bind: { key: "AllowStatus", data: [] }},
        { field: 'creater', title: '创建人', type: 'string', sort: true, width: 110, align: 'left' },
        { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
        { field: 'modifier', title: '修改人', type: 'string', sort: true, width: 100, align: 'left' },
        { field: 'modifyDate', title: '修改时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
    ]);
        const detail = ref({
            cnName: "#detailCnName",
            table: "#detailTable",
            columns: [],
            sortName: "",
            key: ""
        });
        return {
            table,
            extend,
            editFormFields,
            editFormOptions,
            searchFormFields,
            searchFormOptions,
            columns,
            detail,
        };
    },
});
</script>
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock_Hty.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
<!--
*Author:jxx
 *Contact:283591387@qq.com
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 *业务请在@/extension/widesea_wms/stock/Dt_BillGroupStock.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/widesea_wms/stock/Dt_BillGroupStock_Hty.jsx";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'id',
            footer: "Foots",
            cnName: '库存历史信息',
            name: 'stock/Dt_BillGroupStock_Hty',
            url: "/StockInfoHty/",
            sortName: "createDate"
        });
        const editFormFields = ref({
            "palletCode": "",
            "productionLine": "",
            "outboundTime": "",
            // "groupType": ""
        });
        const editFormOptions = ref([
            [
                { "title": "托盘条码", "field": "palletCode", type: "text" },
                { "title": "生产产线", "field": "productionLine", type: "text" },
                { "title": "应出库时间", "field": "outboundTime", type: "datetime" },
                // { "title": "组盘类型", "field": "groupType", type: "select", dataKey: "GroupType", data: [] },
            ]
        ]);
        const searchFormFields = ref({});
        const searchFormOptions = ref([
            [
                { "title": "托盘条码", "field": "palletCode", type: "text" },
                { "title": "生产产线", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
                { "title": "库区", "field": "areaCode", type: "select", dataKey: "AreaType", data: [] },
                { "title": "库存类型", "field": "isFull", type: "select", dataKey: "isFull", data: [] },
            ], [
                { "title": "库位号", "field": "locationCode", type: "text" },
                { "title": "巷道", "field": "roadwayNo", type: "text" },
                { "title": "货位状态", "field": "locationStatus", type: "select", dataKey: "LocationState", data: [] },
                { "title": "物料编码", "field": "materielCode", type: "text"},
            ]
        ]);
        const columns = ref(
            [{ field: 'id', title: '库存ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
            { field: 'locationCode', title: '库位', type: 'string', width: 100, align: 'left', },
            { field: 'palletCode', title: '托盘条码', type: 'string', width: 110, align: 'left', },
            { field: 'isFull', title: '库存类型', type: 'bool', width: 60, align: 'left', bind: { key: "isFull", data: [{ key: false, value: '空盘' }, { key: true, value: '实盘' }] }, },
            { field: 'linedProcessFeedbackTime', title: '工艺开始时间', type: 'string', width: 110, align: 'left', },
            { field: 'roadwayNo', title: '巷道', type: 'string', width: 60, align: 'left', sort: true },
            { field: 'materielCode', title: '物料编码', type: 'string', width: 90, align: 'left', sort: true },
            // { field: 'locationStatus', title: '货位状态', type: 'int', width: 60, align: 'left', bind: { key: "LocationState", data: [] } },
            { field: 'specialParameterDuration', title: '工艺时长', type: 'string', width: 60, align: 'left', sort: true },
            { field: 'outboundTime', title: '应出库时间', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'productionLine', title: '生产产线', type: 'string', width: 60, align: 'left', bind: { key: "ProductionLine", data: [] }  },
            { field: 'areaCode', title: '库区', type: 'string', width: 60, align: 'left', bind: { key: "AreaType", data: [] } },
            { field: 'remark', title: '电芯数量', type: 'string', width: 60, align: 'left', },
            { field: 'creater', title: '创建人', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
            { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 150, align: 'left', },
            { field: 'modifier', title: '最后修改人', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
                // { field: 'modifyDate', title: '最后修改时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
            ]
        );
        const detail = ref({
            cnName: "#detailCnName",
            table: "#detailTable",
            columns: [],
            sortName: "",
            key: ""
        });
        return {
            table,
            extend,
            editFormFields,
            editFormOptions,
            searchFormFields,
            searchFormOptions,
            columns,
            detail,
        };
    },
});
</script>
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_OutTime.vue
@@ -7,21 +7,21 @@
 <template>
    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields"
        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
        :table="table" :extend="extend">
    </view-grid>
</template>
<script>
import extend from "@/extension/widesea_wms/stock/Dt_BillGroupStock.jsx";
import extend from "@/extension/widesea_wms/stock/Dt_OutTime.jsx";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'id',
            footer: "Foots",
            cnName: '超时信息',
            name: 'stock/Dt_BillGroupStock',
            url:"/StockInfoTimeout/",
            cnName: '超时库存信息',
            name: 'stock/StockInfoTimeout',
            url: "/StockInfo/",
            sortName: "createDate"
        });
        const editFormFields = ref({
@@ -49,18 +49,18 @@
                { "title": "库位号", "field": "locationCode", type: "text" },
                { "title": "巷道", "field": "roadwayNo", type: "text" },
                { "title": "货位状态", "field": "locationStatus", type: "select", dataKey: "LocationState", data: [] },
                { "title": "出库时间", "field": "outboundTime", type: "datetime"},
                { "title": "物料编码", "field": "materielCode", type: "text"},
            ]
        ]);
        const now = new Date();
        // ç›´æŽ¥å‡åŽ» 3 å°æ—¶ï¼ˆå¯èƒ½è·¨å¤©ï¼ŒDate å¯¹è±¡ä¼šè‡ªåŠ¨å¤„ç†ï¼‰
        now.setHours(now.getHours() - 3);
        const columns = ref(
            [{ field: 'id', title: '库存ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
            { field: 'locationCode', title: '库位', type: 'string', width: 100, align: 'left', },
            { field: 'palletCode', title: '托盘条码', type: 'string', width: 110, align: 'left', },
            { field: 'isFull', title: '库存类型', type: 'bool', width: 80, align: 'left', bind: { key: "isFull", data: [{ key: false, value: '空盘' }, { key: true, value: '实盘' }] }, },
            { field: 'isFull', title: '库存类型', type: 'bool', width: 60, align: 'left', bind: { key: "isFull", data: [{ key: false, value: '空盘' }, { key: true, value: '实盘' }] }, },
            { field: 'linedProcessFeedbackTime', title: '工艺开始时间', type: 'string', width: 110, align: 'left', },
            { field: 'roadwayNo', title: '巷道', type: 'string', width: 60, align: 'left', sort: true },
            { field: 'materielCode', title: '物料编码', type: 'string', width: 90, align: 'left', sort: true },
            { field: 'locationStatus', title: '货位状态', type: 'int', width: 60, align: 'left', bind: { key: "LocationState", data: [] } },
            { field: 'specialParameterDuration', title: '工艺时长', type: 'string', width: 60, align: 'left', sort: true },
            { field: 'outboundTime', title: '应出库时间', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'productionLine', title: '生产产线', type: 'string', width: 60, align: 'left', bind: { key: "ProductionLine", data: [] }  },
@@ -72,7 +72,6 @@
                // { field: 'modifyDate', title: '最后修改时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
            ]
        );
        const detail = ref({
            cnName: "#detailCnName",
            table: "#detailTable",
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue
@@ -83,9 +83,9 @@
        { field: 'dispatchertime', title: '任务下发时间', type: 'datetime', width: 150, align: 'left', sort: true },
        { field: 'operateType', title: '操作类型', type: 'string', width: 110, align: 'left', bind: { key: "operateType", data: [] }},
        { field: 'remark', title: '备注', type: 'string', width: 110, align: 'left',hidden: true, },
        { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
        { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 150, hidden: true,align: 'left', sort: true },
        //{ field: 'modifyDate', title: '修改时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
        { field: 'creater', title: '创建人', type: 'string', sort: true, width: 110, align: 'left' },
        { field: 'creater', title: '完成者', type: 'string', sort: true, width: 110, align: 'left' },
        //{ field: 'modifier', title: '修改人', type: 'string', sort: true, width: 100, align: 'left' },
        { field: 'finishTime', title: '完成时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
        { field: 'locationCode', title: '货位号', type: 'string', width: 110, hidden: true, align: 'left' },
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
@@ -271,4 +271,9 @@
    /// </summary>
    /// <returns></returns>
    WebResponseContent Getproductionstatistics();
    /// <summary>
    /// èŽ·å–è´§ä½çŠ¶æ€ä¸æ˜¯ç©ºé—²ã€æœ‰è´§çš„å…¨éƒ¨è´§ä½
    /// </summary>
    /// <returns></returns>
    WebResponseContent GetLocationStatus();
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1637,6 +1637,20 @@
            return content.Error(ex.Message);
        }
    }
    public WebResponseContent GetLocationStatus()
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            List<DtLocationInfo> LocationList = _locationRepository.Db.Queryable<DtLocationInfo>().Where(x => x.LocationStatus != 2 && x.LocationStatus != 0).ToList();
            return content.OK1(total1: LocationList.Count, data: LocationList);
        }
        catch (Exception ex)
        {
            return content.Error(ex.Message);
        }
    }
}
internal class TaskHourData
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
@@ -261,4 +261,13 @@
    {
        return Service.Getproductionstatistics();
    }
    /// <summary>
    /// èŽ·å–ä¸æ˜¯ç©ºé—²ä»¥åŠæœ‰è´§çš„å…¨éƒ¨è´§ä½
    /// </summary>
    /// <returns></returns>
    [HttpPost, AllowAnonymous, Route("LocationStatusgetPageData")]
    public WebResponseContent LocationStatus()
    {
        return Service.GetLocationStatus();
    }
}
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
  <PropertyGroup>
    <DeleteExistingFiles>false</DeleteExistingFiles>
    <ExcludeApp_Data>false</ExcludeApp_Data>
    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <PublishProvider>FileSystem</PublishProvider>
    <PublishUrl>D:\2025å¹´7月4日</PublishUrl>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <_TargetId>Folder</_TargetId>
  </PropertyGroup>
</Project>
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml.user
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
  <PropertyGroup>
    <_PublishTargetUrl>D:\2025å¹´7月4日</_PublishTargetUrl>
    <History>True|2025-07-04T02:32:33.2226066Z||;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -1,49 +1,49 @@
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "urls": "http://*:5000",
  "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
  //连接字符串
  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
  //"ConnectionString": "Data Source=192.168.15.253;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=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=.\\LIULEI;Initial Catalog=WIDESEA_WMSDB_BBMain;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.15.253;Initial Catalog=WIDESEA_WCSDB_BBMain;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=WIDESEA_WCSDB_BBMain;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  //跨域
  "Cors": {
    "PolicyName": "CorsIpAccess", //策略名称
    "EnableAllIPs": true, //当为true时,开放所有IP均可访问。
    // æ”¯æŒå¤šä¸ªåŸŸåç«¯å£ï¼Œæ³¨æ„ç«¯å£å·åŽä¸è¦å¸¦/斜杆:比如localhost:8000/,是错的
    // æ³¨æ„ï¼Œhttp://127.0.0.1:1818 å’Œ http://localhost:1818 æ˜¯ä¸ä¸€æ ·çš„
    "IPs": "http://127.0.0.1:8080,http://localhost:8080,http://127.0.0.1:8081,http://localhost:8081"
  },
  "ApiName": "WIDESEA",
  "ExpMinutes": 120,
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
        }
    },
    "AllowedHosts": "*",
    "urls": "http://*:5000",
    "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
    //连接字符串
    //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
    //"ConnectionString": "Data Source=192.168.15.253;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=WIDESEA_WMSDB_BBMain;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=WIDESEA_WMSDB_BBMain;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.15.253;Initial Catalog=WIDESEA_WCSDB_BBMain;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=WIDESEA_WCSDB_BBMain;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    //跨域
    "Cors": {
        "PolicyName": "CorsIpAccess", //策略名称
        "EnableAllIPs": true, //当为true时,开放所有IP均可访问。
        // æ”¯æŒå¤šä¸ªåŸŸåç«¯å£ï¼Œæ³¨æ„ç«¯å£å·åŽä¸è¦å¸¦/斜杆:比如localhost:8000/,是错的
        // æ³¨æ„ï¼Œhttp://127.0.0.1:1818 å’Œ http://localhost:1818 æ˜¯ä¸ä¸€æ ·çš„
        "IPs": "http://127.0.0.1:8080,http://localhost:8080,http://127.0.0.1:8081,http://localhost:8081"
    },
    "ApiName": "WIDESEA",
    "ExpMinutes": 120,
  // éœ€è¦ç§»åº“的行
  "TransfertRows": "1,4,5,8",
  "CacheSettings": {
    "UseRedis": false,
    "RedisSettings": {
      "Address": "127.0.0.1:6379",
      "Password": "123456",
      "Db": 9,
      "ClearRedis": true
    }
  },
  // å…è®¸å‡ºåº“的编码
  "OutBoundMateriel": [
    //{
    //    "MaterielCode": "CC01050001348",
    //    "ProductionLine": "ZJ-8",
    //    "ProcessCode": "CH001"
    //}
  ]
    // éœ€è¦ç§»åº“的行
    "TransfertRows": "1,4,5,8",
    "CacheSettings": {
        "UseRedis": false,
        "RedisSettings": {
            "Address": "127.0.0.1:6379",
            "Password": "123456",
            "Db": 9,
            "ClearRedis": true
        }
    },
    // å…è®¸å‡ºåº“的编码
    "OutBoundMateriel": [
        //{
        //    "MaterielCode": "CC01050001348",
        //    "ProductionLine": "ZJ-8",
        //    "ProcessCode": "CH001"
        //}
    ]
}