From 1c35f2b1215c136625c3a2eda0c1a50772bddad1 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 23 九月 2025 16:31:14 +0800
Subject: [PATCH] 任务工作档修改

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java    |    2 
 src/main/webapp/views/task/task.html                           |   54 -
 src/main/java/com/zy/asrs/entity/Task.java                     |  483 +++++++++++++++++
 src/main/java/com/zy/asrs/controller/TaskController.java       |   20 
 src/main/webapp/static/js/wrkMast/wrkMast.js                   |   31 -
 src/main/java/com/zy/asrs/entity/TaskDetl.java                 |    3 
 src/main/webapp/views/task/taskDetl.html                       |   93 +++
 /dev/null                                                      |  391 -------------
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java    |  263 +++++++++
 src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java |   37 +
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |    2 
 src/main/webapp/static/js/task/task.js                         |  187 ++++-
 src/main/webapp/views/.DS_Store                                |    0 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java  |   53 +
 src/main/java/com/zy/asrs/service/TaskLogService.java          |    1 
 src/main/webapp/static/js/common.js                            |    1 
 src/main/java/com/zy/asrs/service/TaskService.java             |    5 
 17 files changed, 1,090 insertions(+), 536 deletions(-)

diff --git a/src/main/java/basAreas.sql b/src/main/java/basAreas.sql
deleted file mode 100644
index 3204d1b..0000000
--- a/src/main/java/basAreas.sql
+++ /dev/null
@@ -1,18 +0,0 @@
--- save basAreas record
--- mysql
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas/basAreas.html', 'basAreas绠$悊', null , '2', null , '1');
-
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#view', '鏌ヨ', '', '3', '0', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-add', '鏂板', '', '3', '1', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-edit', '缂栬緫', '', '3', '2', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-delete', '鍒犻櫎', '', '3', '3', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'basAreas#btn-export', '瀵煎嚭', '', '3', '4', '1');
-
--- sqlserver
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas/basAreas.html', N'basAreas绠$悊', null, '2', null, '1');
-
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#view', N'鏌ヨ', '', '3', '0', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-add', N'鏂板', '', '3', '1', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-edit', N'缂栬緫', '', '3', '2', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'basAreas#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/src/main/java/com/zy/asrs/controller/TaskController.java b/src/main/java/com/zy/asrs/controller/TaskController.java
index ba0b172..447233e 100644
--- a/src/main/java/com/zy/asrs/controller/TaskController.java
+++ b/src/main/java/com/zy/asrs/controller/TaskController.java
@@ -85,6 +85,26 @@
         return R.ok();
     }
 
+
+    @RequestMapping("/task/control")
+    @ManagerAuth(memo = "鎵嬪姩澶勭悊宸ヤ綔妗�")
+    public R handControlWrkMast(@RequestParam String workNo,
+                                @RequestParam Integer type){
+        if (type == 1) {
+            taskService.completeWrkMast(workNo, getUserId());
+            return R.ok("宸ヤ綔妗e凡瀹屾垚");
+        } else if (type == 2) {
+            taskService.cancelWrkMast(workNo, getUserId());
+            return R.ok("宸ヤ綔妗e凡鍙栨秷");
+        } else if (type == 3) {
+            taskService.pickWrkMast(workNo, getUserId());
+            return R.ok("宸ヤ綔妗e凡鎷f枡");
+        }
+        return R.ok();
+    }
+
+
+
     @RequestMapping(value = "/task/export/auth")
     @ManagerAuth
     public R export(@RequestBody JSONObject param){
diff --git a/src/main/java/com/zy/asrs/entity/Task.java b/src/main/java/com/zy/asrs/entity/Task.java
index 25536fb..51fff6b 100644
--- a/src/main/java/com/zy/asrs/entity/Task.java
+++ b/src/main/java/com/zy/asrs/entity/Task.java
@@ -4,13 +4,22 @@
 import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.annotations.TableField;
 
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.*;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.experimental.Accessors;
+
 import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 @Data
 @TableName("agv_task")
+@Accessors(chain = true)
 public class Task implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -26,15 +35,479 @@
     @TableField("task_type")
     private String taskType;
 
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Integer wrkNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("inv_wh")
+    private String invWh;
+
+    @ApiModelProperty(value= "")
+    private Date ymd;
+
+    @ApiModelProperty(value= "")
+    private String mk;
+
+    @ApiModelProperty(value= "")
+    @TableField("whs_type")
+    private Integer whsType;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Long wrkSts;
+
+    /**
+     * 鍏ュ嚭搴撶被鍨�
+     */
+    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+    @TableField("io_type")
+    private Integer ioType;
+
+    /**
+     * 鍫嗗灈鏈�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈�")
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("sheet_no")
+    private String sheetNo;
+
+    /**
+     * 浼樺厛绾�
+     */
+    @ApiModelProperty(value= "浼樺厛绾�")
+    @TableField("io_pri")
+    private Double ioPri;
+
+    @ApiModelProperty(value= "")
+    @TableField("wrk_date")
+    private Date wrkDate;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value= "鐩爣搴撲綅")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鐩爣绔�
+     */
+    @ApiModelProperty(value= "鐩爣绔�")
+    @TableField("sta_no")
+    private String staNo;
+
+    /**
+     * 婧愮珯
+     */
+    @ApiModelProperty(value= "婧愮珯")
+    @TableField("source_sta_no")
+    private String sourceStaNo;
+
+    /**
+     * 婧愬簱浣�
+     */
+    @ApiModelProperty(value= "婧愬簱浣�")
+    @TableField("source_loc_no")
+    private String sourceLocNo;
+
+    @ApiModelProperty(value= "")
+    @TableField("loc_sts")
+    private String locSts;
+
+    /**
+     * 鎷f枡
+     */
+    @ApiModelProperty(value= "鎷f枡")
+    private String picking;
+
+    @ApiModelProperty(value= "")
+    @TableField("link_mis")
+    private String linkMis;
+
+    @ApiModelProperty(value= "")
+    @TableField("online_yn")
+    private String onlineYn;
+
+    @ApiModelProperty(value= "")
+    @TableField("upd_mk")
+    private String updMk;
+
+    /**
+     * 閫�鍑�
+     */
+    @ApiModelProperty(value= "閫�鍑�")
+    @TableField("exit_mk")
+    private String exitMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("plt_type")
+    private Integer pltType;
+
+    /**
+     * 绌烘澘
+     */
+    @ApiModelProperty(value= "绌烘澘")
+    @TableField("empty_mk")
+    private String emptyMk;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value= "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    private Date ioTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_type")
+    private Integer ctnType;
+
+    @ApiModelProperty(value= "")
+    private String packed;
+
+    @ApiModelProperty(value= "")
+    @TableField("ove_mk")
+    private String oveMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("mtn_type")
+    private Double mtnType;
+
+    @ApiModelProperty(value= "")
+    @TableField("user_no")
+    private String userNo;
+
+    /**
+     * 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
+    @TableField("crn_str_time")
+    private Date crnStrTime;
+
+    /**
+     * 鍫嗗灈鏈哄仠姝㈡椂闂�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�")
+    @TableField("crn_end_time")
+    private Date crnEndTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("plc_str_time")
+    private Date plcStrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("crn_pos_time")
+    private Date crnPosTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("load_time")
+    private Double loadTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("exp_time")
+    private Double expTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("ref_wrkno")
+    private Double refWrkno;
+
+    /**
+     * 鎷f枡鏃堕棿
+     */
+    @ApiModelProperty(value= "鎷f枡鏃堕棿")
+    @TableField("ref_iotime")
+    private Date refIotime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("pause_mk")
+    private String pauseMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_time")
+    private Date errorTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("error_memo")
+    private String errorMemo;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_kind")
+    private Integer ctnKind;
+
+    @ApiModelProperty(value= "")
+    @TableField("manu_type")
+    private String manuType;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    @ApiModelProperty(value= "")
+    @TableField("sc_weight")
+    private Double scWeight;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_mk")
+    private String logMk;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_time")
+    private Date logErrTime;
+
+    @ApiModelProperty(value= "")
+    @TableField("log_err_memo")
+    private String logErrMemo;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    // Y:閿�鍞鍗曞嚭搴撲换鍔�
+    @ApiModelProperty(value= "")
+    @TableField("Pdc_type")
+    private String PdcType;
+
+    @ApiModelProperty(value= "")
+    @TableField("ctn_no")
+    private String ctnNo;
+
+    /**
+     * 婊℃澘
+     */
+    @ApiModelProperty(value= "婊℃澘")
+    @TableField("full_plt")
+    private String fullPlt;
+
+    /**
+     * 鍏堝叆鍝� / 鍙岄噸鍏ュ簱
+     */
+    @ApiModelProperty(value= "鍏堝叆鍝�")
+    @TableField("pre_have")
+    private String preHave;
+
+    /**
+     * 绌烘搷浣� / 鍙栬揣鏃犵
+     */
+    @ApiModelProperty(value= "绌烘搷浣�")
+    @TableField("take_none")
+    private String takeNone;
+
     public Task() {}
 
-    public Task(String taskType) {
-        this.taskType = taskType;
+    public String getYmd$(){
+        if (Cools.isEmpty(this.ymd)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
     }
 
-//    Task task = new Task(
-//            null    // 浠诲姟绫诲瀷锛� agv  , crn
-//    );
+    public String getWrkSts$(){
+        BasWrkStatusService service = SpringUtils.getBean(BasWrkStatusService.class);
+        BasWrkStatus basWrkStatus = service.selectById(this.wrkSts);
+        if (!Cools.isEmpty(basWrkStatus)){
+            return String.valueOf(basWrkStatus.getWrkDesc());
+        }
+        return null;
+    }
+
+    public String getIoType$(){
+        BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class);
+        BasWrkIotype basWrkIotype = service.selectById(this.ioType);
+        if (!Cools.isEmpty(basWrkIotype)){
+            return String.valueOf(basWrkIotype.getIoDesc());
+        }
+        return null;
+    }
+
+    public String getCrnNo$(){
+        BasCrnpService service = SpringUtils.getBean(BasCrnpService.class);
+        BasCrnp basCrnp = service.selectById(this.crnNo);
+        if (!Cools.isEmpty(basCrnp)){
+            return String.valueOf(basCrnp.getCrnNo());
+        }
+        return null;
+    }
+
+    public String getWrkDate$(){
+        if (Cools.isEmpty(this.wrkDate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
+    }
+
+    public String getLocNo$(){
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.locNo);
+        if (!Cools.isEmpty(locMast)){
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getTaskType$(){
+        if (Cools.isEmpty(this.taskType)){return  null;}
+        if (taskType.equals("agv")) {
+            return "AGV浠诲姟";
+        } else {
+            return "鍫嗗灈鏈轰换鍔�";
+        }
+    }
 
 
+    public String getStaNo$(){
+        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+        BasDevp basDevp = service.selectById(this.staNo);
+        if (!Cools.isEmpty(basDevp)){
+            return String.valueOf(basDevp.getDevNo());
+        }
+        return null;
+    }
+
+    public String getSourceStaNo$(){
+        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+        BasDevp basDevp = service.selectById(this.sourceStaNo);
+        if (!Cools.isEmpty(basDevp)){
+            return String.valueOf(basDevp.getDevNo());
+        }
+        return null;
+    }
+
+    public String getSourceLocNo$(){
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.sourceLocNo);
+        if (!Cools.isEmpty(locMast)){
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getIoTime$(){
+        if (Cools.isEmpty(this.ioTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getCrnStrTime$(){
+        if (Cools.isEmpty(this.crnStrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime);
+    }
+
+    public String getCrnEndTime$(){
+        if (Cools.isEmpty(this.crnEndTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime);
+    }
+
+    public String getPlcStrTime$(){
+        if (Cools.isEmpty(this.plcStrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime);
+    }
+
+    public String getCrnPosTime$(){
+        if (Cools.isEmpty(this.crnPosTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime);
+    }
+
+    public String getRefIotime$(){
+        if (Cools.isEmpty(this.refIotime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
+    }
+
+    public String getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public String getErrorTime$(){
+        if (Cools.isEmpty(this.errorTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
+    }
+
+
+    public String getLogErrTime$(){
+        if (Cools.isEmpty(this.logErrTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/entity/TaskDetl.java b/src/main/java/com/zy/asrs/entity/TaskDetl.java
index cde2747..2467477 100644
--- a/src/main/java/com/zy/asrs/entity/TaskDetl.java
+++ b/src/main/java/com/zy/asrs/entity/TaskDetl.java
@@ -4,6 +4,8 @@
 import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+
+import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 import com.core.common.SpringUtils;
 import com.zy.system.service.UserService;
@@ -22,6 +24,7 @@
 import java.io.Serializable;
 
 @Data
+@Accessors(chain = true)
 @TableName("agv_task_detl")
 public class TaskDetl implements Serializable {
 
diff --git a/src/main/java/com/zy/asrs/service/TaskLogService.java b/src/main/java/com/zy/asrs/service/TaskLogService.java
index 124755b..b855a03 100644
--- a/src/main/java/com/zy/asrs/service/TaskLogService.java
+++ b/src/main/java/com/zy/asrs/service/TaskLogService.java
@@ -5,4 +5,5 @@
 
 public interface TaskLogService extends IService<TaskLog> {
 
+    boolean save(Integer wrkNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/TaskService.java b/src/main/java/com/zy/asrs/service/TaskService.java
index 1525d66..30bb57f 100644
--- a/src/main/java/com/zy/asrs/service/TaskService.java
+++ b/src/main/java/com/zy/asrs/service/TaskService.java
@@ -5,4 +5,9 @@
 
 public interface TaskService extends IService<Task> {
 
+    void completeWrkMast(String workNo, Long userId);
+
+    void cancelWrkMast(String workNo, Long userId);
+
+    void pickWrkMast(String workNo, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index c48df3a..b01b75f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -97,8 +97,15 @@
 
     @Resource
     private OrderDetlPakoutService orderDetlPakoutService;
+
     @Autowired
     private LocCacheService locCacheService;
+
+    @Autowired
+    private TaskService taskService;
+
+    @Autowired
+    private TaskDetlService taskDetlService;
 
     @Override
     @Transactional
@@ -1190,32 +1197,32 @@
         // 鑾峰彇宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
         // 淇濆瓨宸ヤ綔妗�
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-        wrkMast.setTaskType("agv");
-        wrkMast.setIoPri(10D);
-        wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setSourceLocNo(orgSite);
-        wrkMast.setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-        wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
-        wrkMast.setLinkMis("N");
-        wrkMast.setAppeUser(userId);
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiUser(userId);
-        wrkMast.setModiTime(now);
-        if (!wrkMastService.insert(wrkMast)) {
+        Task task = new Task();
+        task.setWrkNo(workNo)
+                .setIoTime(now)
+                .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                .setIoType(11) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+                .setTaskType("agv")
+                .setIoPri(10D)
+                .setLocNo(loc.getLocNo()) // 鐩爣搴撲綅
+                .setFullPlt("Y") // 婊℃澘锛歒
+                .setPicking("N") // 鎷f枡
+                .setExitMk("N")// 閫�鍑�
+                .setSourceLocNo(orgSite)
+                .setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N")// 绌烘澘
+                .setBarcode(barcode)// 鎵樼洏鐮�
+                .setLinkMis("N")
+                .setAppeUser(userId)
+                .setAppeTime(now)
+                .setModiUser(userId)
+                .setModiTime(now);
+        if (!taskService.insert(task)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
 
-        List<WrkDetl> taskDetls = new ArrayList<>();
+        List<TaskDetl> taskDetls = new ArrayList<>();
         detls.forEach(detl -> {
-            WrkDetl wrkDetl = new WrkDetl();
+            TaskDetl wrkDetl = new TaskDetl();
             BeanUtils.copyProperties(detl, wrkDetl);
             wrkDetl.setWrkNo(workNo)
                     .setIoTime(new Date())
@@ -1232,7 +1239,7 @@
             taskDetls.add(wrkDetl);
         });
         //淇濆瓨宸ヤ綔妗f槑缁�
-        if (!wrkDetlService.insertBatch(taskDetls)) {
+        if (!taskDetlService.insertBatch(taskDetls)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
         }
         // 淇敼鐩爣搴撲綅鐘舵��
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
index a413b01..cd66568 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
@@ -1,12 +1,49 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.WrkMastLog;
 import com.zy.asrs.mapper.TaskLogMapper;
 import com.zy.asrs.entity.TaskLog;
 import com.zy.asrs.service.TaskLogService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.service.TaskService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
 
 @Service("taskLogService")
 public class TaskLogServiceImpl extends ServiceImpl<TaskLogMapper, TaskLog> implements TaskLogService {
 
+    @Autowired
+    private TaskService taskService;
+
+    /**
+     * @author Ryan
+     * @date 2025/9/23
+     * @description: 淇濆瓨浠诲姟鏃ュ織
+     * @version 1.0
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean save(Integer wrkNo) {
+        Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", wrkNo));
+        if (Objects.isNull(task)) {
+            throw new CoolException("鏁版嵁閿欒锛氫换鍔′笉瀛樺湪锛侊紒");
+        }
+        TaskLog taskLog = new TaskLog();
+        BeanUtils.copyProperties(task, taskLog);
+        taskLog.setLogId(task.getId());
+
+        if (!this.insert(taskLog)) {
+            throw new CoolException("浠诲姟鏃ュ織淇濆瓨澶辫触锛侊紒");
+        }
+
+        return false;
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index 68b9ca5..154b87d 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -1,12 +1,273 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.TaskMapper;
-import com.zy.asrs.entity.Task;
+import com.zy.asrs.service.TaskLogService;
 import com.zy.asrs.service.TaskService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.utils.OrderInAndOutUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 @Service("taskService")
 public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService {
 
+    @Autowired
+    private TaskLogService taskLogService;
+
+    @Override
+    @Transactional
+    public void completeWrkMast(String workNo, Long userId) {
+        Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo));
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+        }
+        if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
+            throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+        }
+        // 鍏ュ簱 + 搴撲綅杞Щ
+        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
+            wrkMast.setWrkSts(4L);
+            // 鍑哄簱
+        } else if (wrkMast.getWrkSts() > 10) {
+            wrkMast.setWrkSts(14L);
+        }
+        Date now = new Date();
+        wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
+        wrkMast.setCrnEndTime(now);
+        wrkMast.setModiTime(now);
+        wrkMast.setModiUser(userId);
+        // 瀹屾垚鎿嶄綔浜哄憳璁板綍
+        wrkMast.setManuType("鎵嬪姩瀹屾垚");
+        if (!this.updateById(wrkMast)) {
+            throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
+        }
+    }
+
+    @Override
+    @Transactional
+    public void pickWrkMast(String workNo, Long userId) {
+        Task wrkMast = this.selectById(workNo);
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+        }
+        // 鍏ュ嚭搴撶被鍨嬪垽鏂�
+        if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
+            throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�");
+        }
+        // 宸ヤ綔鐘舵�佸垽鏂�
+        if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
+            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
+        }
+        // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+//        if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+//            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+//        }
+        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+        if (!taskLogService.save(wrkMast.getWrkNo())) {
+            throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+        }
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", wrkMast.getIoType() - 50)
+                .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+                .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+        Date now = new Date();
+        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+        Integer staNo = staDesc.getCrnStn();
+        // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+        wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+        wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
+        wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+        wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+        wrkMast.setModiTime(now);
+        wrkMast.setModiUser(userId);
+        if (!wrkMastService.updateById(wrkMast)) {
+            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+        }
+        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+        locMast.setLocSts("Q");
+        locMast.setModiTime(now);
+        locMast.setModiUser(userId);
+        if (!locMastService.updateById(locMast)) {
+            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+        }
+    }
+
+
+
+    @Override
+    @Transactional
+    public void cancelWrkMast(String workNo, Long userId) {
+        Date now = new Date();
+        WrkMast wrkMast = wrkMastService.selectById(workNo);
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+        }
+        String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
+        String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
+        // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
+        if (wrkMast.getWrkSts() < 4) {
+            locNo = wrkMast.getLocNo();
+            locSts = "O";
+
+            // 搴撲綅杞Щ
+            if (wrkMast.getIoType() == 11) {
+                // 搴撲綅杞Щ锛氭簮搴撲綅
+                LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+                if (Cools.isEmpty(locMast)) {
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
+                }
+                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
+                locMast.setModiTime(now);
+                locMast.setModiUser(userId);
+                locMastService.updateById(locMast);
+            }
+            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
+            locNo = wrkMast.getSourceLocNo();
+            // 鍑哄簱 ===>> F.鍦ㄥ簱
+            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
+                locSts = "F";
+                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+            } else if (wrkMast.getIoType() == 110) {
+                locSts = "D";
+                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+            } else if (wrkMast.getIoType() == 11) {
+                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
+                // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
+                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+                if (Cools.isEmpty(locMast)) {
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo());
+                }
+                locMast.setLocSts("O");
+                locMast.setModiTime(now);
+                locMast.setModiUser(userId);
+                locMastService.updateById(locMast);
+            }
+        } else {
+            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
+        }
+
+        //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
+        if (wrkMast.getIoType() == 1) {
+            List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
+            for (WaitPakin waitPakin : waitPakins) {
+                if (!Cools.isEmpty(waitPakin)) {
+                    waitPakin.setIoStatus("N");
+                    waitPakin.setLocNo("");
+                    waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>()
+//                            .eq("order_no", waitPakin.getOrderNo())
+                            .eq("zpallet", waitPakin.getZpallet())
+                            .eq("matnr", waitPakin.getMatnr())
+                            .eq("batch", waitPakin.getBatch()));
+                }
+            }
+        }
+
+        //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
+        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
+            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+            for (WrkDetl wrkDetl : wrkDetls) {
+                if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+//                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+//                        throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+//                    }
+                    OrderInAndOutUtil.decrease(Boolean.FALSE, wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
+                            wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme());
+
+                    //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼
+                    boolean flag = true;
+//                    List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo()));
+                    Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo());
+                    List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId());
+                    for (OrderDetl orderDetl : orderDetls) {
+                        if (orderDetl.getWorkQty() > 0) {
+                            flag = false;
+                        }
+                    }
+                    if (flag) {
+//                        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()));
+                        if (!Cools.isEmpty(order) && order.getSettle() == 2) {
+                            order.setSettle(1L);
+                            order.setUpdateBy(userId);
+                            order.setUpdateTime(now);
+                        }
+//                        if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){
+//                            throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�");
+//                        }
+                        OrderInAndOutUtil.updateOrder(Boolean.FALSE, order.getId(), order.getSettle(), userId);
+                    }
+                }
+            }
+
+        }
+
+//        // 璁㈠崟鍏宠仈
+//        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+//        for (WrkDetl wrkDetl : wrkDetls) {
+//            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+//                if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+//                    throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+//                }
+//                // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
+////                        stockOutRe(wrkMast, wrkDetls);
+//            }
+//        }
+
+        // 鍙栨秷鎿嶄綔浜哄憳璁板綍
+        wrkMast.setManuType("鎵嬪姩鍙栨秷");
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        if (!wrkMastService.updateById(wrkMast)) {
+            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
+        }
+        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+        if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+            throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+        }
+        // 鍒犻櫎宸ヤ綔涓绘。
+        boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
+
+        if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
+            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+//                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+            }
+            // 鍒犻櫎宸ヤ綔妗f槑缁�
+            boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
+        }
+
+        // 淇敼搴撲綅鐘舵��
+        LocMast locMast = locMastService.selectById(locNo);
+        if (Cools.isEmpty(locMast)) {
+            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
+        }
+        locMast.setLocSts(locSts);
+        locMast.setModiTime(now);
+        locMast.setModiUser(userId);
+        boolean locMastRes = locMastService.updateById(locMast);
+        if (!wrkMastRes || !locMastRes) {
+            throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+        }
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index ede2bb1..f3821ff 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -813,7 +813,7 @@
     @Override
     @Transactional
     public void completeWrkMast(String workNo, Long userId) {
-        WrkMast wrkMast = wrkMastService.selectById(workNo);
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 4389d7f..06aec8e 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -108,7 +108,7 @@
             }
 
             Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
-            List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("order_id", list));
+            List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
             if (Objects.isNull(pakins) || pakins.isEmpty()) {
                 throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
             }
diff --git a/src/main/java/locCache.sql b/src/main/java/locCache.sql
deleted file mode 100644
index ccc54fe..0000000
--- a/src/main/java/locCache.sql
+++ /dev/null
@@ -1,18 +0,0 @@
--- save locCache record
--- mysql
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache/locCache.html', '缂撳瓨搴撳尯', null , '2', null , '1');
-
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#view', '鏌ヨ', '', '3', '0', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-add', '鏂板', '', '3', '1', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-edit', '缂栬緫', '', '3', '2', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-delete', '鍒犻櫎', '', '3', '3', '1');
-insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'locCache#btn-export', '瀵煎嚭', '', '3', '4', '1');
-
--- sqlserver
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache/locCache.html', N'缂撳瓨搴撳尯', null, '2', null, '1');
-
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#view', N'鏌ヨ', '90594', '3', '0', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-add', N'鏂板', '90594', '3', '1', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-edit', N'缂栬緫', '90594', '3', '2', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-delete', N'鍒犻櫎', '90594', '3', '3', '1');
-insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'locCache#btn-export', N'瀵煎嚭', '90594', '3', '4', '1');
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index a6cda0d..9328d87 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -249,7 +249,6 @@
     ,{field: 'batch', align: 'center',title: '璐у搧鐗瑰緛', sort:true}
     ,{field: 'anfme', align: 'center',title: '鏁伴噺', hide: false}
     ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: false}
-
     ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false}
     ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
     ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
diff --git a/src/main/webapp/static/js/task/task.js b/src/main/webapp/static/js/task/task.js
index ff17d6e..f1b3380 100644
--- a/src/main/webapp/static/js/task/task.js
+++ b/src/main/webapp/static/js/task/task.js
@@ -1,7 +1,7 @@
 var pageCurr;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
+}).use(['table', 'laydate', 'form', 'admin'], function () {
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
@@ -13,7 +13,7 @@
     tableIns = table.render({
         elem: '#task',
         headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/task/list/auth',
+        url: baseUrl + '/task/list/auth',
         page: true,
         limit: 15,
         limits: [15, 30, 50, 100, 200, 500],
@@ -22,10 +22,23 @@
         height: 'full-120',
         cols: [[
             {type: 'checkbox'}
-            ,{field: 'id', align: 'center',title: ''}
-            ,{field: 'taskType', align: 'center',title: '浠诲姟绫诲瀷锛� agv  , crn'}
-
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+            , {field: 'wrkNo', align: 'center', title: '宸ヤ綔鍙�', sort: true, width: 115}
+            , {field: 'ioTime$', align: 'center', title: '宸ヤ綔鏃堕棿', sort: true, width: 160}
+            , {field: 'wrkSts$', align: 'center', title: '宸ヤ綔鐘舵��', width: 150}
+            , {field: 'ioType$', align: 'center', title: '鍏ュ嚭搴撶被鍨�', width: 150}
+            , {field: 'ioPri', align: 'center', title: '浼樺厛绾�'}
+            , {field: 'taskType$', align: 'center', title: '浠诲姟绫诲瀷'}
+            , {field: 'crnNo$', align: 'center', title: '鍫嗗灈鏈�', hide: true}
+            , {field: 'sourceStaNo$', align: 'center', title: '婧愮珯'}
+            , {field: 'staNo$', align: 'center', title: '鐩爣绔�'}
+            , {field: 'sourceLocNo', align: 'center', title: '婧愬簱浣�'}
+            , {field: 'locNo', align: 'center', title: '鐩爣搴撲綅'}
+            , {field: 'barcode', align: 'center', title: '鏉$爜'}
+            , {field: 'preHave', align: 'center', title: '鍏堝叆鍝�', hide: true}
+            , {field: 'takeNone', align: 'center', title: '绌烘搷浣�', hide: true}
+            , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}
+            , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿', hide: true, width: 160}
+            , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 250}
         ]],
         request: {
             pageName: 'curr',
@@ -42,11 +55,11 @@
         response: {
             statusCode: 200
         },
-        done: function(res, curr, count) {
+        done: function (res, curr, count) {
             if (res.code === 403) {
-                top.location.href = baseUrl+"/";
+                top.location.href = baseUrl + "/";
             }
-            pageCurr=curr;
+            pageCurr = curr;
             limit();
         }
     });
@@ -54,7 +67,7 @@
     // 鐩戝惉鎺掑簭浜嬩欢
     table.on('sort(task)', function (obj) {
         var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
+        $.each($('#search-box [name]').serializeArray(), function () {
             searchData[this.name] = this.value;
         });
         searchData['orderByField'] = obj.field;
@@ -68,23 +81,23 @@
     // 鐩戝惉澶村伐鍏锋爮浜嬩欢
     table.on('toolbar(task)', function (obj) {
         var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
+        switch (obj.event) {
             case 'addData':
                 showEditModel();
                 break;
             case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
+                if (checkStatus.length === 0) {
+                    layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                    return;
+                }
+                del(checkStatus.map(function (d) {
+                    return d.id;
+                }));
+                break;
             case 'exportData':
-                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function () {
+                    var titles = [];
+                    var fields = [];
                     obj.config.cols[0].map(function (col) {
                         if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                             titles.push(col.title);
@@ -92,7 +105,7 @@
                         }
                     });
                     var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
+                    $.each($('#search-box [name]').serializeArray(), function () {
                         exportData[this.name] = this.value;
                     });
                     var param = {
@@ -100,18 +113,18 @@
                         'fields': fields
                     };
                     $.ajax({
-                        url: baseUrl+"/task/export/auth",
+                        url: baseUrl + "/task/export/auth",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
+                        dataType: 'json',
+                        contentType: 'application/json;charset=UTF-8',
                         method: 'POST',
                         success: function (res) {
                             layer.closeAll();
                             if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
+                                table.exportFile(titles, res.data, 'xls');
                             } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
+                                top.location.href = baseUrl + "/";
                             } else {
                                 layer.msg(res.msg, {icon: 2})
                             }
@@ -123,17 +136,94 @@
     });
 
     // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(task)', function(obj){
-        var data = obj.data;
+    table.on('tool(task)', function (obj) {
+        let data = obj.data;
         switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
+            // 鏄庣粏灞曠ず
+            case 'detlShow':
+                wrkNo = data.wrkNo;
+                // 寮瑰眰鏄剧ず
+                layer.open({
+                    type: 2,
+                    title: '宸ヤ綔妗f槑缁�',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: true,
+                    content: 'taskDetl.html',
+                    success: function (layero, index) {
+                    }
+                });
                 break;
-            case "del":
-                del([data.id]);
+            // 瀹屾垚
+            case 'complete':
+                layer.confirm('纭瀹屾垚璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細' + data.wrkNo, shadeClose: true}, function () {
+                    http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 1}, function (res) {
+                        $(".layui-laypage-btn")[0].click();
+                        layer.msg(data.wrkNo + res.msg);
+                    })
+                    layer.closeAll();
+                });
+                break;
+            // 鍙栨秷
+            case 'cancel':
+                if (data.pdcType === "Y") {
+                    layer.confirm('褰撳墠浠诲姟鍏宠仈ERP閿�鍞崟锛屽彇娑堝皢閲嶆柊鐢熸垚鍑哄簱浣滀笟锛屾槸鍚︾户缁紵', {
+                        title: '宸ヤ綔鍙凤細' + data.wrkNo,
+                        shadeClose: true
+                    }, function () {
+                        http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) {
+                            $(".layui-laypage-btn")[0].click();
+                            layer.msg(data.wrkNo + res.msg);
+                        })
+                        layer.closeAll();
+                    });
+                } else {
+                    layer.confirm('纭鍙栨秷璇ョ瑪宸ヤ綔妗o紵', {
+                        title: '宸ヤ綔鍙凤細' + data.wrkNo,
+                        shadeClose: true
+                    }, function () {
+                        http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) {
+                            $(".layui-laypage-btn")[0].click();
+                            layer.msg(data.wrkNo + res.msg);
+                        })
+                        layer.closeAll();
+                    });
+                }
+                break;
+            //  鎷f枡鍏ュ簱
+            case 'pick':
+                layer.confirm('鎷f枡鍏ュ簱璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細' + data.wrkNo, shadeClose: true}, function () {
+                    http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 3}, function (res) {
+                        $(".layui-laypage-btn")[0].click();
+                        layer.msg(data.wrkNo + res.msg);
+                    })
+                    layer.closeAll();
+                });
+                break;
+            //  鍏堝叆鍝�
+            case 'preHave':
+                layer.confirm('浠诲姟鍙戠敓鍏堝叆鍝佸紓甯搞�傚闇�閲嶆柊鍏ュ簱锛岃纭繚璐х墿宸叉斁鑷冲爢鍨涙満鍑哄簱绔欙紒', {
+                    title: '宸ヤ綔鍙凤細' + data.wrkNo,
+                    shadeClose: true
+                }, function () {
+                    http.post(baseUrl + "/deal/preHave/start", {wrkNo: data.wrkNo}, function (res) {
+                        $(".layui-laypage-btn")[0].click();
+                        layer.msg(data.wrkNo + res.msg, {icon: 1});
+                    })
+                    layer.closeAll();
+                });
+                break;
+            //  绌烘搷浣�
+            case 'takeNone':
+                layer.confirm('浠诲姟鍙戦�佺┖鎿嶄綔寮傚父锛佹槸鍚︺�傘�傘�傘�傘�傘�傘�傘�傦紵', {
+                    title: '宸ヤ綔鍙凤細' + data.wrkNo,
+                    shadeClose: true
+                }, function () {
+                });
                 break;
         }
     });
+
 
     /* 寮圭獥 - 鏂板銆佷慨鏀� */
     function showEditModel(mData) {
@@ -148,19 +238,19 @@
                 form.on('submit(editSubmit)', function (data) {
                     var loadIndex = layer.load(2);
                     $.ajax({
-                        url: baseUrl+"/task/"+(mData?'update':'add')+"/auth",
+                        url: baseUrl + "/task/" + (mData ? 'update' : 'add') + "/auth",
                         headers: {'token': localStorage.getItem('token')},
                         data: data.field,
                         method: 'POST',
                         success: function (res) {
                             layer.close(loadIndex);
-                            if (res.code === 200){
+                            if (res.code === 200) {
                                 layer.close(dIndex);
                                 layer.msg(res.msg, {icon: 1});
                                 tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl + "/";
+                            } else {
                                 layer.msg(res.msg, {icon: 2});
                             }
                         }
@@ -182,17 +272,17 @@
             layer.close(i);
             var loadIndex = layer.load(2);
             $.ajax({
-                url: baseUrl+"/task/delete/auth",
+                url: baseUrl + "/task/delete/auth",
                 headers: {'token': localStorage.getItem('token')},
                 data: {ids: ids},
                 method: 'POST',
                 success: function (res) {
                     layer.close(loadIndex);
-                    if (res.code === 200){
+                    if (res.code === 200) {
                         layer.msg(res.msg, {icon: 1});
                         tableReload();
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
                     } else {
                         layer.msg(res.msg, {icon: 2});
                     }
@@ -219,28 +309,29 @@
         setTimeout(function () {
             layDate.render({
                 elem: '.layui-laydate-range'
-                ,type: 'datetime'
-                ,range: true
+                , type: 'datetime'
+                , range: true
             });
 
         }, 300);
     }
+
     layDateRender();
 
 });
 
 // 鍏抽棴鍔ㄤ綔
-$(document).on('click','#data-detail-close', function () {
+$(document).on('click', '#data-detail-close', function () {
     parent.layer.closeAll();
 });
 
 function tableReload(child) {
     var searchData = {};
-    $.each($('#search-box [name]').serializeArray(), function() {
+    $.each($('#search-box [name]').serializeArray(), function () {
         searchData[this.name] = this.value;
     });
     tableIns.reload({
         where: searchData,
         page: {curr: pageCurr}
-     });
+    });
 }
diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js
index 60b5e91..39e2ddf 100644
--- a/src/main/webapp/static/js/wrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -34,39 +34,8 @@
             ,{field: 'barcode', align: 'center',title: '鏉$爜'}
             ,{field: 'preHave', align: 'center',title: '鍏堝叆鍝�', hide: true}
             ,{field: 'takeNone', align: 'center',title: '绌烘搷浣�', hide: true}
-            // ,{field: 'picking', align: 'center',title: '鎷f枡', templet:function(row){
-            //         var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
-            //         if(row.picking === 'Y'){html += " checked ";}
-            //         html += ">";
-            //         return html;
-            //     }}
-            // ,{field: 'exitMk', align: 'center',title: '閫�鍑�', templet:function(row){
-            //         var html = "<input value='exitMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
-            //         if(row.exitMk === 'Y'){html += " checked ";}
-            //         html += ">";
-            //         return html;
-            //     }}
-            // ,{field: 'emptyMk', align: 'center',title: '绌烘澘', templet:function(row){
-            //         var html = "<input value='emptyMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
-            //         if(row.emptyMk === 'Y'){html += " checked ";}
-            //         html += ">";
-            //         return html;
-            //     }}
-            //
-            // ,{field: 'crnStrTime$', align: 'center',title: '鍫嗗灈鏈哄惎鍔ㄦ椂闂�'}
-            // ,{field: 'crnEndTime$', align: 'center',title: '鍫嗗灈鏈哄仠姝㈡椂闂�'}
-            // ,{field: 'refIotime$', align: 'center',title: '鎷f枡鏃堕棿'}
             ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
             ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true, width: 160}
-            // ,{field: 'memo', align: 'center',title: '澶囨敞'}
-            //
-            // ,{field: 'fullPlt', align: 'center',title: '婊℃澘', templet:function(row){
-            //         var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
-            //         if(row.fullPlt === 'Y'){html += " checked ";}
-            //         html += ">";
-            //         return html;
-            //     }}
-
             ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:250}
         ]],
         request: {
diff --git a/src/main/webapp/views/.DS_Store b/src/main/webapp/views/.DS_Store
new file mode 100644
index 0000000..0dbb519
--- /dev/null
+++ b/src/main/webapp/views/.DS_Store
Binary files differ
diff --git a/src/main/webapp/views/task/task.html b/src/main/webapp/views/task/task.html
index 25896cc..b3e97a7 100644
--- a/src/main/webapp/views/task/task.html
+++ b/src/main/webapp/views/task/task.html
@@ -22,14 +22,16 @@
                             <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
                         </div>
                     </div>
-                     <div class="layui-inline" style="width: 300px">
+                    <div class="layui-inline" style="width: 300px">
                         <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text"
+                                   placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
                         </div>
                     </div>
                     <div class="layui-inline">
                         <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�"
+                                   autocomplete="off">
                         </div>
                     </div>
                     <div class="layui-inline">&emsp;
@@ -47,17 +49,22 @@
     </div>
 </div>
 
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
 <script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+    {{#if (d.preHave === 'Y' && d.wrkSts === 3) { }}
+    <a class="layui-btn layui-btn-primary layui-border-red layui-btn-xs btn-error" lay-event="preHave">鍏堝叆鍝�</a>
+    {{# } }}
+    {{#if (d.takeNone === 'Y' && d.wrkSts === 12) { }}
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-error" lay-event="takeNone">绌烘搷浣�</a>
+    {{# } }}
+    <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow">鏄庣粏</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-complete" lay-event="complete">瀹屾垚</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-cancel" lay-event="cancel">鍙栨秷</a>
+    {{#if (d.ioType === 103) { }}
+    <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">鎷�</a>
+    {{# } }}
+    {{#if (d.ioType === 107) { }}
+    <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">鐩�</a>
+    {{# } }}
 </script>
 
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
@@ -66,27 +73,6 @@
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/task/task.js" charset="utf-8"></script>
 </body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label">浠诲姟绫诲瀷锛� agv  , crn: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="taskType" placeholder="璇疯緭鍏ヤ换鍔$被鍨嬶細 agv  , crn">
-                    </div>
-                </div>
 
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
 </html>
 
diff --git a/src/main/webapp/views/task/taskDetl.html b/src/main/webapp/views/task/taskDetl.html
new file mode 100644
index 0000000..69e87b4
--- /dev/null
+++ b/src/main/webapp/views/task/taskDetl.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/common.css" media="all">
+    <style>
+    </style>
+</head>
+<body>
+<div class="layui-inline" style="width:31%;margin-top: 20px">
+    <label class="layui-form-label">宸� 浣� 鍙凤細</label>
+    <div class="layui-input-inline">
+        <input id="wrkNo" class="layui-input" type="text" disabled="disabled">
+    </div>
+</div>
+<table class="layui-hide" id="taskDetailByMast" lay-filter="taskDetailByMast"></table>
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
+<script type="text/javascript">
+    var pageCur;
+
+    function getCol() {
+        var cols = [
+            {field: 'wrkNo', align: 'center', title: '宸ヤ綔鍙�'}
+            , {field: 'ioTime$', align: 'center', title: '宸ヤ綔鏃堕棿'}
+        ];
+        cols.push.apply(cols, detlCols);
+        return cols;
+    }
+
+    layui.use(['table', 'laydate', 'form'], function () {
+        table = layui.table;
+        var $ = layui.jquery;
+        var form = layui.form;
+
+        $('#wrkNo').val(parent.wrkNo);
+        // 鏁版嵁娓叉煋
+        tableIns1 = table.render({
+            elem: '#taskDetailByMast',
+            headers: {token: localStorage.getItem('token')},
+            url: baseUrl + '/taskDetl/list/auth',
+            where: {wrk_no: parent.wrkNo},
+            page: true,
+            limit: 16,
+            limits: [16, 30, 50, 100, 200, 500],
+            even: true,
+            toolbar: '#toolbar',
+            cellMinWidth: 50,
+            cols: [getCol()],
+            request: {
+                pageName: 'curr',
+                pageSize: 'limit'
+            },
+            parseData: function (res) {
+                return {
+                    'code': res.code,
+                    'msg': res.msg,
+                    'count': res.data.total,
+                    'data': res.data.records
+                }
+            },
+            response: {
+                statusCode: 200
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
+                }
+                pageCur = curr;
+                form.on('checkbox(tableCheckbox)', function (data) {
+                    var _index = $(data.elem).attr('table-index') || 0;
+                    if (data.elem.checked) {
+                        res.data[_index][data.value] = 'Y';
+                    } else {
+                        res.data[_index][data.value] = 'N';
+                    }
+                });
+            }
+        });
+    });
+</script>
+</html>
+
diff --git a/src/main/webapp/views/taskDetl/taskDetl.html b/src/main/webapp/views/taskDetl/taskDetl.html
deleted file mode 100644
index d38091f..0000000
--- a/src/main/webapp/views/taskDetl/taskDetl.html
+++ /dev/null
@@ -1,391 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <title></title>
-    <meta name="renderer" content="webkit">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
-    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
-    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-card">
-        <div class="layui-card-body">
-            <div class="layui-form toolbar" id="search-box">
-                <div class="layui-form-item">
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
-                        </div>
-                    </div>
-                     <div class="layui-inline" style="width: 300px">
-                        <div class="layui-input-inline">
-                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
-                        </div>
-                    </div>
-                    <div class="layui-inline">&emsp;
-                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
-                            <i class="layui-icon">&#xe615;</i>鎼滅储
-                        </button>
-                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
-                            <i class="layui-icon">&#xe666;</i>閲嶇疆
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <table class="layui-hide" id="taskDetl" lay-filter="taskDetl"></table>
-        </div>
-    </div>
-</div>
-
-<script type="text/html" id="toolbar">
-    <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
-    </div>
-</script>
-
-<script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-</script>
-
-<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../static/js/taskDetl/taskDetl.js" charset="utf-8"></script>
-</body>
-<!-- 琛ㄥ崟寮圭獥 -->
-<script type="text/html" id="editDialog">
-    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
-        <input name="id" type="hidden">
-        <div class="layui-row">
-            <div class="layui-col-md12">
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">宸ヤ綔鍙�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ュ伐浣滃彿" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">宸ヤ綔鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="璇疯緭鍏ュ伐浣滄椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏁伴噺: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="anfme" placeholder="璇疯緭鍏ユ暟閲�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鎵樼洏鏉$爜: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="zpallet" placeholder="璇疯緭鍏ユ墭鐩樻潯鐮�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鍟嗗搧缂栧彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="matnr" placeholder="璇疯緭鍏ュ晢鍝佺紪鍙�" lay-vertype="tips" lay-verify="required">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍟嗗搧鍚嶇О: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="maktx" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鎵瑰彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="batch" placeholder="璇疯緭鍏ユ壒鍙�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗曟嵁缂栧彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="orderNo" placeholder="璇疯緭鍏ュ崟鎹紪鍙�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瑙勬牸: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="specs" placeholder="璇疯緭鍏ヨ鏍�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍨嬪彿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="model" placeholder="璇疯緭鍏ュ瀷鍙�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">棰滆壊: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="color" placeholder="璇疯緭鍏ラ鑹�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍝佺墝: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="brand" placeholder="璇疯緭鍏ュ搧鐗�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗曚綅: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="unit" placeholder="璇疯緭鍏ュ崟浣�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗曚环: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="price" placeholder="璇疯緭鍏ュ崟浠�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">sku: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="sku" placeholder="璇疯緭鍏ku">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗曚綅閲�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="units" placeholder="璇疯緭鍏ュ崟浣嶉噺">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏉$爜: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="barcode" placeholder="璇疯緭鍏ユ潯鐮�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">浜у湴: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="origin" placeholder="璇疯緭鍏ヤ骇鍦�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍘傚: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="manu" placeholder="璇疯緭鍏ュ巶瀹�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鐢熶骇鏃ユ湡: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="manuDate" placeholder="璇疯緭鍏ョ敓浜ф棩鏈�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍝侀」鏁�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="itemNum" placeholder="璇疯緭鍏ュ搧椤规暟">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瀹夊叏搴撳瓨閲�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="safeQty" placeholder="璇疯緭鍏ュ畨鍏ㄥ簱瀛橀噺">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">閲嶉噺: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="weight" placeholder="璇疯緭鍏ラ噸閲�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">闀垮害: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="manLength" placeholder="璇疯緭鍏ラ暱搴�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">浣撶Н: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="volume" placeholder="璇疯緭鍏ヤ綋绉�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">涓夋柟缂栫爜: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="threeCode" placeholder="璇疯緭鍏ヤ笁鏂圭紪鐮�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">渚涘簲鍟�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="supp" placeholder="璇疯緭鍏ヤ緵搴斿晢">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">渚涘簲鍟嗙紪鐮�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="suppCode" placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鏄惁鎵规: </label>
-                    <div class="layui-input-block">
-                        <select name="beBatch">
-                            <option value="">璇烽�夋嫨鏄惁鎵规</option>
-                            <option value="1">鏄�</option>
-                            <option value="0">鍚�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇濊川鏈�: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="deadTime" placeholder="璇疯緭鍏ヤ繚璐ㄦ湡">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">棰勮澶╂暟: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="deadWarn" placeholder="璇疯緭鍏ラ璀﹀ぉ鏁�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍒惰喘: </label>
-                    <div class="layui-input-block">
-                        <select name="source">
-                            <option value="">璇烽�夋嫨鍒惰喘</option>
-                            <option value="1">鍒堕��</option>
-                            <option value="2">閲囪喘</option>
-                            <option value="3">澶栧崗</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">瑕佹眰妫�楠�: </label>
-                    <div class="layui-input-block">
-                        <select name="inspect">
-                            <option value="">璇烽�夋嫨瑕佹眰妫�楠�</option>
-                            <option value="1">鏄�</option>
-                            <option value="0">鍚�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">鍗遍櫓鍝�: </label>
-                    <div class="layui-input-block">
-                        <select name="danger">
-                            <option value="">璇烽�夋嫨鍗遍櫓鍝�</option>
-                            <option value="1">鏄�</option>
-                            <option value="0">鍚�</option>
-                        </select>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼浜哄憳: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
-                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">淇敼鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">娣诲姞浜哄憳: </label>
-                    <div class="layui-input-block cool-auto-complete">
-                        <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
-                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
-                        <div class="cool-auto-complete-window">
-                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">娣诲姞鏃堕棿: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">澶囨敞: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="lineNumber" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="standby1" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="standby2" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="standby3" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="boxType1" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="boxType2" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-                <div class="layui-form-item">
-                    <label class="layui-form-label">: </label>
-                    <div class="layui-input-block">
-                        <input class="layui-input" name="boxType3" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-
-             </div>
-        </div>
-        <hr class="layui-bg-gray">
-        <div class="layui-form-item text-right">
-            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
-            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
-        </div>
-    </form>
-</script>
-</html>
-

--
Gitblit v1.9.1