董国庆
2025-06-21 caaace44a0f0049b6a645d6e0a511af6adf7c1e0
laboratory/src/views/dataManagement/dispatching/addDispatch.vue
@@ -177,8 +177,11 @@
      <Table
        :data="taskTableData"
        :total="0"
        :total="allTaskTableData.length"
        :height="null"
        :queryForm="{ pageNum: taskPageNum, pageSize: taskPageSize }"
        :disAblePagination="true"
        @handleCurrentChange="handleCurrentChange"
        class="rwuTable"
      >
        <el-table-column type="index" label="序号" width="80"></el-table-column>
@@ -225,7 +228,7 @@
import AddGroupDialog from './components/AddGroupDialog'
import AddTaskDialog from './components/AddTaskDialog'
import AIEditor from '@/components/AiEditor'
import { getProposalList, addDispatch, updateDispatch } from './service'
import { getProposalList, addDispatch, updateDispatch,getDetailById } from './service'
export default {
  name: "AddProject",
@@ -270,7 +273,10 @@
        ],
      },
      groupTableData: [],
      taskTableData: [],
      taskTableData: [], // 当前页展示的数据
      allTaskTableData: [], // 全部任务数据
      taskPageNum: 1,
      taskPageSize: 15,
      members: {
        processEngineer: [], // 工艺工程师
        experimenter: [], // 实验员
@@ -484,7 +490,8 @@
      }).catch(() => {})
    },
    handleGroupSubmit(form) {
      const index = this.groupTableData.findIndex(item => item.groupName === form.groupName)
      console.log('11111111',form ,'2222222',this.groupTableData)
      const index = this.groupTableData.findIndex(item => item.id === form.id)
      if (index > -1) {
        this.groupTableData.splice(index, 1, form)
      } else {
@@ -517,31 +524,38 @@
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        const index = this.taskTableData.findIndex(item => item === row)
        const index = this.allTaskTableData.findIndex(item => item === row)
        if (index > -1) {
          this.taskTableData.splice(index, 1)
          this.allTaskTableData.splice(index, 1)
          // 删除后判断是否需要跳页
          const maxPage = Math.ceil(this.allTaskTableData.length / this.taskPageSize) || 1;
          if (this.taskPageNum > maxPage) {
            this.taskPageNum = maxPage;
          }
          this.updateTaskTableData();
          this.$message.success('删除成功')
        }
      }).catch(() => {})
    },
    handleTaskSubmit(form) {
      const index = this.taskTableData.findIndex(item => item.taskName === form.taskName);
      const index = this.allTaskTableData.findIndex(item => item.taskName === form.taskName);
      const taskData = {
        id: form.id || '', // 编辑时使用原id,新增时为空
        id: form.id || '',
        taskName: form.taskName,
        personCharge: form.leader, // 负责人名称
        personCharge: form.leader,
        startTime: form.startTime,
        dispatchId: this.id || '', // 实验调度id
        selectedUsers: form.selectedUsers // 保存选中的用户ID数组
        dispatchId: this.id || '',
        selectedUsers: form.selectedUsers
      };
      if (index > -1) {
        this.taskTableData.splice(index, 1, taskData);
        this.allTaskTableData.splice(index, 1, taskData);
      } else {
        this.taskTableData.push(taskData);
        this.allTaskTableData.push(taskData);
        this.taskPageNum = 1; // 新增后回到第一页
      }
      this.updateTaskTableData();
      // 更新表单数据
      this.form.experimentDispatchTasks = this.taskTableData;
      this.form.experimentDispatchTasks = this.allTaskTableData;
    },
    // 获取所有编辑器的内容
    getAllEditorContent() {
@@ -742,8 +756,8 @@
    getDetail() {
      if (this.id) {
        getDetailById({ id: this.id }).then(res => {
          if (res.code === 200 && res.data) {
            const data = res.data
          if (res) {
            const data = res
            // 设置表单数据
            this.form = {
              projectName: data.projectName,
@@ -761,7 +775,22 @@
            }
            // 设置表格数据
            this.groupTableData = data.experimentDispatchGroups || []
            this.taskTableData = data.experimentDispatchTasks || []
            this.allTaskTableData = data.experimentDispatchTasks || []
            this.updateTaskTableData();
            // 处理参与人员数据
            this.members = {
              processEngineer: data.experimentDispatchParticipants.filter(p => p.roleType === 3) || [],
              experimenter: data.experimentDispatchParticipants.filter(p => p.roleType === 5) || [],
              analyst: data.experimentDispatchParticipants.filter(p => p.roleType === 4) || []
            };
            // 更新selectMemberData
            this.selectMemberData = [
              ...this.members.processEngineer,
              ...this.members.experimenter,
              ...this.members.analyst
            ];
          }
        }).catch(err => {
          console.error('获取详情失败:', err)
@@ -796,7 +825,17 @@
      } finally {
        this.projectLoading = false;
      }
    }
    },
    updateTaskTableData() {
      const start = (this.taskPageNum - 1) * this.taskPageSize;
      const end = this.taskPageNum * this.taskPageSize;
      this.taskTableData = this.allTaskTableData.slice(start, end);
    },
    handleCurrentChange(page) {
      this.taskPageNum = page;
      this.updateTaskTableData();
    },
  },
  created() {
    // 从路由参数中获取id
@@ -820,6 +859,7 @@
      // 同时更新selectMemberData
      this.selectMemberData = [...this.members.processEngineer];
    }
    this.updateTaskTableData(); // 初始化时同步一次
  }
};
</script>