12、Gantt 动态改变时间 Scale

<Select
  v-model:value="scaleConfigValue"
  style="width: 100px; margin-right: 10px"
  @select="setScaleConfigFuc"
>
  <Option value="day">按天</Option>
  <Option value="week">按周</Option>
  <Option value="month">按月</Option>
  <Option value="year">按年</Option>
</Select>

const ganttData = reactive<{
  scaleConfigValue: string;
}>({
  scaleConfigValue: 'day',
});

/**
 * gantt scale 模式切换
 */
function setScaleConfigFuc(type) {
  setScaleConfig(type);
}
// 动态设置Scale
function setScaleConfig(level) {
  console.log(level);
  const weekScaleTemplate = function (date) {
    const dateToStr = gantt.date.date_to_str('%M-%d日');
    const weekNum = gantt.date.date_to_str('(%W周)');
    const endDate = gantt.date.add(gantt.date.add(date, 1, 'week'), -1, 'day');
    return dateToStr(date) + '~' + dateToStr(endDate) + '' + weekNum(date);
  };
  switch (level) {
    case 'day':
      gantt.config.scale_height = 28 * 4;
      gantt.config.subscales = [
        {
          unit: 'year',
          step: 1,
          date: '%Y年',
        },
        {
          unit: 'month',
          step: 1,
          date: '%F',
        },
        {
          unit: 'week',
          step: 1,
          template: weekScaleTemplate,
        },
      ];
      gantt.config.scale_unit = 'day';
      gantt.config.date_scale = '周%D,%d日';
      gantt.render();
      break;
    case 'week':
      gantt.config.subscales = [
        {
          unit: 'year',
          step: 1,
          date: '%Y年',
        },
        {
          unit: 'week',
          step: 1,
          template: weekScaleTemplate,
        },
      ];
      gantt.config.scale_height = 28 * 3;
      gantt.config.scale_unit = 'month';
      gantt.config.date_scale = '%F';
      gantt.render();
      break;
    case 'month':
      gantt.config.subscales = [
        {
          unit: 'year',
          step: 1,
          date: '%Y年',
        },
      ];
      gantt.config.scale_unit = 'month';
      gantt.config.date_scale = '%F';
      gantt.config.scale_height = 28 * 2;
      gantt.render();
      break;
    case 'year':
      gantt.config.subscales = [];
      gantt.config.scale_unit = 'year';
      gantt.config.date_scale = '%Y年';
      gantt.config.scale_height = 28 * 2;
      gantt.render();
      break;
  }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值