wlzboy
2026-02-26 f5c900c58513bad824381e69750ac7667ef35de0
feat: 修改增另任务单查询,使用单号查询
9个文件已修改
1个文件已添加
404 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/controller/TaskSyncController.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTask.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTaskMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysEmergencyTaskServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysTaskMapper.xml 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/api/task.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/task/general/detail.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
@@ -95,7 +95,7 @@
        List<SysTask> list;
        if(searchTaskCode != null && !searchTaskCode.trim().isEmpty()){
            // Search across task_code, emergency_info.dispatch_code, and emergency_info.service_code
            list = sysTaskService.selectSysTaskListByMultiCode(queryVO, searchTaskCode);
            list = sysTaskService.selectSysTaskListByMultiCode(queryVO, searchTaskCode.trim());
        } else {
            queryVO.setTaskCode(null);
            list = sysTaskService.selectSysTaskList(queryVO);
ruoyi-system/src/main/java/com/ruoyi/system/controller/TaskSyncController.java
New file
@@ -0,0 +1,89 @@
package com.ruoyi.system.controller;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.service.ILegacyTransferSyncService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * 任务同步控制器
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/task")
public class TaskSyncController {
    private static final Logger log = LoggerFactory.getLogger(TaskSyncController.class);
    @Autowired
    private ILegacyTransferSyncService legacyTransferSyncService;
    /**
     * 从旧系统同步数据到新系统
     *
     * @param serviceOrdID 服务单ID
     * @param dispatchOrdID 调度单ID
     * @return 同步结果
     */
    @PostMapping("/syncFromLegacySystem")
    public AjaxResult syncFromLegacySystem(@RequestBody SyncRequest request) {
        try {
            Long serviceOrdID = request.getServiceOrdID();
            Long dispatchOrdID = request.getDispatchOrdID();
            // 参数验证
            if (serviceOrdID == null || serviceOrdID <= 0) {
                return AjaxResult.error("服务单ID不能为空且必须大于0");
            }
            if (dispatchOrdID == null || dispatchOrdID <= 0) {
                return AjaxResult.error("调度单ID不能为空且必须大于0");
            }
            log.info("开始从旧系统同步数据到新系统: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
            // 调用同步服务
            boolean result = legacyTransferSyncService.syncSingleTransferOrder(serviceOrdID, dispatchOrdID);
            if (result) {
                log.info("从旧系统同步数据成功: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
                return AjaxResult.success("同步成功");
            } else {
                log.error("从旧系统同步数据失败: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
                return AjaxResult.error("同步失败");
            }
        } catch (Exception e) {
            log.error("从旧系统同步数据异常: ServiceOrdID={}, DispatchOrdID={}",
                     request.getServiceOrdID(), request.getDispatchOrdID(), e);
            return AjaxResult.error("同步异常: " + e.getMessage());
        }
    }
    /**
     * 同步请求参数类
     */
    public static class SyncRequest {
        private Long serviceOrdID;
        private Long dispatchOrdID;
        public Long getServiceOrdID() {
            return serviceOrdID;
        }
        public void setServiceOrdID(Long serviceOrdID) {
            this.serviceOrdID = serviceOrdID;
        }
        public Long getDispatchOrdID() {
            return dispatchOrdID;
        }
        public void setDispatchOrdID(Long dispatchOrdID) {
            this.dispatchOrdID = dispatchOrdID;
        }
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTask.java
@@ -143,6 +143,27 @@
    public void setShowTaskCode(String showTaskCode) {
         showTaskCode=this.showTaskCode;
    }
    // 用于SQL映射的字段(多码查询优化)
    //这些字段接收SQL查询中计算出的dispatchCode和serviceCode值
    private String dispatchCode;
    private String serviceCode;
    public String getDispatchCode() {
        return dispatchCode;
    }
    public void setDispatchCode(String dispatchCode) {
        this.dispatchCode = dispatchCode;
    }
    public String getServiceCode() {
        return serviceCode;
    }
    public void setServiceCode(String serviceCode) {
        this.serviceCode = serviceCode;
    }
    /**
     * 获取显示任务编号,优先返回急救转运的调度单编号,其次是服务单编号,最后是任务编号
     */
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.java
@@ -173,7 +173,10 @@
    public String getServiceCode(){
        if(this.legacyServiceOrdClass!=null && this.legacyServiceNsTime!=null && this.legacyServiceOrdNo!=null) {
            String nstime = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, this.legacyServiceNsTime);
            return this.legacyServiceOrdClass + nstime +'-'+ this.legacyServiceOrdNo;
            //serviceOrdNo 这个是数字,固定3位数 ,将32,转成032;将1转成001
            Integer intServiceNo = Integer.valueOf(this.legacyServiceOrdNo);
            String ordNoStr = String.format("%03d", intServiceNo);
            return this.legacyServiceOrdClass + nstime +'-'+ ordNoStr;
        }
        return null;
    }
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTaskMapper.java
@@ -153,8 +153,16 @@
    /**
     * 查询车辆在指定时间范围内的任务列表
     * 
     * @param params 包含vehicleId、startTime、endTime的参数Map
     * @param params包含vehicleId、startTime、endTime的参数Map
     * @return 任务列表
     */
    public List<SysTask> selectVehicleTasksInTimeRange(java.util.Map<String, Object> params);
    /**
     * 优化的多码查询方法,关联sys_task_emergency表并计算dispatchCode和serviceCode
     *
     * @param queryVO 任务查询对象
     * @return 任务管理集合
     */
    public List<SysTask> selectSysTaskListByMultiCodeOptimized(TaskQueryVO queryVO);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysEmergencyTaskServiceImpl.java
@@ -439,6 +439,7 @@
        }
        if (createVO.getPrice() != null) {
            existingInfo.setTransferPrice(createVO.getPrice());
            log.info("任务ID:{},serviceOrdId:{} 更新价格:{}",existingInfo.getTaskId(),existingInfo.getLegacyServiceOrdId(), createVO.getPrice());
        }
        
        // 更新单据类型ID
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
@@ -189,7 +189,7 @@
    }
    /**
     * 根据任务编号、调度单编号或服务单编号查询任务列表
     *根据任务编号、调度单编号或服务单编号查询任务列表(SQL算法下推优化版本)
     * 
     * @param queryVO 任务查询对象
     * @param taskCode 任务编号
@@ -197,52 +197,34 @@
     */
    @Override
    public List<SysTask> selectSysTaskListByMultiCode(TaskQueryVO queryVO, String taskCode) {
        // Create a new query object without the taskCode filter
        TaskQueryVO newQuery = new TaskQueryVO();
        // Copy all properties except taskCode
        try {
            org.springframework.beans.BeanUtils.copyProperties(queryVO, newQuery, "taskCode");
        } catch (Exception e) {
            // If copy fails, manually copy the important fields
            newQuery.setTaskType(queryVO.getTaskType());
            newQuery.setTaskStatus(queryVO.getTaskStatus());
            newQuery.setVehicleNo(queryVO.getVehicleNo());
            newQuery.setCreatorId(queryVO.getCreatorId());
            newQuery.setAssigneeId(queryVO.getAssigneeId());
            newQuery.setDeptId(queryVO.getDeptId());
            newQuery.setDeptIds(queryVO.getDeptIds());
            newQuery.setPlannedStartTimeBegin(queryVO.getPlannedStartTimeBegin());
            newQuery.setPlannedStartTimeEnd(queryVO.getPlannedStartTimeEnd());
            newQuery.setPlannedEndTimeBegin(queryVO.getPlannedEndTimeBegin());
            newQuery.setPlannedEndTimeEnd(queryVO.getPlannedEndTimeEnd());
            newQuery.setOverdue(queryVO.getOverdue());
        }
        // Get all tasks matching the other criteria
        List<SysTask> allTasks = sysTaskMapper.selectSysTaskList(newQuery);
        allTasks.stream().forEach(task -> {
        // 设置任务码用于SQL查询
        queryVO.setTaskCode(taskCode);
        // 使用优化的查询方法,直接在SQL中关联sys_task_emergency表并计算匹配的dispatchCode和serviceCode
        List<SysTask> tasks = sysTaskMapper.selectSysTaskListByMultiCodeOptimized(queryVO);
        // 处理任务分配信息和急救转运扩展信息
        tasks.forEach(task -> {
            bindTaskAssign(task);
            // 对于急救转运任务,使用SQL查询中已计算并匹配好的dispatchCode和serviceCode
            if ("EMERGENCY_TRANSFER".equals(task.getTaskType())) {
                SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(task.getTaskId());
                task.setEmergencyInfo(emergencyInfo);
                // 创建一个临时的emergencyInfo对象,包含从SQL查询结果中获取的计算后的代码
//                SysTaskEmergency emergencyInfo = new SysTaskEmergency();
//                emergencyInfo.setDispatchCode(task.getDispatchCode());
//                emergencyInfo.setServiceCode(task.getServiceCode());
                // 加载完整的扩展信息
                SysTaskEmergency fullEmergencyInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(task.getTaskId());
                if (fullEmergencyInfo != null) {
                    // 保留完整信息,但确保dispatchCode和serviceCode是计算后的值
                    task.setEmergencyInfo(fullEmergencyInfo);
                }
            }
        });
        return allTasks.stream().filter(task -> {
            if (task.getTaskCode() != null && task.getTaskCode().contains(taskCode)) {
                return true;
            }
            bindTaskAssign(task);
            if ("EMERGENCY_TRANSFER".equals(task.getTaskType()) && task.getEmergencyInfo() != null) {
                String dispatchCode = task.getEmergencyInfo().getDispatchCode();
                String serviceCode = task.getEmergencyInfo().getServiceCode();
                return (dispatchCode != null && dispatchCode.contains(taskCode)) ||
                        (serviceCode != null && serviceCode.contains(taskCode));
            }
            return false;
        }).collect(Collectors.toList());
        return tasks;
    }
    /**
@@ -700,6 +682,7 @@
        }
//        task.setAssigneeId(updateVO.getAssigneeId());
        task.setUpdateBy(userName);
        task.setUpdateTime(DateUtils.getNowDate());
ruoyi-system/src/main/resources/mapper/system/SysTaskMapper.xml
@@ -78,6 +78,56 @@
        left join sys_task_vehicle tv on t.task_id = tv.task_id
        left join tb_vehicle_info v on tv.vehicle_id = v.vehicle_id
    </sql>
    <sql id="selectSysTaskVoWithEmergency">
        select t.task_id, t.task_code, t.task_type, t.task_status, t.task_description,
               t.departure_address, t.destination_address, t.departure_longitude, t.departure_latitude,
               t.destination_longitude, t.destination_latitude, t.estimated_distance,
               t.planned_start_time, t.planned_end_time,
               t.actual_start_time, t.actual_end_time, t.creator_id, t.assignee_id, t.dept_id,
               t.create_time, t.update_time, t.create_by, t.update_by, t.remark, t.del_flag, t.legacy_synced,
               u1.nick_name as creator_name, u2.nick_name as assignee_name, d.dept_name,
               (
                   select v2.vehicle_no
                   from sys_task_vehicle tv2
                   left join tb_vehicle_info v2 on tv2.vehicle_id = v2.vehicle_id
                   where tv2.task_id = t.task_id
                   order by tv2.assign_time asc
                   limit 1
               ) as vehicle_no,
               tv.id as tv_id, tv.task_id as tv_task_id, tv.vehicle_id as tv_vehicle_id,
               v.vehicle_no as tv_vehicle_no, v.vehicle_type as tv_vehicle_type,
               v.vehicle_brand as tv_vehicle_brand, v.vehicle_model as tv_vehicle_model,
               tv.assign_time as tv_assign_time, tv.assign_by as tv_assign_by,
               tv.status as tv_status, tv.remark as tv_remark,
               CASE
                   WHEN e.legacy_dispatch_ord_class IS NOT NULL
                        AND e.legacy_dispatch_ns_time IS NOT NULL
                        AND e.legacy_dispatch_ord_no IS NOT NULL
                   THEN CONCAT(e.legacy_dispatch_ord_class,
                               DATE_FORMAT(e.legacy_dispatch_ns_time, '%Y%m%d'),
                               '-',
                               LPAD(CAST(e.legacy_dispatch_ord_no AS CHAR), 3, '0'))
                   ELSE NULL
               END AS dispatch_code,
               CASE
                   WHEN e.legacy_service_ord_class IS NOT NULL
                        AND e.legacy_service_ns_time IS NOT NULL
                        AND e.legacy_service_ord_no IS NOT NULL
                   THEN CONCAT(e.legacy_service_ord_class,
                               DATE_FORMAT(e.legacy_service_ns_time, '%Y%m%d'),
                               '-',
                               LPAD(CAST(e.legacy_service_ord_no AS CHAR), 3, '0'))
                   ELSE NULL
               END AS service_code
        from sys_task t
        left join sys_user u1 on t.creator_id = u1.user_id
        left join sys_user u2 on t.assignee_id = u2.user_id
        left join sys_dept d on t.dept_id = d.dept_id
        left join sys_task_vehicle tv on t.task_id = tv.task_id
        left join tb_vehicle_info v on tv.vehicle_id = v.vehicle_id
        left join sys_task_emergency e on t.task_id = e.task_id
    </sql>
    <select id="selectSysTaskList" parameterType="TaskQueryVO" resultMap="SysTaskResult">
        <include refid="selectSysTaskVo"/>
@@ -383,4 +433,96 @@
          )
        order by t.actual_start_time, t.planned_start_time
    </select>
    <!-- 优化的多码查询方法,关联sys_task_emergency表 -->
    <select id="selectSysTaskListByMultiCodeOptimized" parameterType="TaskQueryVO" resultMap="SysTaskResult">
        <include refid="selectSysTaskVoWithEmergency"/>
        <where>
            t.del_flag = '0'
            <if test="taskCode != null  and taskCode != ''">
                and (
                    t.task_code like concat('%', #{taskCode}, '%')
                    or CASE
                           WHEN e.legacy_dispatch_ord_class IS NOT NULL
                                AND e.legacy_dispatch_ns_time IS NOT NULL
                                AND e.legacy_dispatch_ord_no IS NOT NULL
                           THEN CONCAT(e.legacy_dispatch_ord_class,
                                       DATE_FORMAT(e.legacy_dispatch_ns_time, '%Y%m%d'),
                                       '-',
                                       LPAD(CAST(e.legacy_dispatch_ord_no AS CHAR), 3, '0'))
                           ELSE NULL
                       END like concat('%', #{taskCode}, '%')
                    or CASE
                           WHEN e.legacy_service_ord_class IS NOT NULL
                                AND e.legacy_service_ns_time IS NOT NULL
                                AND e.legacy_service_ord_no IS NOT NULL
                           THEN CONCAT(e.legacy_service_ord_class,
                                       DATE_FORMAT(e.legacy_service_ns_time, '%Y%m%d'),
                                       '-',
                                       LPAD(CAST(e.legacy_service_ord_no AS CHAR), 3, '0'))
                           ELSE NULL
                       END like concat('%', #{taskCode}, '%')
                )
            </if>
            <if test="taskType != null  and taskType != ''"> and t.task_type = #{taskType}</if>
            <if test="taskStatus != null  and taskStatus != ''"> and t.task_status = #{taskStatus}</if>
            <if test="taskStatusList != null and taskStatusList != ''"> and t.task_status in
                <foreach collection="taskStatusList.split(',')" item="status" open="(" separator="," close=")">
                    #{status}
                </foreach>
            </if>
            <if test="vehicleNo != null  and vehicleNo != ''"> and v.vehicle_no like concat('%', #{vehicleNo}, '%')</if>
            <!-- 综合查询:当前用户所在机构 OR 当前用户创建 OR 分配给当前用户 -->
            <if test="(creatorId != null and creatorId != 0) or (assigneeId != null and assigneeId != 0) or (deptId != null and deptId != 0) or (deptIds != null and deptIds.size() > 0)">
                and (
                    <!-- 查询指定分公司及其所有子部门的任务 -->
                    <if test="deptId != null and deptId != 0">
                        (t.dept_id = #{deptId} OR t.dept_id IN (
                            SELECT dept_id FROM sys_dept
                            WHERE del_flag = '0' AND find_in_set(#{deptId}, ancestors)
                        ))
                    </if>
                    <!-- 查询多个分公司及其所有子部门的任务 -->
                    <if test="deptIds != null and deptIds.size() > 0">
                        <if test="deptId != null and deptId != 0"> or </if>
                        (
                            <foreach collection="deptIds" item="branchDeptId" separator=" OR ">
                                (t.dept_id = #{branchDeptId} OR t.dept_id IN (
                                    SELECT dept_id FROM sys_dept
                                    WHERE del_flag = '0' AND find_in_set(#{branchDeptId}, ancestors)
                                ))
                            </foreach>
                        )
                    </if>
                    <if test="creatorId != null and creatorId != 0">
                        <if test="(deptId != null and deptId != 0) or (deptIds != null and deptIds.size() > 0)"> or </if>
                        t.creator_id = #{creatorId}
                    </if>
                    <if test="assigneeId != null and assigneeId != 0">
                        <if test="(deptId != null and deptId != 0) or (deptIds != null and deptIds.size() > 0) or (creatorId != null and creatorId != 0)"> or </if>
                        t.task_id IN (
                            SELECT task_id FROM sys_task_assignee WHERE user_id = #{assigneeId}
                        )
                    </if>
                )
            </if>
            <if test="plannedStartTimeBegin != null "> and t.planned_start_time &gt;= #{plannedStartTimeBegin}</if>
            <if test="plannedStartTimeEnd != null "> and t.planned_start_time &lt;= #{plannedStartTimeEnd}</if>
            <if test="plannedEndTimeBegin != null "> and t.planned_end_time &gt;= #{plannedEndTimeBegin}</if>
            <if test="plannedEndTimeEnd != null "> and t.planned_end_time &lt;= #{plannedEndTimeEnd}</if>
            <if test="overdue != null and overdue == true"> and t.planned_end_time &lt; now() and t.task_status != 'COMPLETED'</if>
        </where>
        order by
            CASE t.task_status
                WHEN 'PENDING' THEN 1
                WHEN 'DEPARTING' THEN 2
                WHEN 'ARRIVED' THEN 3
                WHEN 'RETURNING' THEN 4
                WHEN 'IN_PROGRESS' THEN 5
                WHEN 'COMPLETED' THEN 6
                WHEN 'CANCELLED' THEN 7
                ELSE 8
            END,
            t.create_time desc
    </select>
</mapper>
ruoyi-ui/src/api/task.js
@@ -310,4 +310,24 @@
    url: '/task/syncTaskStatus/' + taskId,
    method: 'post'
  })
}
}
// 从旧系统同步数据到新系统
export function syncFromLegacySystem(serviceOrdID, dispatchOrdID) {
  return request({
    url: '/task/syncFromLegacySystem',
    method: 'post',
    data: {
      serviceOrdID: serviceOrdID,
      dispatchOrdID: dispatchOrdID
    }
  })
}
// 检查任务是否已申请发票
export function checkTaskInvoice(taskId) {
  return request({
    url: '/system/invoice/checkTaskInvoice/' + taskId,
    method: 'get'
  })
}
ruoyi-ui/src/views/task/general/detail.vue
@@ -129,6 +129,16 @@
            @click="syncDispatchOrder"
            style="margin-left: 10px;"
          >同步调度单</el-button>
          <!-- 从旧系统同步数据到新系统按钮 -->
          <el-button
            v-if="taskDetail.emergencyInfo.legacyServiceOrdId && taskDetail.emergencyInfo.legacyDispatchOrdId"
            type="success"
            size="mini"
            icon="el-icon-download"
            :loading="syncingFromLegacy"
            @click="syncFromLegacySystem"
            style="margin-left: 10px;"
          >从旧系统同步</el-button>
        </el-descriptions-item>
        <el-descriptions-item label="调度单号">
          <span v-if="taskDetail.emergencyInfo.legacyDispatchOrdId">
@@ -788,7 +798,7 @@
</template>
<script>
import { getTask, updateTask, assignTask, changeTaskStatus, uploadAttachment, deleteAttachment, getTaskVehicles, getAvailableVehicles, assignVehiclesToTask, unassignVehicleFromTask, getPaymentInfo, syncServiceOrder, syncDispatchOrder, syncTaskStatus } from "@/api/task";
import { getTask, updateTask, assignTask, changeTaskStatus, uploadAttachment, deleteAttachment, getTaskVehicles, getAvailableVehicles, assignVehiclesToTask, unassignVehicleFromTask, getPaymentInfo, syncServiceOrder, syncDispatchOrder, syncTaskStatus, syncFromLegacySystem, checkTaskInvoice } from "@/api/task";
import { listUser } from "@/api/system/user";
import { getToken } from "@/utils/auth";
@@ -881,6 +891,7 @@
      // 同步加载状态
      syncingServiceOrder: false,
      syncingDispatchOrder: false,
      syncingFromLegacy: false,
      syncingTaskStatus: false,
      // 发票申请状态
      hasInvoiceApplied: false,
@@ -1226,6 +1237,32 @@
        this.syncingDispatchOrder = false;
      });
    },
    /** 从旧系统同步数据到新系统 */
    syncFromLegacySystem() {
      // 检查是否同时有serviceOrdID和dispatchOrdID
      if (!this.taskDetail.emergencyInfo.legacyServiceOrdId || !this.taskDetail.emergencyInfo.legacyDispatchOrdId) {
        this.$modal.msgError("缺少必要的旧系统ID信息");
        return;
      }
      this.$modal.confirm('是否确认从旧系统同步数据到新系统?').then(() => {
        this.syncingFromLegacy = true;
        return syncFromLegacySystem(
          this.taskDetail.emergencyInfo.legacyServiceOrdId,
          this.taskDetail.emergencyInfo.legacyDispatchOrdId
        );
      }).then(() => {
        this.$modal.msgSuccess("从旧系统同步成功");
        // 重新加载任务详情
        this.getTaskDetail();
      }).catch((error) => {
        if (error !== 'cancel') {
          this.$modal.msgError("同步失败: " + (error.message || "未知错误"));
        }
      }).finally(() => {
        this.syncingFromLegacy = false;
      });
    },
    /** 手动同步任务状态 */
    syncTaskStatus() {
      this.$modal.confirm('是否确认同步任务状态到旧系统?').then(() => {
@@ -1245,7 +1282,7 @@
    /** 检查发票申请状态 */
    checkInvoiceStatus() {
      // 调用后端接口检查该任务是否已申请发票
      this.$axios.get(`/system/invoice/checkTaskInvoice/${this.$route.params.taskId}`)
      checkTaskInvoice(this.$route.params.taskId)
        .then(response => {
          if (response.code === 200 && response.data) {
            this.hasInvoiceApplied = true;