小小儁爺
2026-01-21 4fbd0c98d22c2ce6eabfcb507c13c6c9ce77492d
src/views/gantt/index.vue
@@ -90,7 +90,7 @@
        { code: '360min', name: '360min' }
      ],
      scaleValue: '240min',
      ganttDateRange: ['2026-01-20', '2026-01-25'],
      ganttDateRange: ['2026-01-21', '2026-01-22'], // '2026-01-20', '2026-01-25'
      selectedIds: [],
      // 分页相关数据
      currentPage: 1,
@@ -123,7 +123,6 @@
    initGantt() {
      gantt.plugins({
        critical_path: true,
        drag_timeline: true,
        grouping: true,
@@ -145,37 +144,9 @@
      gantt.config.row_height = 32 // 行高
      gantt.config.bar_height = 20 // bar高
      gantt.config.xml_date = '%Y-%m-%d %H:%i' // gantt的日期格式
      gantt.config.drag_progress = false // 禁止通过拖动进度条改变任务进度
      gantt.config.readonly = true // 只读模式
      /* ↓↓↓ Group configuration ↓↓↓ */
      gantt.serverList('task_priority', [
        { key: 1, label: '高' },
        { key: 2, label: '中等' },
        { key: 3, label: '低' }
      ])
      gantt.serverList('task_status', [
        { key: 1, label: 'Planning' },
        { key: 2, label: 'Not started' },
        { key: 3, label: 'In Progress' },
        { key: 4, label: 'Complete' }
      ])
      function byId(list, id) {
        for (let i = 0; i < list.length; i++) {
          if (list[i].key == id) {
            return list[i].label || ''
          }
        }
        return ''
      }
      /* ↑↑↑ Group configuration ↑↑↑ */
      // 刻度值改变
      this.changeTimeScale()
@@ -260,13 +231,7 @@
      ]
      /* ↑↑↑ Grid Columns configuration ↑↑↑ */
      // 汉化窗口
      // gantt.config.order_branch = true
      // gantt.config.open_tree_initially = true
      gantt.config.show_errors = false // 发生异常时,不允许弹出警告到 UI 界面
      gantt.config.grid_elastic_columns = true
      // 自定义浮动框的显示内容   tooltip浮动框显示的End Date被追加1的问题修复(应该显示数据库的原始值)
@@ -571,233 +536,11 @@
      // 使用原有的示例数据作为基础
      this.allTasks = newArr
      const dataBack = [
        {
          'id': 1,
          'text': '工单:MO-2025-05-001',
          saleOrder: 'SO-2025-05001',
          'calendar_id': 'customCalendar1',
          partName: '跑步机',
          partCode: 'Run01',
          description: '排产数量:500 报工数量:100 进度:20%',
          'type': 'project',
          'start_date': '2025-04-02 00:00',
          // 'duration': 5,
          'progress': 0.2,
          'parent': 0,
          'checked': false
          // render: 'split'
        },
        {
          'id': 2,
          'text': '工序:切割',
          saleOrder: 'SO-2025-05001',
          'calendar_id': 'customCalendar1',
          partName: '跑步机',
          partCode: 'Run01',
          description: '排产数量:500 报工数量:100 进度:20%',
          'type': 'project',
          'start_date': '2025-04-02 00:00',
          'duration': 2,
          'progress': 0.2,
          'parent': '1',
          checked: false
        },
        {
          'id': 3,
          'text': '设备:金工车间1号设备',
          saleOrder: 'SO-2025-05001',
          'calendar_id': 'customCalendar1',
          partName: '跑步机',
          partCode: 'Run01',
          description: '排产数量:500 报工数量:100 进度:20%',
          'type': 'task',
          'start_date': '2025-04-07 00:00',
          'parent': '2',
          'duration': 4,
          'progress': 0,
          checked: false
        },
        {
          'id': 4,
          'text': '设备:金工车间2号设备',
          saleOrder: 'SO-2025-05001',
          'calendar_id': 'customCalendar1',
          partName: '跑步机',
          partCode: 'Run01',
          description: '排产数量:500 报工数量:100 进度:20%',
          'type': 'task',
          'start_date': '2025-04-15 00:00',
          'parent': '2',
          'duration': 3,
          'progress': 0,
          checked: false
        },
        {
          'id': 5,
          'text': '工单:MO-2025-05-002',
          saleOrder: 'SO-2025-05002',
          'calendar_id': 'customCalendar1',
          partName: '走步机',
          partCode: 'W01',
          description: '排产数量:1000 报工数量:500 进度:50%',
          'type': 'project',
          'start_date': '2025-04-02 00:00',
          // 'duration': 5,
          'progress': 0.5,
          'parent': 0,
          'checked': false
          // render: 'split'
        },
        {
          'id': 6,
          'text': '工序:切割',
          saleOrder: 'SO-2025-05002',
          'calendar_id': 'customCalendar1',
          partName: '走步机',
          partCode: 'W01',
          description: '排产数量:1000 报工数量:500 进度:50%',
          'type': 'project',
          'start_date': '2025-04-02 00:00',
          'duration': 5,
          'progress': 0.5,
          'parent': '5',
          checked: false
        },
        {
          'id': 7,
          'text': '设备:金工车间3号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          'calendar_id': 'customCalendar1',
          partCode: 'W01',
          description: '排产数量:1000 报工数量:500 进度:50%',
          'type': 'task',
          'start_date': '2025-04-07 06:23',
          'parent': '6',
          'duration': 3,
          'progress': 0,
          checked: false
        },
        {
          'id': 8,
          'text': '设备:金工车间4号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          partCode: 'W01',
          'calendar_id': 'customCalendar1',
          description: '排产数量:1000 报工数量:600 进度:60%',
          'type': 'task',
          render: 'split', // 用于在一个工作时间段内显示不下,需要进行分割显示
          'start_date': '2025-04-12 00:00',
          'parent': '6',
          'duration': 4,
          'progress': 0,
          checked: false
        },
      this.totalTasks = this.allTasks.length
      this.updatePaginatedTasks()
      this.renderGanttChart()
        {
          'id': 11,
          'text': '设备:金工车间4号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          partCode: 'W01',
          'calendar_id': 'customCalendar1',
          description: '排产数量:1000 报工数量:600 进度:60%',
          'type': 'task',
          'start_date': '2025-04-14 00:00',
          'parent': '8',
          'duration': 3,
          'progress': 0,
          checked: false
        },
        {
          'id': 12,
          'text': '设备:金工车间4号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          partCode: 'W01',
          'calendar_id': 'customCalendar1',
          description: '排产数量:1000 报工数量:600 进度:60%',
          'type': 'task',
          'start_date': '2025-04-18 00:00',
          'parent': '8',
          'duration': 1,
          'progress': 0,
          checked: false
        },
        {
          'id': 13,
          'text': '设备:金工车间4号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          partCode: 'W01',
          'calendar_id': 'customCalendar1',
          description: '排产数量:1000 报工数量:600 进度:60%',
          'type': 'task',
          'start_date': '2025-04-10 02:50',
          'parent': '8',
          'duration': 2,
          'progress': 0,
          checked: false
        },
        {
          'id': 10,
          'text': '设备:金工车间4号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          partCode: 'W01',
          'calendar_id': 'customCalendar1',
          description: '排产数量:1000 报工数量:600 进度:60%',
          'type': 'task3',
          'start_date': '2025-04-10 06:24',
          'parent': '8',
          'duration': 1,
          'progress': 0,
          checked: false
        },
        {
          'id': 14,
          'text': '设备:金工车间4号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          partCode: 'W01',
          'calendar_id': 'customCalendar1',
          description: '排产数量:1000 报工数量:600 进度:60%',
          'type': 'task2',
          'start_date': '2025-04-11 06:24',
          'parent': '8',
          'duration': 1,
          'progress': 0,
          checked: false
        },
        {
          'id': 9,
          'text': '设备:金工车间5号设备',
          saleOrder: 'SO-2025-05002',
          partName: '走步机',
          partCode: 'W01',
          'calendar_id': 'customCalendar1',
          description: '排产数量:1000 报工数量:400 进度:40%',
          'type': 'task',
          'start_date': '2025-04-10 00:00',
          'parent': '6',
          'duration': 3,
          'progress': 0,
          checked: false
        }
      ]
      // this.totalTasks = this.allTasks.length
      // this.updatePaginatedTasks()
      // this.renderGanttChart()
      this.prepareArrange()
      // this.prepareArrange()
    },
    // 更新分页后的任务数据
@@ -961,6 +704,10 @@
    },
    // 预排
    prepareArrange() {
      this.priorityMethodChange()
      this.loadTasks()
      // 优先方式  time  device
      if (this.priorityMethod === 'time') {
        this.allTasks.sort((a, b) => a.start_date - b.start_date)
@@ -984,7 +731,8 @@
          let ratio = 1 // 默认系数 1
          if (new Date(item.start_date).getTime() < new Date().getTime() && new Date(item.end_date).getTime() >= new Date().getTime()) {
            const d = this.calculateTimeRangeInMinutes(handleDatetime2(new Date()).split('  ')[1] + '~' + handleDatetime2(item.end_date).split('  ')[1])
            ratio = d / item.duration
            ratio = Math.round((d / item.duration) * 100) / 100
            console.log(ratio, 'ratio')
          }
          // 这个地方的count值 得变更  item.producedCount  得乘以个系数  默认系数 1
@@ -995,7 +743,7 @@
            // duration   单位 分钟
            let duration = (count / (item.AdvaDevicCropMob / 100)) * item.AdvaDevicRhythm / 60
            if (count < item.producedCount && new Date().getTime() <= new Date(item.start_date)) {
              console.log('执行1111')
              // console.log('执行1111')
              duration = duration * (count / item.producedCount)
              // item.end_date = '2026-01-24  11:00:00'
            }
@@ -1015,10 +763,14 @@
              progress: 0,
              parent: item.parent,
              saleOrder: item.saleOrder,
              producedCount: count <= item.producedCount ? count.toFixed(0) : item.producedCount
              producedCount: count <= item.producedCount ? Math.round(count) : item.producedCount
              // producedCount: count <= item.producedCount ? count : item.producedCount
            }
            this.canArrangeNumber += parseFloat(obj.producedCount)
            console.log(this.canArrangeNumber)
            if (Math.abs(this.canArrangeNumber - this.needArrangeNumber) === 1) {
              obj.producedCount = obj.producedCount + (this.needArrangeNumber - this.canArrangeNumber)
            }
            // 这个地方得加个逻辑,得根据世间日期进行push   下午研究一下