0.0.1 • Published 10 months ago

@pangsui/vue3-resource-gantt v0.0.1

Weekly downloads
-
License
-
Repository
-
Last release
10 months ago

@pangsui/vue3-resource-gantt

快速上手

npm install @pangsui/vue3-resource-gantt

全局使用

main.js中引入并注册,由于组件也用到了vuex,所以在注册时也要将vuex传给组件,没有vuex的记得安装一下vuex
import store from './store/index'
import Gantt from '@pangsui/vue3-resource-gantt'

const app = createApp(App)
app.use(Gantt, { store })

文档

属性参数
序号参数说明类型可选值默认值
1days要渲染的天数Number30
2oDayBoxHeight表格高度Number40
3oDayBoxWidth表格宽度Number60
4startTime渲染时间列表的开始时间String2024-01-01
5statusDictionary状态字典,详细配置见下面字典配置参数Object{}
6tasks任务列表Array[]
7rows左侧行数据Array[]
8titleGroups左侧分组数据,详细配置见下面分组配置参数|Array[]
字典配置参数
序号参数说明类型可选值默认值
1name名称String
2theme主题String'default','deepgreen','green','lightgreen','lightpurple','purple','mediumpurple','red','pink','lightpink','blue','skyblue','cyan','yellow','lightyellow','greenyellow','orange','lightgray','gray''default'
tasks任务、rows左侧行数据配置参数
序号参数说明类型可选值默认值
1task_id任务idNumber
2text任务名称String
3row_index行下标,不重复且从1开始累加Number
4start_date开始时间 yyyy-MM-dd hh:mm:ssString
5end_date结束时间 yyyy-MM-dd hh:mm:ssString
6duration持续时间,单位天String
7progress进度String1-100
8status状态String
9is_lock是否锁定Booleantrue或false
10is_collapse是否折叠Booleantrue或false
11is_parent是否父节点Booleantrue或false
12status状态String
titleGroups数据配置参数
序号参数说明类型可选值默认值
1title标题String
2length长度(分组标题占的数量总和)Number
计算两个时间相差的天数
// 计算两个时间相差的天数
/**
 * @param {Date} date1 开始时间
 * @param {Date} date2 结束时间
 */
export function calculateDuration(date1, date2) {
  const oneDay = 24 * 60 * 60 * 1000 // 每天的毫秒数
  const diffDays = Math.round(Math.abs((date2 - date1) / oneDay))
  return diffDays
}
使用案例

界面中引入

<Gantt
      ref="gantt"
      :days="60"
      :o-day-box-width="30"
      :start-time="'2023-11-10'"
      :status-dictionary="statusDictionary"
      :tasks="tasks"
      :rows="rows"
      :title-groups="titleGroups"
    />in-tasks="originTasks"
    />
<script>
import { onMounted, reactive, toRefs, ref } from 'vue'

export default {
  setup() {
    const vueConfig = reactive({
        rows: [
          {
            id: 1,
            name: 'A1'
          },
          {
            id: 2,
            name: 'A2'
          },
          {
            id: 3,
            name: 'A3'
          },
          {
            id: 4,
            name: 'A4'
          },
          {
            id: 5,
            name: 'A5'
          },
          {
            id: 6,
            name: 'A6'
          },
          {
            id: 7,
            name: 'A7'
          },
          {
            id: 8,
            name: 'A8'
          },
          {
            id: 9,
            name: 'A9'
          },
          {
            id: 10,
            name: 'A10'
          },
          {
            id: 11,
            name: 'A11'
          },
          {
            id: 12,
            name: 'A12'
          },
          {
            id: 13,
            name: 'A13'
          },
          {
            id: 14,
            name: 'A14'
          },
          {
            id: 15,
            name: 'A15'
          },
          {
            id: 16,
            name: 'A16'
          },
          {
            id: 17,
            name: 'A17'
          },
          {
            id: 18,
            name: 'A18'
          },
          {
            id: 19,
            name: 'A19'
          },
          {
            id: 20,
            name: 'A20'
          },
          {
            id: 21,
            name: 'A21'
          }
        ],
        titleGroups: [
          {
            title: '南车间',
            length: 5
          },
          {
            title: '北车间',
            length: 4
          },
          {
            title: '二车间',
            length: 6
          },
          {
            title: '三车间',
            length: 6
          }
        ],
        tasks: 
          [
            {
              task_id: 1,
              text: '测试项目',
              row_index: 0,
              start_date: '2023-12-11 12:00:00',
              duration: 10,
              theme: 'lightpurple',
              is_lock: false,
              progress: 100, // 进度
            },
            {
              task_id: 2,
              text: '测试项目1',
              row_index: 3,
              start_date: '2023-12-09 12:06:00',
              duration: 12,
              theme: 'purple',
              progress: 70, // 进度
              is_lock: true,
            },
            {
              task_id: 3,
              text: '测试项目2',
              row_index: 4,
              end_date: '2023-12-01 21:01:25',
              start_date: '2023-12-11 22:00:00',
              duration: 10,
              theme: 'mediumpurple',
              progress: 86, // 进度
              is_lock: false,
            },
            {
              task_id: 13,
              text: '测试项目3',
              row_index: 4,
              start_date: '2023-12-08 21:01:25',
              duration: 5,
              theme: 'pink',
              progress: 0, // 进度
              is_lock: false,
            },
            {
              task_id: 4,
              text: '测试项目4',
              row_index: 9,
              start_date: '2023-12-12 12:00:00',
              duration: 4.8,
              progress: 40, // 进度
              theme: 'cyan',
              is_lock: false,
            },
            {
              task_id: 5,
              text: '测试项目5',
              row_index: 1,
              start_date: '2023-11-10 10:46:00',
              duration: 5.9,
              progress: 90, // 进度
              theme: 'red',
              is_lock: true,
            },
            {
              task_id: 6,
              text: '测试项目6',
              row_index: 9,
              start_date: '2023-11-10 12:00:00',
              duration: 10,
              theme: 'skyblue',
              progress: 100, // 进度
              is_lock: false
            },
            {
              task_id: 7,
              text: '测试项目7',
              row_index: 8,
              start_date: '2023-11-15 12:00:00',
              duration: 22,
              progress: 100, // 进度
              theme: 'orange',
              is_lock: false
            },
            {
              task_id: 8,
              text: '测试项目8',
              row_index: 10,
              start_date: '2023-11-15 16:00:00',
              duration: 30,
              progress: 95, // 进度
              theme: 'blue',
              is_lock: false,
            },
            {
              task_id: 9,
              text: '测试项目9',
              row_index: 5,
              start_date: '2023-12-09 12:00:00',
              duration: 11,
              progress: 0, // 进度
              theme: 'lightpink',
              is_lock: false,
            },
            {
              task_id: 10,
              text: '测试项目10',
              row_index: 11,
              start_date: '2023-11-18 03:00:00',
              duration: 8,
              progress: 100, // 进度
              theme: 'yellow',
            },
            {
              task_id: 11,
              text: '测试项目11',
              row_index: 3,
              start_date: '2023-11-16 00:00:00',
              duration: 40,
              progress: 50, // 进度
              theme: 'gray',
              is_lock: true,
            }
          ],
        statusDictionary: {
          'draft': { name: '草稿', theme: 'gray' },
          'unfold': { name: '展开', theme: 'cyan' },
          'progress': { name: '进行中', theme: 'blue' },
          'confirm': { name: '已确认', theme: 'lightpurple' },
          'suspend': { name: '暂停', theme: 'yellow' },
          'finish': { name: '已完成', theme: 'lightgreen' },
          'cancel': { name: '已取消', theme: 'red' }
        }
      }
    })
    return {
      ...toRefs(vueConfig)
    }
  }

#####示例图片

示例图片