Browse Source

添加导入

HD_wangm 7 tháng trước cách đây
mục cha
commit
8c9e802ac9

+ 21 - 21
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtWorkOrderController.java

@@ -42,7 +42,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 查询维保工单列表
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:list')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:list')")
     @GetMapping("/list")
     public TableDataInfo list(GxtWorkOrder gxtWorkOrder)
     {
@@ -54,7 +54,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 导出维保工单列表
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:export')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:export')")
     @Log(title = "维保工单", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, GxtWorkOrder gxtWorkOrder)
@@ -67,7 +67,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 导入维保工单数据
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:import')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:import')")
     @Log(title = "维保工单", businessType = BusinessType.IMPORT)
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
@@ -92,7 +92,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 获取维保工单详细信息
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:query')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:query')")
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id)
     {
@@ -102,7 +102,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 新增维保工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:add')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:add')")
     @Log(title = "维保工单", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody GxtWorkOrder gxtWorkOrder)
@@ -113,7 +113,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 修改维保工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:edit')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:edit')")
     @Log(title = "维保工单", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody GxtWorkOrder gxtWorkOrder)
@@ -124,7 +124,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 删除维保工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:remove')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:remove')")
     @Log(title = "维保工单", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{ids}")
     public AjaxResult remove(@PathVariable Long[] ids)
@@ -135,7 +135,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 派单给班组组长
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:assign')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:assign')")
     @Log(title = "派单给班组组长", businessType = BusinessType.UPDATE)
     @PutMapping("/assignToTeamLeader/{id}")
     public AjaxResult assignToTeamLeader(
@@ -149,7 +149,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 班组组长接单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:accept')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:accept')")
     @Log(title = "班组组长接单", businessType = BusinessType.UPDATE)
     @PutMapping("/acceptByTeamLeader/{id}")
     public AjaxResult acceptByTeamLeader(@PathVariable("id") Long id)
@@ -160,7 +160,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 班组组长派单给工作组成员
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:assign')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:assign')")
     @Log(title = "派单给工作组成员", businessType = BusinessType.UPDATE)
     @PutMapping("/assignToWorkGroupMember/{id}")
     public AjaxResult assignToWorkGroupMember(
@@ -174,7 +174,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 工作组成员接单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:accept')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:accept')")
     @Log(title = "工作组成员接单", businessType = BusinessType.UPDATE)
     @PutMapping("/acceptByWorkGroupMember/{id}")
     public AjaxResult acceptByWorkGroupMember(@PathVariable("id") Long id)
@@ -198,7 +198,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 重启工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:restart')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:restart')")
     @Log(title = "重启工单", businessType = BusinessType.UPDATE)
     @PutMapping("/restart/{id}")
     public AjaxResult restart(@PathVariable("id") Long id)
@@ -209,7 +209,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 完成工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:complete')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:complete')")
     @Log(title = "完成工单", businessType = BusinessType.UPDATE)
     @PostMapping("/complete/{id}")
     public AjaxResult complete(@PathVariable("id") Long id, @RequestBody GxtWorkOrder gxtWorkOrder)
@@ -221,7 +221,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 查询工单流转记录
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:query')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:query')")
     @GetMapping("/flow/{orderId}")
     public AjaxResult getFlowList(@PathVariable("orderId") Long orderId)
     {
@@ -232,7 +232,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 接单(支持一次性选择处理人员和检修人员)
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:accept')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:accept')")
     @Log(title = "接单", businessType = BusinessType.UPDATE)
     @PostMapping("/accept/{id}")
     public AjaxResult accept(@PathVariable("id") Long id, @RequestBody GxtWorkOrder gxtWorkOrder)
@@ -244,7 +244,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 开始处理工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:start')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:start')")
     @Log(title = "开始处理", businessType = BusinessType.UPDATE)
     @PostMapping("/start/{id}")
     public AjaxResult start(@PathVariable("id") Long id, @RequestBody GxtWorkOrder gxtWorkOrder)
@@ -256,7 +256,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 暂停工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:pause')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:pause')")
     @Log(title = "暂停工单", businessType = BusinessType.UPDATE)
     @PostMapping("/pause/{id}")
     public AjaxResult pause(@PathVariable("id") Long id, @RequestBody GxtWorkOrder gxtWorkOrder)
@@ -268,7 +268,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 继续处理工单
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:resume')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:resume')")
     @Log(title = "继续处理", businessType = BusinessType.UPDATE)
     @PostMapping("/resume/{id}")
     public AjaxResult resume(@PathVariable("id") Long id, @RequestBody GxtWorkOrder gxtWorkOrder)
@@ -280,7 +280,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 挂起工单申请
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:suspend')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:suspend')")
     @Log(title = "申请挂起", businessType = BusinessType.UPDATE)
     @PostMapping("/suspend/{id}")
     public AjaxResult suspend(@PathVariable("id") Long id, @RequestBody GxtWorkOrder gxtWorkOrder)
@@ -292,7 +292,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 审批挂起申请
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:approve')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:approve')")
     @Log(title = "审批挂起", businessType = BusinessType.UPDATE)
     @PostMapping("/approve/{id}")
     public AjaxResult approve(@PathVariable("id") Long id, @RequestBody GxtWorkOrder gxtWorkOrder)
@@ -304,7 +304,7 @@ public class GxtWorkOrderController extends BaseController
     /**
      * 上传工单附件
      */
-    @PreAuthorize("@ss.hasPermi('gxt:maintenance:order:complete')")
+    @PreAuthorize("@ss.hasPermi('gxt:order:complete')")
     @Log(title = "上传附件", businessType = BusinessType.UPDATE)
     @PostMapping("/uploadAttachments")
     public AjaxResult uploadAttachments(

+ 11 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtWorkOrder.java

@@ -42,6 +42,9 @@ public class GxtWorkOrder extends BaseEntity
     /** 风电场ID */
     private Long pcsStationId;
 
+    /** 风电场父ID */
+    private Long pcsStationPid;
+
     /** 风电场 */
     @Excel(name = "场站")
     private String pcsStationName;
@@ -266,6 +269,14 @@ public class GxtWorkOrder extends BaseEntity
         this.pcsStationId = pcsStationId;
     }
 
+    public Long getPcsStationPid() {
+        return pcsStationPid;
+    }
+
+    public void setPcsStationPid(Long pcsStationPid) {
+        this.pcsStationPid = pcsStationPid;
+    }
+
     public String getPcsStationName() {
         return pcsStationName;
     }

+ 62 - 27
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtWorkOrderServiceImpl.java

@@ -4,6 +4,7 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.ygtx.common.core.domain.entity.SysDept;
 import com.ygtx.common.core.domain.entity.SysRole;
 import com.ygtx.common.core.domain.entity.SysUser;
 import com.ygtx.common.core.domain.model.LoginUser;
@@ -12,6 +13,7 @@ import com.ygtx.common.utils.SecurityUtils;
 import com.ygtx.common.utils.StringUtils;
 import com.ygtx.framework.aspectj.DataScopeAspect;
 import com.ygtx.gxt.domain.*;
+import com.ygtx.system.mapper.SysDeptMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,9 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
     @Autowired
     private GxtWorkOrderAttachmentMapper gxtWorkOrderAttachmentMapper;
 
+    @Autowired
+    private SysDeptMapper deptMapper;
+
     /**
      * 查询维保工单
      *
@@ -619,16 +624,17 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
 //            {
 //                throw new ServiceException("工作负责人不能为空");
 //            }
-
+            String memberNames;
             // 验证检修人员
             if (gxtWorkOrder.getWorkOrderPersonList() == null || gxtWorkOrder.getWorkOrderPersonList().isEmpty())
             {
-                throw new ServiceException("至少需要一名检修人员");
+//                throw new ServiceException("至少需要一名检修人员");
+            } else {
+                memberNames = gxtWorkOrder.getWorkOrderPersonList().stream()
+                        .map(GxtWorkOrderPerson::getNickName)
+                        .collect(java.util.stream.Collectors.joining(","));
+                order.setWorkGroupMemberName(memberNames);
             }
-            String memberNames = gxtWorkOrder.getWorkOrderPersonList().stream()
-                    .map(GxtWorkOrderPerson::getNickName)
-                    .collect(java.util.stream.Collectors.joining(","));
-            order.setWorkGroupMemberName(memberNames);
             int result = gxtWorkOrderMapper.updateGxtWorkOrder(order);
 
             if (result > 0)
@@ -1042,42 +1048,49 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
         }
         int successNum = 0;
         int failureNum = 0;
+        int row = 1;
         StringBuilder successMsg = new StringBuilder();
         StringBuilder failureMsg = new StringBuilder();
         
-        // 获取当前日期的序列序号
-        String dateStr = DateUtils.dateTime(DateUtils.getNowDate()).substring(0, 8); // YYYYMMDD
-        int sequenceNum = 1;
-        
         for (GxtWorkOrder workOrder : workOrderList)
         {
             try
             {
+                row++;
                 if (StringUtils.isEmpty(workOrder.getPcsDeviceName())) {
-                    throw new ServiceException("风机编号不能为空!");
+                    throw new ServiceException("第" + row + "行风机编号不能为空!");
                 }
                 if (StringUtils.isEmpty(workOrder.getPcsStationName())) {
-                    throw new ServiceException("场站不能为空!");
+                    throw new ServiceException("第" + row + "行场站不能为空!");
                 }
 
-                // 根据规则生成工单编码: WB+当前年月日+三位数序列号
-                String workOrderProjectNo = "WB" + dateStr + String.format("%03d", sequenceNum++);
-                
-                // 检查工单编码是否已经存在
-                GxtWorkOrder existingOrder = gxtWorkOrderMapper.selectGxtWorkOrderByCode(workOrderProjectNo);
-                while (existingOrder != null) {
-                    // 序列号自动递增直到找到一个不存在的编码
-                    workOrderProjectNo = "WB" + dateStr + String.format("%03d", sequenceNum++);
-                    existingOrder = gxtWorkOrderMapper.selectGxtWorkOrderByCode(workOrderProjectNo);
+                SysDept dept = deptMapper.selectDeptByDeptName(workOrder.getPcsStationName());
+                if (dept != null) {
+                    workOrder.setPcsStationId(dept.getDeptId());
+                    // 设备场站
+                    if ("4".equals(dept.getLevel())) {
+                        SysDept pDept = deptMapper.selectDeptById(dept.getParentId());
+                        workOrder.setGxtCenterId(pDept.getParentId());
+                        workOrder.setGxtCenter(pDept.getParentName());
+                        workOrder.setPcsStationPid(pDept.getDeptId());
+                    } else if ("3".equals(dept.getLevel())) {
+//                        SysDept pDept = deptMapper.selectDeptById(dept.getDeptId());
+                        workOrder.setGxtCenterId(dept.getParentId());
+                        workOrder.setGxtCenter(dept.getParentName());
+                        workOrder.setPcsStationPid(dept.getDeptId());
+                    }
+                } else {
+                    throw new ServiceException("第" + row + "行该场站不存在!");
                 }
-                
-                // 设置工单编码
-                workOrder.setWorkOrderProjectNo(workOrderProjectNo);
-                
+
                 // 设置创建信息
                 workOrder.setCreateBy(operName);
                 workOrder.setCreateTime(DateUtils.getNowDate());
                 workOrder.setWorkOrderStatus("assigned"); // 默认为待接单状态
+
+                // 设置工单编码
+                String workOrderProjectNo = getWorkOrderProjectNo();
+                workOrder.setWorkOrderProjectNo(workOrderProjectNo);
                 gxtWorkOrderMapper.insertGxtWorkOrder(workOrder);
                 successNum++;
             }
@@ -1090,12 +1103,12 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
         }
         if (failureNum > 0)
         {
-            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            failureMsg.insert(0, "导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
             throw new ServiceException(failureMsg.toString());
         }
         else
         {
-            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+            successMsg.insert(0, "数据已全部导入成功!共 " + successNum + " 条,数据如下:");
         }
         return successMsg.toString();
     }
@@ -1248,4 +1261,26 @@ public class GxtWorkOrderServiceImpl implements IGxtWorkOrderService
             gxtWorkOrder.getParams().put("businessDataScope", businessDataScopeSql);
         }
     }
+
+    // 生成工单编号
+    public String getWorkOrderProjectNo() {
+        // 根据规则生成工单编码: WB+当前年月日+随机三位数
+        String workOrderProjectNo;
+        GxtWorkOrder existingOrder;
+        int maxRetries = 100; // 最多重试100次
+        int retryCount = 0;
+        // 获取当前日期
+        String dateStr = DateUtils.dateTime(DateUtils.getNowDate()).substring(0, 8); // YYYYMMDD
+        do {
+            int randomNum = (int)(Math.random() * 900); // 生成0-999之间的随机数
+            workOrderProjectNo = "WB" + dateStr + randomNum;
+            existingOrder = gxtWorkOrderMapper.selectGxtWorkOrderByCode(workOrderProjectNo);
+            retryCount++;
+        } while (existingOrder != null && retryCount < maxRetries);
+
+        if (existingOrder != null) {
+            throw new ServiceException("无法生成孤立的工单编码,请稍后重试");
+        }
+        return workOrderProjectNo;
+    }
 }

+ 7 - 2
ygtx-gxt/src/main/resources/mapper/gxt/GxtWorkOrderMapper.xml

@@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="gxtCenterId"    column="gxt_center_id"    />
         <result property="gxtCenter"    column="gxt_center"    />
         <result property="pcsStationId"    column="pcs_station_id"    />
+        <result property="pcsStationPid"    column="pcs_station_pid"    />
         <result property="pcsStationName"    column="pcs_station_name"    />
         <result property="pcsDeviceId"    column="pcs_device_id"    />
         <result property="pcsDeviceName"    column="pcs_device_name"    />
@@ -59,8 +60,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectGxtWorkOrderVo">
-        select id, work_order_project_no, work_order_status, gxt_center_id, gxt_center, pcs_station_id, pcs_station_name, 
-               pcs_device_id, pcs_device_name, brand, model, inspection_type, mis_no, plan_start_time, plan_end_time, order_source, assign_time,
+        select id, work_order_project_no, work_order_status, gxt_center_id, gxt_center, pcs_station_id, pcs_station_pid, pcs_station_name, 
+               pcs_device_id, pcs_device_name, e.brand, e.model, inspection_type, mis_no, plan_start_time, plan_end_time, order_source, assign_time,
                assign_user_id, assign_user_name, accept_time, accept_user_id, accept_user_name, real_start_time, real_end_time,
                team_leader_id, team_leader_name, work_group_member_id, work_group_member_name, suspend_reason,
                suspend_time,status_before_suspend, pause_reason, pause_time, restart_time, complete_time, plan_hour,
@@ -69,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         from gxt_work_order t
          left join sys_user u on u.user_name = t.create_by
          left join sys_dept d on u.dept_id = d.dept_id
+         left join gxt_equipment e on t.pcs_device_name = e.equipment_code and t.pcs_station_name = e.station
     </sql>
 
     <select id="selectGxtWorkOrderList" parameterType="GxtWorkOrder" resultMap="GxtWorkOrderResult">
@@ -108,6 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="gxtCenterId != null">gxt_center_id,</if>
             <if test="gxtCenter != null">gxt_center,</if>
             <if test="pcsStationId != null">pcs_station_id,</if>
+            <if test="pcsStationPid != null">pcs_station_pid,</if>
             <if test="pcsStationName != null">pcs_station_name,</if>
             <if test="pcsDeviceId != null">pcs_device_id,</if>
             <if test="pcsDeviceName != null">pcs_device_name,</if>
@@ -160,6 +163,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="gxtCenterId != null">#{gxtCenterId},</if>
             <if test="gxtCenter != null">#{gxtCenter},</if>
             <if test="pcsStationId != null">#{pcsStationId},</if>
+            <if test="pcsStationPid != null">#{pcsStationPid},</if>
             <if test="pcsStationName != null">#{pcsStationName},</if>
             <if test="pcsDeviceId != null">#{pcsDeviceId},</if>
             <if test="pcsDeviceName != null">#{pcsDeviceName},</if>
@@ -216,6 +220,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="gxtCenterId != null">gxt_center_id = #{gxtCenterId},</if>
             <if test="gxtCenter != null">gxt_center = #{gxtCenter},</if>
             <if test="pcsStationId != null">pcs_station_id = #{pcsStationId},</if>
+            <if test="pcsStationPid != null">pcs_station_pid = #{pcsStationPid},</if>
             <if test="pcsStationName != null">pcs_station_name = #{pcsStationName},</if>
             <if test="pcsDeviceId != null">pcs_device_id = #{pcsDeviceId},</if>
             <if test="pcsDeviceName != null">pcs_device_name = #{pcsDeviceName},</if>

+ 2 - 1
ygtx-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -24,7 +24,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	</resultMap>
 	
 	<sql id="selectDeptVo">
-        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.level, d.create_by, d.create_time 
+        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
+               d.del_flag, d.level, d.create_by, d.create_time, (select dept_name from sys_dept where dept_id = d.parent_id) parent_name
         from sys_dept d
     </sql>
     

+ 38 - 563
ygtx-ui/src/views/gxt/gxtOrder/index.vue

@@ -36,24 +36,6 @@
             @keyup.enter="handleQuery"
         />
       </el-form-item>
-<!--      <el-form-item label="工单状态" prop="workOrderStatus" label-position="top">-->
-<!--        <el-select v-model="queryParams.workOrderStatus" placeholder="请选择工单状态" clearable>-->
-<!--          <el-option-->
-<!--              v-for="dict in gxt_work_order_status"-->
-<!--              :key="dict.value"-->
-<!--              :label="dict.label"-->
-<!--              :value="dict.value"-->
-<!--          />-->
-<!--        </el-select>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="工单来源" prop="orderSource">-->
-<!--        <el-input-->
-<!--          v-model="queryParams.orderSource"-->
-<!--          placeholder="请输入工单来源"-->
-<!--          clearable-->
-<!--          @keyup.enter="handleQuery"-->
-<!--        />-->
-<!--      </el-form-item>-->
     </el-form>
     <div style="float: right;">
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -61,14 +43,6 @@
     </div>
 
     <el-row :gutter="10" class="mb8">
-      <!-- <el-col :span="1.5">
-        <el-button
-          type="primary"
-          icon="Plus"
-          @click="handleAdd"
-          v-hasPermi="['worklog:Gxt:order:add']"
-        >手动创建</el-button>
-      </el-col> -->
       <!-- <el-col :span="1.5">
         <el-button
           type="success"
@@ -87,20 +61,20 @@
           v-hasPermi="['worklog:Gxt:order:remove']"
         >删除</el-button>
       </el-col> -->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="info"-->
-<!--          icon="Upload"-->
-<!--          @click="handleImport"-->
-<!--          v-hasPermi="['gxt:maintenance:order:import']"-->
-<!--        >导入</el-button>-->
-<!--      </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="Upload"
+          @click="handleImport"
+          v-hasPermi="['gxt:order:import']"
+        >导入</el-button>
+      </el-col>
 <!--      <el-col :span="1.5">-->
 <!--        <el-button-->
 <!--          type="warning"-->
 <!--          icon="Download"-->
 <!--          @click="handleExport"-->
-<!--          v-hasPermi="['gxt:maintenance:order:export']"-->
+<!--          v-hasPermi="['gxt:order:export']"-->
 <!--        >导出</el-button>-->
 <!--      </el-col>-->
       <!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> -->
@@ -121,7 +95,8 @@
       </el-table-column>
       <el-table-column label="维保类型" align="center" prop="inspectionType" width="100">
         <template #default="scope">
-          <dict-tag :options="gxt_inspection_type" :value="scope.row.inspectionType"/>
+          <dict-tag v-if="scope.row.inspectionType" :options="gxt_inspection_type" :value="scope.row.inspectionType"/>
+          <span v-else>-</span>
         </template>
       </el-table-column>
       <el-table-column label="工单状态" align="center" prop="workOrderStatus" width="100">
@@ -154,23 +129,6 @@
           {{ scope.row.misNo || '-' }}
         </template>
       </el-table-column>
-<!--      <el-table-column label="计划检修日期" align="center" prop="planStartTime" width="160">-->
-<!--        <template #default="scope">-->
-<!--          <span>{{ parseTime(scope.row.planStartTime, '{y}-{m}-{d} {h}:{i}') }}</span>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
-<!--      <el-table-column label="计划结束时间" align="center" prop="planEndTime" width="160">-->
-<!--        <template #default="scope">-->
-<!--          <span>{{ parseTime(scope.row.planEndTime, '{y}-{m}-{d} {h}:{i}') }}</span>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
-<!--      <el-table-column label="工单来源" align="center" prop="orderSource" width="100" />-->
-<!--      <el-table-column label="下发人" align="center" prop="assignUserName" width="100" />-->
-<!--      <el-table-column label="下发时间" align="center" prop="assignTime" width="100" >-->
-<!--        <template #default="scope">-->
-<!--          <span>{{ parseTime(scope.row.assignTime, '{y}-{m}-{d} {h}:{i}') }}</span>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
       <el-table-column label="接单人" align="center" prop="acceptUserName" width="100">
         <template #default="scope">
           {{ scope.row.acceptUserName || '-' }}
@@ -196,84 +154,44 @@
           <span>{{ scope.row.realEndTime ? parseTime(scope.row.realEndTime, '{y}-{m}-{d} {h}:{i}') : '-' }}</span>
         </template>
       </el-table-column>
-<!--      <el-table-column label="班组组长" align="center" prop="teamLeaderName" width="100" />-->
-<!--      <el-table-column label="工作组成员" align="center" prop="workGroupMemberName" width="100" />-->
       <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width" fixed="right" >
         <template #default="scope">
-          <!-- 草稿状态:显示编辑和删除按钮 -->
-          <el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['gxt:maintenance:order:edit']" v-if="scope.row.workOrderStatus === 'draft'">
-            <i class="fa fa-edit"></i>编辑
-          </el-button>
-<!--          <el-button link type="danger" @click="handleDelete(scope.row)" v-if="scope.row.workOrderStatus === 'draft'">-->
-<!--            <i class="fa fa-trash"></i>删除-->
-<!--          </el-button>-->
-
-          <!-- 待派单状态:只显示派单按钮 -->
-          <el-button link type="primary" @click="handleAssign(scope.row)" v-if="scope.row.workOrderStatus === 'to_assign'">
-            <i class="fa fa-user-plus"></i>派单
-          </el-button>
-
           <!-- 已派单状态:只显示确认按钮 -->
-          <el-button link type="success" @click="handleAccept(scope.row)" v-if="scope.row.workOrderStatus === 'assigned'">
+          <el-button link type="success" @click="handleAccept(scope.row)" v-if="scope.row.workOrderStatus === 'assigned'" v-hasPermi="['gxt:order:accept']">
             <i class="fa fa-check"></i>接单
           </el-button>
 
-          <!-- 已接单状态:显示开始、暂停、挂起按钮 -->
-<!--          <el-button link type="success" @click="handleStart(scope.row)" v-if="scope.row.workOrderStatus === 'accepted' || scope.row.workOrderStatus === 'suspended'">-->
-<!--            <i class="fa fa-play"></i>开始-->
-<!--          </el-button>-->
-<!--          <el-button link type="warning" @click="handlePause(scope.row)" v-if="scope.row.workOrderStatus === 'accepted'">-->
-<!--            <i class="fa fa-pause"></i>暂停-->
-<!--          </el-button>-->
-<!--          <el-button link type="danger" @click="handleSuspend(scope.row)" v-if="scope.row.workOrderStatus === 'accepted'">-->
-<!--            <i class="fa fa-stop"></i>挂起-->
-<!--          </el-button>-->
-
-          <!-- 处理中状态:显示暂停、挂起、结束按钮 -->
-<!--          <el-button link type="warning" @click="handlePause(scope.row)" v-if="scope.row.workOrderStatus === 'processing'">-->
-<!--            <i class="fa fa-pause"></i>暂停-->
-<!--          </el-button>-->
-          <el-button link type="danger" @click="handleSuspend(scope.row)" v-if="scope.row.workOrderStatus === 'processing' || scope.row.workOrderStatus === 'to_finish'">
+          <el-button link type="danger" @click="handleSuspend(scope.row)" v-if="scope.row.workOrderStatus === 'processing' || scope.row.workOrderStatus === 'to_finish'" v-hasPermi="['gxt:order:suspend']">
             <i class="fa fa-stop"></i>挂起
           </el-button>
-<!--          <el-button link type="success" @click="handleComplete(scope.row)" v-if="scope.row.workOrderStatus === 'processing'">-->
-<!--            <i class="fa fa-check"></i>结束-->
-<!--          </el-button>-->
+
           <!-- 暂停中状态:显示继续按钮 -->
-          <el-button link type="primary" @click="handleResume(scope.row)" v-if="scope.row.workOrderStatus === 'suspended'">
+          <el-button link type="primary" @click="handleResume(scope.row)" v-if="scope.row.workOrderStatus === 'suspended'" v-hasPermi="['gxt:order:complete']">
             <i class="fa fa-play"></i>恢复
           </el-button>
-<!--          <el-button link type="success" @click="handleResume(scope.row)" v-if="scope.row.workOrderStatus === 'paused'">-->
-<!--            <i class="fa fa-play"></i>继续-->
-<!--          </el-button>-->
-
-<!--          &lt;!&ndash; 已挂起状态:显示重启按钮 &ndash;&gt;-->
-<!--          <el-button link type="primary" @click="handleRestart(scope.row)" v-if="scope.row.workOrderStatus === 'suspended'">-->
-<!--            <i class="fa fa-refresh"></i>重启-->
-<!--          </el-button>-->
 
           <!-- 待审批状态:显示审批按钮 -->
-          <el-button link type="primary" @click="handleApprove(scope.row)" v-if="scope.row.workOrderStatus === 'to_approve'">
+          <el-button link type="primary" @click="handleApprove(scope.row)" v-if="scope.row.workOrderStatus === 'to_approve'" v-hasPermi="['gxt:order:approve']">
             <i class="fa fa-check-circle"></i>审批
           </el-button>
 
           <!-- 待结单状态:显示结单按钮 -->
-          <el-button link type="success" @click="handleFinish(scope.row)" v-if="scope.row.workOrderStatus === 'processing' || scope.row.workOrderStatus === 'to_finish'">
+          <el-button link type="success" @click="handleFinish(scope.row)" v-if="scope.row.workOrderStatus === 'processing' || scope.row.workOrderStatus === 'to_finish'" v-hasPermi="['gxt:order:complete']">
             <i class="fa fa-check"></i>结单
           </el-button>
 
           <!-- 已完成状态:显示评分按钮 -->
-          <el-button link type="warning" @click="handleRate(scope.row)" v-if="scope.row.workOrderStatus === 'completed' && scope.row.score === null">
+          <el-button link type="warning" @click="handleRate(scope.row)" v-if="scope.row.workOrderStatus === 'completed' && scope.row.score === null" v-hasPermi="['gxt:order:complete']">
             <i class="fa fa-star"></i>评分
           </el-button>
 
           <!-- 已完成状态:显示复运按钮 -->
-          <el-button link type="info" @click="handleRestart(scope.row)" v-if="scope.row.workOrderStatus === 'completed' && scope.row.restartTime === null">
+          <el-button link type="info" @click="handleRestart(scope.row)" v-if="scope.row.workOrderStatus === 'completed' && scope.row.restartTime === null" v-hasPermi="['gxt:order:complete']">
             <i class="fa fa-refresh"></i>复运
           </el-button>
 
           <!-- 查看按钮对所有状态都显示 -->
-          <el-button link type="info" @click="handleDetail(scope.row)" v-hasPermi="['gxt:maintenance:order:query']">
+          <el-button link type="info" @click="handleDetail(scope.row)" v-hasPermi="['gxt:order:query']">
             <i class="fa fa-eye"></i>查看
           </el-button>
         </template>
@@ -287,195 +205,6 @@
       v-model:limit="queryParams.pageSize"
       @pagination="getList"
     />
-
-    <!-- 添加或修改维保工单对话框 -->
-    <el-dialog :title="title" v-model="open" width="800px" append-to-body>
-      <el-form ref="orderRef" :model="form" :rules="rules" label-width="120px" label-position="top">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="工单编码" prop="workOrderProjectNo">
-              <el-input v-model="form.workOrderProjectNo" placeholder="请输入工单编码" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="风机编号" prop="pcsDeviceName">
-              <el-input v-model="form.pcsDeviceName" placeholder="请输入风机编号" disabled/>
-            </el-form-item>
-          </el-col>
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="工单状态" prop="workOrderStatus">-->
-<!--              <el-select v-model="form.workOrderStatus" placeholder="请选择工单状态" disabled>-->
-<!--                <el-option-->
-<!--                    v-for="dict in gxt_work_order_status"-->
-<!--                    :key="dict.value"-->
-<!--                    :label="dict.label"-->
-<!--                    :value="dict.value"-->
-<!--                />-->
-<!--              </el-select>-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="维保类型" prop="inspectionType">
-              <el-select v-model="form.inspectionType" placeholder="请选择维保类型">
-                <el-option
-                    v-for="dict in gxt_inspection_type"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="维保中心" prop="gxtCenter">
-              <el-input v-model="form.gxtCenter" placeholder="请输入维保中心" disabled/>
-            </el-form-item>
-          </el-col>
-
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="风电场" prop="pcsStationName">
-              <el-input v-model="form.pcsStationName" placeholder="请输入风电场" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="品牌" prop="brand">
-              <el-input v-model="form.brand" placeholder="请输入品牌" disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="机型" prop="model">-->
-<!--              <el-input v-model="form.model" placeholder="请输入机型" disabled/>-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-          <el-col :span="12">
-            <el-form-item label="MIS系统工单编码" prop="workPlanNo">
-              <el-input v-model="form.workPlanNo" placeholder="请输入MIS系统工单编码" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="计划检修日期" prop="planStartTime">
-              <el-date-picker
-                  v-model="form.planStartTime"
-                  type="datetime"
-                  placeholder="请选择计划检修日期"
-                  value-format="YYYY-MM-DD HH:mm:ss"
-                  style="width: 100%"
-                  disabled
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-<!--        <el-row>-->
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="预计工时(小时)" prop="planHour">-->
-<!--              <el-input-number v-model="form.planHour" placeholder="请输入预计工时" :precision="2" :step="0.5" style="width: 100%" />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--        </el-row>-->
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="维保内容" prop="content">
-              <el-input v-model="form.content" type="textarea" placeholder="请输入维保内容" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-<!--        <el-row>-->
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="故障代码" prop="faultCode">-->
-<!--              <el-input v-model="form.faultCode" placeholder="请输入故障代码" />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="优先级" prop="priorityType">-->
-<!--              <el-input v-model="form.priorityType" placeholder="请输入优先级" type="number" />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--        </el-row>-->
-<!--        <el-row>-->
-<!--          <el-col :span="24">-->
-<!--            <el-form-item label="故障描述" prop="faultDesc">-->
-<!--              <el-input v-model="form.faultDesc" type="textarea" placeholder="请输入故障描述" />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--        </el-row>-->
-<!--        <el-row>-->
-<!--          <el-col :span="12">-->
-<!--            <el-form-item label="工单类型" prop="orderType">-->
-<!--              <el-input v-model="form.orderType" placeholder="请输入工单类型" type="number" />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--        </el-row>-->
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="保存选项">
-              <el-radio-group v-model="form.workOrderStatus" class="ml-4">
-                <el-radio label="draft">保存(继续编辑)</el-radio>
-                <el-radio label="to_assign">保存并提交(待派单)</el-radio>
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
-        </el-row>
-<!--        <el-row>-->
-<!--          <el-col :span="24">-->
-<!--            <el-form-item label="备注" prop="remark">-->
-<!--              <el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--        </el-row>-->
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
-        </div>
-      </template>
-    </el-dialog>
-
-    <!-- 派单对话框 -->
-    <el-dialog title="派单" v-model="assignDialogVisible" width="800px" append-to-body>
-      <el-form ref="assignRef" :model="assignForm" :rules="assignRules" label-width="120px" label-position="top">
-        <el-form-item label="派单给" prop="assignType">
-          <el-radio-group v-model="assignForm.assignType">
-            <el-radio value="teamLeader">班组组长</el-radio>
-            <el-radio value="workGroupMember">工作组成员</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item v-if="assignForm.assignType === 'teamLeader'" label="班组组长" prop="teamLeaderId">
-          <el-select v-model="assignForm.teamLeaderId" placeholder="请选择班组组长" style="width: 100%" @change="handleTeamLeaderChange">
-            <el-option
-              v-for="user in userList"
-              :key="user.userId"
-              :label="user.userName"
-              :value="user.userId"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item v-if="assignForm.assignType === 'workGroupMember'" label="工作组成员" prop="workGroupMemberId">
-          <el-select v-model="assignForm.workGroupMemberId" placeholder="请选择工作组成员" style="width: 100%" @change="handleWorkGroupMemberChange">
-            <el-option
-              v-for="user in userList"
-              :key="user.userId"
-              :label="user.userName"
-              :value="user.userId"
-            />
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitAssign">确 定</el-button>
-          <el-button @click="assignDialogVisible = false">取 消</el-button>
-        </div>
-      </template>
-    </el-dialog>
-
     <!-- 挂起对话框 -->
     <el-dialog title="申请挂起工单" v-model="suspendDialogVisible" width="800px" append-to-body>
       <el-form ref="suspendRef" :model="suspendForm" :rules="suspendRules" label-width="120px" label-position="top">
@@ -522,8 +251,6 @@
             </el-form-item>
           </el-col>
         </el-row>
-
-
       </el-form>
       <template #footer>
         <div class="dialog-footer">
@@ -532,35 +259,6 @@
         </div>
       </template>
     </el-dialog>
-
-    <!-- 暂停对话框 -->
-    <el-dialog title="暂停工单" v-model="pauseDialogVisible" width="800px" append-to-body>
-      <el-form ref="pauseRef" :model="pauseForm" :rules="pauseRules" label-width="120px" label-position="top">
-        <el-form-item label="工单编号">
-          <el-input v-model="pauseForm.orderCode" disabled />
-        </el-form-item>
-        <el-form-item label="暂停原因" prop="pauseReason">
-          <el-select v-model="pauseForm.pauseReason" placeholder="请选择暂停原因" style="width: 100%">
-            <el-option
-              v-for="dict in gxt_pause_reasons"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="详细说明">
-          <el-input v-model="pauseForm.remark" type="textarea" placeholder="请输入详细说明(可选)" :rows="3" />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button @click="pauseDialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitPause">确认暂停</el-button>
-        </div>
-      </template>
-    </el-dialog>
-
     <!-- 接单对话框 -->
     <el-dialog :title="`接单 - ${acceptForm.workOrderProjectNo}`" v-model="acceptDialogVisible" width="800px" append-to-body>
       <div style="max-height: 500px; overflow-y: auto; padding-right: 10px;">
@@ -699,25 +397,6 @@
         </div>
       </template>
     </el-dialog>
-
-    <!-- 结束工单对话框 -->
-    <el-dialog title="结束工单" v-model="completeDialogVisible" width="800px" append-to-body>
-      <div class="text-center py-6">
-        <div class="inline-flex items-center justify-center w-16 h-16 rounded-full bg-blue-100 text-blue-600 mb-4">
-          <i class="fa fa-stop text-2xl"></i>
-        </div>
-        <h4 class="text-lg font-medium mb-2">确定要结束工单吗?</h4>
-        <p class="text-gray-500 mb-4">工单编号:{{ completeForm.orderCode }}</p>
-        <p class="text-gray-500 text-sm">结束后,工单状态将变为"待结单"</p>
-      </div>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button @click="completeDialogVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitComplete">确认结束</el-button>
-        </div>
-      </template>
-    </el-dialog>
-
     <!-- 结单对话框 -->
     <el-dialog title="结单" v-model="finishDialogVisible" width="800px" append-to-body>
       <div class="space-y-4">
@@ -761,18 +440,6 @@
                   <el-input v-model="finishForm.gxtCenter" disabled />
                 </el-form-item>
               </el-col>
-  <!--            <el-col :span="12">-->
-  <!--              <el-form-item label="维保类型">-->
-  <!--                <el-select v-model="finishForm.inspectionType" disabled>-->
-  <!--                  <el-option-->
-  <!--                      v-for="dict in gxt_inspection_type"-->
-  <!--                      :key="dict.value"-->
-  <!--                      :label="dict.label"-->
-  <!--                      :value="dict.value"-->
-  <!--                  />-->
-  <!--                </el-select>-->
-  <!--              </el-form-item>-->
-  <!--            </el-col>-->
             </el-row>
             <el-row :gutter="20">
               <el-col :span="12">
@@ -798,23 +465,6 @@
                 </el-form-item>
               </el-col>
             </el-row>
-  <!--        </el-form>-->
-  <!--        &lt;!&ndash; 处理信息 &ndash;&gt;-->
-  <!--        <h4 class="text-sm font-medium text-gray-800 mb-3">处理信息</h4>-->
-  <!--&lt;!&ndash;        <el-form label-width="100px">&ndash;&gt;-->
-  <!--          <el-row :gutter="20">-->
-  <!--            <el-col :span="12">-->
-  <!--              <el-form-item label="接单人">-->
-  <!--                <el-input v-model="finishForm.acceptUserName" disabled />-->
-  <!--              </el-form-item>-->
-  <!--            </el-col>-->
-  <!--            <el-col :span="12">-->
-  <!--              <el-form-item label="接单时间">-->
-  <!--                <el-input v-model="finishForm.acceptTime" disabled />-->
-  <!--              </el-form-item>-->
-  <!--            </el-col>-->
-  <!--          </el-row>-->
-
           <!-- 维保详情 -->
             <el-row :gutter="20">
               <el-col :span="24">
@@ -823,42 +473,10 @@
                 </el-form-item>
               </el-col>
             </el-row>
-  <!--          <el-row :gutter="20">-->
-  <!--            <el-col :span="12">-->
-  <!--              <el-form-item label="签发人">-->
-  <!--                <el-input v-model="finishForm.issuerName" placeholder="请输入签发人" disabled />-->
-  <!--              </el-form-item>-->
-  <!--            </el-col>-->
-  <!--            <el-col :span="12">-->
-  <!--              <el-form-item label="许可人">-->
-  <!--                <el-input v-model="finishForm.permitterName" placeholder="请输入许可人" disabled />-->
-  <!--              </el-form-item>-->
-  <!--            </el-col>-->
-  <!--          </el-row>-->
-  <!--          <el-row :gutter="20">-->
-  <!--            <el-col :span="12">-->
-  <!--              <el-form-item label="停机时间">-->
-  <!--                <el-date-picker v-model="finishForm.stopTime" type="datetime" placeholder="请选择停机时间" />-->
-  <!--              </el-form-item>-->
-  <!--            </el-col>-->
-  <!--            <el-col :span="12">-->
-  <!--              <el-form-item label="恢复运行时间">-->
-  <!--                <el-date-picker v-model="finishForm.restoreTime" type="datetime" placeholder="请选择恢复运行时间" />-->
-  <!--              </el-form-item>-->
-  <!--            </el-col>-->
-  <!--          </el-row>-->
             <el-row>
               <el-col :span="12">
                 <el-form-item label="工作负责人">
                   <el-input v-model="finishForm.teamLeaderName" disabled />
-  <!--                <el-select v-model="finishForm.teamLeaderId" placeholder="请选择工作负责人" style="width: 100%" @change="(userId) => finishForm.teamLeaderName = userList.find(u => u.userId === userId)?.nickName">-->
-  <!--                  <el-option-->
-  <!--                      v-for="user in userList"-->
-  <!--                      :key="user.userId"-->
-  <!--                      :label="user.nickName"-->
-  <!--                      :value="user.userId"-->
-  <!--                  />-->
-  <!--                </el-select>-->
                 </el-form-item>
               </el-col>
               <el-col :span="12">
@@ -1447,7 +1065,7 @@
               <el-form label-width="100px" label-position="top">
                 <el-row :gutter="20">
                   <el-col :span="24">
-                    <el-form-item label="工单编号">{{ detailData.workOrderProjectNo }}</el-form-item>
+                    <el-form-item label="工单编号">{{ detailData.workOrderProjectNo || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
                     <el-form-item label="工单状态">
@@ -1455,28 +1073,25 @@
                     </el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="风机编号">{{ detailData.pcsDeviceName }}</el-form-item>
+                    <el-form-item label="风机编号">{{ detailData.pcsDeviceName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="维保中心">{{ detailData.gxtCenter }}</el-form-item>
+                    <el-form-item label="维保中心">{{ detailData.gxtCenter || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="场站">{{ detailData.pcsStationName }}</el-form-item>
+                    <el-form-item label="场站">{{ detailData.pcsStationName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="品牌">{{ detailData.brand }}</el-form-item>
+                    <el-form-item label="品牌">{{ detailData.brand || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="机型">{{ detailData.model }}</el-form-item>
+                    <el-form-item label="机型">{{ detailData.model || '-' }}</el-form-item>
                   </el-col>
-<!--                  <el-col :span="24">-->
-<!--                    <el-form-item label="发生时间">{{ parseTime(viewForm.occurTime) }}</el-form-item>-->
-<!--                  </el-col>-->
                   <el-col :span="24">
-                    <el-form-item label="MIS工单编码">{{ detailData.misNo }}</el-form-item>
+                    <el-form-item label="MIS工单编码">{{ detailData.misNo || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="维保内容">{{ detailData.content }}</el-form-item>
+                    <el-form-item label="维保内容">{{ detailData.content || '-' }}</el-form-item>
                   </el-col>
                 </el-row>
               </el-form>
@@ -1504,27 +1119,28 @@
 <!--                    <el-form-item label="接单时间">{{ parseTime(detailData.acceptTime) }}</el-form-item>-->
 <!--                  </el-col>-->
                   <el-col :span="24">
-                    <el-form-item label="工作负责人">{{ detailData.teamLeaderName }}</el-form-item>
+                    <el-form-item label="工作负责人">{{ detailData.teamLeaderName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="检修人员">{{ detailData.workGroupMemberName }}</el-form-item>
+                    <el-form-item label="检修人员">{{ detailData.workGroupMemberName || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
                     <el-form-item label="维保类型">
-                      <dict-tag :options="gxt_inspection_type" :value="detailData.inspectionType" />
+                      <dict-tag v-if="detailData.inspectionType" :options="gxt_inspection_type" :value="detailData.inspectionType" />
+                      <span v-else>-</span>
                     </el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="实际维保内容">{{ detailData.realContent }}</el-form-item>
+                    <el-form-item label="实际维保内容">{{ detailData.realContent || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="得分">{{ detailData.score }}</el-form-item>
+                    <el-form-item label="得分">{{ detailData.score || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="点评">{{ detailData.reviewContent }}</el-form-item>
+                    <el-form-item label="点评">{{ detailData.reviewContent || '-' }}</el-form-item>
                   </el-col>
                   <el-col :span="24">
-                    <el-form-item label="恢复运行时间">{{ parseTime(detailData.restartTime) }}</el-form-item>
+                    <el-form-item label="恢复运行时间">{{ parseTime(detailData.restartTime) || '-' }}</el-form-item>
                   </el-col>
                 </el-row>
               </el-form>
@@ -1873,7 +1489,7 @@ const data = reactive({
     // teamLeaderId: [{ required: true, message: "请选择工作负责人", trigger: "change" }],
     inspectionType: [{ required: true, message: "请选择维保类型", trigger: "change" }],
     realContent: [{ required: true, message: "请输入实际维保内容", trigger: "change" }],
-    memberIds: [{ required: true, message: "请至少选择一名检修人员", trigger: "change" }],
+    // memberIds: [{ required: true, message: "请至少选择一名检修人员", trigger: "change" }],
   },
   restartForm: {
     orderId: undefined,
@@ -2015,24 +1631,6 @@ function handleDetail(row) {
   })
 }
 
-/** 开始处理 */
-function handleStart(row) {
-  startForm.value.orderId = row.id
-  startForm.value.orderCode = row.workOrderProjectNo
-  startForm.value.pcsDeviceName = row.pcsDeviceName
-  startForm.value.content = row.content
-  startDialogVisible.value = true
-}
-
-/** 暂停处理 */
-function handlePause(row) {
-  pauseForm.value.orderId = row.id
-  pauseForm.value.orderCode = row.workOrderProjectNo
-  pauseForm.value.pauseReason = undefined
-  pauseForm.value.remark = undefined
-  pauseDialogVisible.value = true
-}
-
 /** 继续处理 */
 function handleResume(row) {
   resumeForm.value.orderId = row.id
@@ -2040,22 +1638,6 @@ function handleResume(row) {
   resumeDialogVisible.value = true
 }
 
-/** 提交结束 */
-function submitComplete() {
-  const gxtWorkOrder = {
-    id: completeForm.value.orderId,
-    workOrderStatus: 'to_finish'
-  }
-
-  completeWorkOrder(completeForm.value.orderId, gxtWorkOrder).then(response => {
-    completeDialogVisible.value = false
-    proxy.$modal.msgSuccess("工单结束成功")
-    getList()
-  }).catch(error => {
-    proxy.$modal.msgError("工单结束失败:" + (error?.response?.data?.msg || "未知错误"))
-  })
-}
-
 /** 结束工单 */
 function handleComplete(row) {
   completeForm.value.orderId = row.id
@@ -2179,15 +1761,6 @@ function handleRate(row) {
 
 /** 复运 */
 function handleRestart(row) {
-  // restartForm.value.orderId = row.id
-  // restartForm.value.orderCode = row.workOrderProjectNo
-  // restartForm.value.workOrderProjectNo = row.workOrderProjectNo
-  // restartForm.value.pcsDeviceName = row.pcsDeviceName
-  // restartForm.value.inspectionType = row.inspectionType
-  // restartForm.value.content = row.content
-  // restartForm.value.restartTime = undefined
-  // restartForm.value.score = row.score  // 传递 score 字段,供后端判断是否已评分
-  // restartDialogVisible.value = true
   getGxtOrder(row.id).then(response => {
     restartForm.value = response.data
     restartForm.value.orderId = row.id
@@ -2249,30 +1822,6 @@ function submitRestart() {
   })
 }
 
-/** 下拉菜单命令处理 */
-function handleCommand(command, row) {
-  switch (command) {
-    case 'assign':
-      handleAssign(row)
-      break
-    case 'accept':
-      handleAccept(row)
-      break
-    case 'suspend':
-      handleSuspend(row)
-      break
-    case 'restart':
-      handleRestart(row)
-      break
-    case 'complete':
-      handleComplete(row)
-      break
-    case 'flow':
-      handleFlow(row)
-      break
-  }
-}
-
 /** 派单 */
 function handleAssign(row) {
   assignForm.value.orderId = row.id
@@ -2286,43 +1835,6 @@ function handleAssign(row) {
   })
 }
 
-/** 班组组长变更 */
-function handleTeamLeaderChange(userId) {
-  const user = userList.value.find(u => u.userId === userId)
-  if (user) {
-    assignForm.value.teamLeaderName = user.userName
-  }
-}
-
-/** 工作组成员变更 */
-function handleWorkGroupMemberChange(userId) {
-  const user = userList.value.find(u => u.userId === userId)
-  if (user) {
-    assignForm.value.workGroupMemberName = user.userName
-  }
-}
-
-/** 提交派单 */
-function submitAssign() {
-  proxy.$refs["assignRef"].validate(valid => {
-    if (valid) {
-      if (assignForm.value.assignType === 'teamLeader') {
-        assignToTeamLeader(assignForm.value.orderId, assignForm.value.teamLeaderId, assignForm.value.teamLeaderName).then(response => {
-          proxy.$modal.msgSuccess("派单成功")
-          assignDialogVisible.value = false
-          getList()
-        })
-      } else {
-        assignToWorkGroupMember(assignForm.value.orderId, assignForm.value.workGroupMemberId, assignForm.value.workGroupMemberName).then(response => {
-          proxy.$modal.msgSuccess("派单成功")
-          assignDialogVisible.value = false
-          getList()
-        })
-      }
-    }
-  })
-}
-
 /** 接单 */
 function handleAccept(row) {
   getGxtOrder(row.id).then(response => {
@@ -2330,7 +1842,7 @@ function handleAccept(row) {
     acceptForm.value.orderId = row.id
     acceptForm.value.teamLeaderId = undefined
     acceptForm.value.teamLeaderName = undefined
-    listUser({ pageNum: 1, pageSize: 100, deptId: row.pcsStationId }).then(response => {
+    listUser({ pageNum: 1, pageSize: 100, deptId: row.pcsStationPid }).then(response => {
       userList.value = response.rows
       acceptDialogVisible.value = true
       // 打开对话框后重置表单验证错误
@@ -2348,13 +1860,6 @@ function handleSuspend(row) {
     suspendForm.value.orderId = row.id
     suspendDialogVisible.value = true
   })
-  // suspendForm.value.orderId = row.id
-  // suspendForm.value.orderCode = row.workOrderProjectNo
-  // suspendForm.value.pcsDeviceName = row.pcsDeviceName
-  // suspendForm.value.content = row.content
-  // suspendForm.value.suspendReason = undefined
-  // suspendForm.value.remark = undefined
-  // suspendDialogVisible.value = true
 }
 
 /** 检修人员选择变化 */
@@ -2462,16 +1967,6 @@ function submitApprove(approvalStatusValue) {
   approveForm.value.workOrderStatus = approvalStatusValue
   proxy.$refs["approveRef"].validate(valid => {
     if (valid) {
-      // if (approvalStatusValue === 'to_finish' && !approveForm.value.rejectionReason) {
-      //   proxy.$modal.msgError("驳回时审批意见不能为空");
-      //   return;
-      // }
-      // const gxtWorkOrder = {
-      //   id: approveForm.value.orderId,
-      //   workOrderStatus: approveForm.value.workOrderStatus,
-      //   rejectionReason: approveForm.value.rejectionReason
-      // }
-
       approveWorkOrder(approveForm.value.orderId, approveForm.value).then(response => {
         const msg = approveForm.value.workOrderStatus === 'suspended' ? '挂起审批通过' : '挂起审批驳回'
         proxy.$modal.msgSuccess(msg + "成功")
@@ -2505,26 +2000,6 @@ function submitPause() {
   })
 }
 
-/** 重启 */
-// function handleRestart(row) {
-//   proxy.$modal.confirm('确认重启工单?').then(function() {
-//     return restartWorkOrder(row.id)
-//   }).then(() => {
-//     getList()
-//     proxy.$modal.msgSuccess("重启成功")
-//   }).catch(() => {})
-// }
-
-// /** 完成 */
-// function handleComplete(row) {
-//   proxy.$modal.confirm('确认完成工单?').then(function() {
-//     return completeWorkOrder(row.id)
-//   }).then(() => {
-//     getList()
-//     proxy.$modal.msgSuccess("工单已完成")
-//   }).catch(() => {})
-// }
-
 /** 流转记录 */
 function handleFlow(row) {
   getWorkOrderFlow(row.id).then(response => {