yanjinhui
2026-03-10 07d83d2d583f96ddd7df98bbb202c98f3b073cd4
添加前端任务状态枚举,以及历史任务页面
已添加5个文件
已修改3个文件
540 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Client/src/extension/taskinfo/taskHty.js 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Client/src/views/taskinfo/taskHty.vue 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskHtyService.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskHtyController.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/extension/taskinfo/taskHty.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
import gridBody from './extend/taskExecuteDetail.vue'
let extension = {
    components: {
        //查询界面扩展组件
        gridHeader: '',
        gridBody: gridBody,
        gridFooter: '',
        //新建、编辑弹出框扩展组件
        modelHeader: '',
        modelBody: '',
        modelFooter: ''
    },
    tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
    buttons: { view: [], box: [], detail: [] }, //扩展的按钮
    methods: {
        //下面这些方法可以保留也可以删除
        onInit() {
            // this.$Notice.success({ title: this.detailOptions.cnName + ',查询结果', desc: '返回的对象:' + JSON.stringify(data) });
            var previousButton = this.buttons.find((x) => x.value == "Previous");
            if (previousButton) previousButton.hidden = true;
            var nextButton = this.buttons.find((x) => x.value == "Next");
            if (nextButton) nextButton.hidden = true;
            var recoveryButton = this.buttons.find((x) => x.value == "TaskRecovery");
            if (recoveryButton) recoveryButton.hidden = true;
            //扩展页面初始化操作
        },
        onInited() {
            //框架初始化配置后
            //如果要配置明细表,在此方法操作
            //this.detailOptions.columns.forEach(column=>{ });
        },
        searchBefore(param) {
            //界面查询前,可以给param.wheres添加查询参数
            //返回false,则不会执行查询
            return true;
        },
        searchAfter(result) {
            //查询后,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;
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/views/taskinfo/task.vue
@@ -47,14 +47,14 @@
          title: "任务类型",
          field: "taskType",
          type: "selectList",
          dataKey: "taskType",
          dataKey: "TaskTypeEnum",
          data: [],
        },
        {
          title: "任务状态",
          field: "taskState",
          type: "selectList",
          dataKey: "taskState",
          dataKey: "TaskStatusEnum",
          data: [],
        },
      ],
@@ -108,7 +108,7 @@
        type: "int",
        width: 90,
        align: "left",
        bind: { key: "taskType", data: [] },
        bind: { key: "TaskTypeEnum", data: [] },
      },
      {
        field: "taskState",
@@ -116,7 +116,7 @@
        type: "int",
        width: 150,
        align: "left",
        bind: { key: "taskState", data: [] },
        bind: { key: "TaskStatusEnum", data: [] },
      },
      {
        field: "sourceAddress",
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Client/src/views/taskinfo/taskHty.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,288 @@
<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/taskinfo/taskHty.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const table = ref({
      key: "taskId",
      footer: "Foots",
      cnName: "任务历史记录",
      name: "task_Hty",
      url: "/taskHty/",
      sortName: "CreateDate",
    });
    const editFormFields = ref({});
    const editFormOptions = ref([]);
    const searchFormFields = ref({
      taskNum: "",
      wmsTaskNum: "",
      palletCode: "",
      roadway: "",
      taskType: "",
      taskState: "",
      sourceAddress: "",
      targetAddress: "",
      currentAddress: "",
      nextAddress: "",
      rgvTaskId: "",
      creater: "",
      createDate: "",
      operateType: "",
    });
    const searchFormOptions = ref([
      [
        { title: "任务号", field: "taskNum", type: "int" },
        { title: "WMS任务号", field: "wmsTaskNum", type: "like" },
        { title: "托盘编号", field: "palletCode", type: "like" },
        {
          title: "操作类型",
          field: "operateType",
          type: "selectList",
          dataKey: "OperateTypeEnum",
          data: [],
        },
      ],
      [
        { title: "起始地址", field: "sourceAddress", type: "like" },
        { title: "目标地址", field: "targetAddress", type: "like" },
        { title: "当前位置", field: "currentAddress", type: "like" },
        { title: "下一位置", field: "nextAddress", type: "like" },
      ],
      [
        { title: "巷道号", field: "roadway", type: "like" },
        {
          title: "任务类型",
          field: "taskType",
          type: "selectList",
          dataKey: "TaskTypeEnum",
          data: [],
        },
        {
          title: "任务状态",
          field: "taskState",
          type: "selectList",
          dataKey: "TaskStatusEnum",
          data: [],
        },
      ],
      [
        { title: "四向车任务ID", field: "rgvTaskId", type: "int" },
        { title: "创建人", field: "creater", type: "like" },
        { title: "创建时间", field: "createDate", type: "datetime" },
      ],
    ]);
    const columns = ref([
      {
        field: "taskId",
        title: "TaskId",
        type: "int",
        width: 90,
        hidden: true,
        readonly: true,
        require: true,
        align: "left",
      },
      {
        field: "sourceId",
        title: "源任务ID",
        type: "int",
        width: 100,
        align: "left",
        hidden: false,
      },
      {
        field: "operateType",
        title: "操作类型",
        type: "string",
        width: 100,
        align: "left",
        bind: { key: "OperateTypeEnum", data: [] },
      },
      {
        field: "insertTime",
        title: "插入时间",
        type: "datetime",
        width: 150,
        align: "left",
      },
      {
        field: "taskNum",
        title: "任务号",
        type: "int",
        width: 90,
        align: "left",
      },
      {
        field: "wmsTaskNum",
        title: "WMS任务号",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "palletCode",
        title: "托盘编号",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "roadway",
        title: "区域",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "taskType",
        title: "任务类型",
        type: "int",
        width: 90,
        align: "left",
        bind: { key: "TaskTypeEnum", data: [] },
      },
      {
        field: "taskState",
        title: "任务状态",
        type: "int",
        width: 90,
        align: "left",
        bind: { key: "TaskStatusEnum", data: [] },
      },
      {
        field: "sourceAddress",
        title: "起始地址",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "targetAddress",
        title: "目标地址",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "currentAddress",
        title: "当前位置",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "nextAddress",
        title: "下一地址",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "exceptionMessage",
        title: "异常信息",
        type: "string",
        width: 200,
        align: "left",
        hidden: false,
      },
      {
        field: "grade",
        title: "优先级",
        type: "int",
        width: 80,
        align: "left",
      },
      {
        field: "rgvTaskId",
        title: "四向车任务ID",
        type: "int",
        width: 120,
        align: "left",
        hidden: false,
      },
      {
        field: "dispatchertime",
        title: "任务下发时间",
        type: "datetime",
        width: 150,
        align: "left",
      },
      {
        field: "creater",
        title: "创建者",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        width: 150,
        align: "left",
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改日期",
        type: "datetime",
        width: 150,
        align: "left",
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
        width: 150,
        align: "left",
        hidden: false,
      },
    ]);
    const detail = ref({
      cnName: "",
      table: "",
      columns: [],
      sortName: "",
      key: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskHtyService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
#region << ç‰ˆ æœ¬ æ³¨ é‡Š >>
/*----------------------------------------------------------------
 * å‘½åç©ºé—´ï¼šWIDESEAWCS_ITaskInfoService
 * åˆ›å»ºè€…:胡童庆
 * åˆ›å»ºæ—¶é—´ï¼š2024/8/2 16:13:36
 * ç‰ˆæœ¬ï¼šV1.0.0
 * æè¿°ï¼š
 *
 * ----------------------------------------------------------------
 * ä¿®æ”¹äººï¼š
 * ä¿®æ”¹æ—¶é—´ï¼š
 * ç‰ˆæœ¬ï¼šV1.0.1
 * ä¿®æ”¹è¯´æ˜Žï¼š
 *
 *----------------------------------------------------------------*/
#endregion << ç‰ˆ æœ¬ æ³¨ é‡Š >>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_ITaskInfoService
{
    public interface ITaskHtyService : IService<Dt_Task_Hty>
    {
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
@@ -365,6 +365,54 @@
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
                    case "TaskStatusEnum":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(TaskStatusEnum);
                            List<int> enums = Enum.GetValues(typeof(TaskStatusEnum)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(TaskStatusEnum).GetField(((TaskStatusEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
                                    data.Add(new { key = item.ToString(), value = description.Description });
                                }
                                else
                                {
                                    data.Add(new { key = item.ToString(), value = item.ToString() });
                                }
                                index++;
                            }
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
                            case "TaskTypeEnum":
                        {
                            List<object> data = new List<object>();
                            Type type = typeof(TaskTypeEnum);
                            List<int> enums = Enum.GetValues(typeof(TaskTypeEnum)).Cast<int>().ToList();
                            int index = 0;
                            foreach (var item in enums)
                            {
                                FieldInfo? fieldInfo = typeof(TaskTypeEnum).GetField(((TaskTypeEnum)item).ToString());
                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                if (description != null)
                                {
                                    data.Add(new { key = item.ToString(), value = description.Description });
                                }
                                else
                                {
                                    data.Add(new { key = item.ToString(), value = item.ToString() });
                                }
                                index++;
                            }
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
                }
                return result;
            }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskHtyController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseController;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_WCSServer.Controllers.Task
{
    [Route("api/TaskHty")]
    [ApiController]
    public class TaskHtyController : ApiBaseController<ITaskHtyService, Dt_Task_Hty>
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        public TaskHtyController(ITaskHtyService service, IHttpContextAccessor httpContextAccessor) : base(service)
        {
            _httpContextAccessor = httpContextAccessor;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskHtyService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
#region << ç‰ˆ æœ¬ æ³¨ é‡Š >>
/*----------------------------------------------------------------
 * å‘½åç©ºé—´ï¼šWIDESEAWCS_TaskInfoService
 * åˆ›å»ºè€…:胡童庆
 * åˆ›å»ºæ—¶é—´ï¼š2024/8/2 16:13:36
 * ç‰ˆæœ¬ï¼šV1.0.0
 * æè¿°ï¼š
 *
 * ----------------------------------------------------------------
 * ä¿®æ”¹äººï¼š
 * ä¿®æ”¹æ—¶é—´ï¼š
 * ç‰ˆæœ¬ï¼šV1.0.1
 * ä¿®æ”¹è¯´æ˜Žï¼š
 *
 *----------------------------------------------------------------*/
#endregion << ç‰ˆ æœ¬ æ³¨ é‡Š >>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_TaskInfoService
{
    public class TaskHtyService : ServiceBase<Dt_Task_Hty, IRepository<Dt_Task_Hty>>, ITaskHtyService
    {
        public TaskHtyService(IRepository<Dt_Task_Hty> BaseDal) : base(BaseDal)
        {
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -181,11 +181,11 @@
                    {
                        //直接移入历史
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                         content.OK("取消任务成功", dt_Task);
                         content.OK($"取消{dt_Task.WMSTaskNum}任务成功", dt_Task);
                    }
                    else
                    {
                        content.Error($"任务失败{agvContent.data.returnInfo}");
                        content.Error($"任务{dt_Task.WMSTaskNum}失败{agvContent.data.returnInfo}");
                    }
                }
@@ -207,11 +207,11 @@
                    {
                        //直接移入历史
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                         content.OK("取消任务成功", dt_Task);
                         content.OK($"取消{dt_Task.WMSTaskNum}任务成功", dt_Task);
                    }
                    else
                    {
                        content.Error($"任务失败{fOURBOTReturn.data}");
                        content.Error($"任务{dt_Task.WMSTaskNum}失败{fOURBOTReturn.data}");
                    }
                }
                #endregion
@@ -231,11 +231,11 @@
                    {
                        //直接移入历史
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                         content.OK("取消任务成功", dt_Task);
                         content.OK("取消{dt_Task.WMSTaskNum}任务成功", dt_Task);
                    }
                    else
                    {
                         content.Error($"任务失败{hIKROBOTReturn.data}");
                         content.Error($"任务{dt_Task.WMSTaskNum}失败,错误信息:{hIKROBOTReturn.data}");
                    }
                }
@@ -270,7 +270,7 @@
                if (logObject != null)
                {
                    _trackloginfoService.AddTrackLog(logObject, content, $"取消{deviceName}任务", "", "");
                    _trackloginfoService.AddTrackLog(logObject, content, $"取消{deviceName}任务,", "", "");
                }
            }
            return content;
@@ -311,7 +311,6 @@
                    {
                        taskId = dt_Task.WMSTaskNum,
                        reportTime = DateTime.Now.ToString(),
                        district = dt_Task.Roadway,//任务库区
                        priorityCode = updateTaskPriority.taskPriority,
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(UpdateGALAXISTaskGrade));
@@ -322,11 +321,11 @@
                    {
                        BaseDal.UpdateData(dt_Task);
                         content.OK("修改任务优先级成功", dt_Task);
                         content.OK($"修改{dt_Task.WMSTaskNum}任务优先级成功", dt_Task);
                    }
                    else
                    {
                         content.Error($"任务失败{agvContent.data.returnInfo}");
                         content.Error($"{dt_Task.WMSTaskNum}任务失败,错误信息:{agvContent.data.returnInfo}");
                    }
                }
                #endregion
@@ -346,11 +345,11 @@
                    if (fOURBOTReturn.returnCode == 0 && fOURBOTReturn.returnUserMsg == "成功")
                    {
                        BaseDal.UpdateData(dt_Task);
                         content.OK("修改任务优先级成功", dt_Task);
                         content.OK("修改{dt_Task.WMSTaskNum}任务优先级成功", dt_Task);
                    }
                    else
                    {
                         content.Error($"任务失败{fOURBOTReturn.data}");
                         content.Error($"任务{dt_Task.WMSTaskNum}失败,错误信息:{fOURBOTReturn.data}");
                    }
                }
@@ -370,11 +369,11 @@
                    if (hIKROBOTReturn.code == "SUCCESS0" && hIKROBOTReturn.message == "成功")
                    {
                        BaseDal.UpdateData(dt_Task);
                         content.OK("修改任务优先级成功", dt_Task);
                         content.OK("修改{dt_Task.WMSTaskNum}任务优先级成功", dt_Task);
                    }
                    else
                    {
                         content.Error($"任务失败{hIKROBOTReturn.data}");
                         content.Error($"任务{dt_Task.WMSTaskNum}失败,错误信息{hIKROBOTReturn.data}");
                    }
                }
                #endregion