位置: IT常识 - 正文

vue 甘特图 一行多条任务 可拖拽(基于vue的开源甘特图控件)

编辑:rootadmin
#1、安装 highcharts npm install highcharts --save #2、页面引用 // 引入 import Highcharts from 'highcharts/highcharts-gantt.src.js' // 引入拖拽 import factory from ' ... 1、安装 highchartsnpm install highcharts --save2、页面引用// 引入import Highcharts from 'highcharts/highcharts-gantt.src.js'// 引入拖拽import factory from 'highcharts/modules/draggable-points.js'factory(Highcharts)3、封装组件<!-- * @Descripttion: 新甘特图 * @version: 0.0.1 * @Author: PengShuai * @Date: 2023-01-12 13:20:44 * @LastEditors: PengShuai * @LastEditTime: 2023-02-01 15:00:55--><template> <div class="BaseNewGantt"> <div id="container"></div> </div></template><script>import Highcharts from 'highcharts/highcharts-gantt.src.js'import factory from 'highcharts/modules/draggable-points.js'factory(Highcharts)export default { name: 'BaseNewGantt', data() { return { isShow: true, tableConfig: [], } }, props: { // 甘特图配置 ganttConfig: { type: Object, default: () => { return { data: [], columnsConfig: [], } }, }, }, mounted() {}, methods: { // 页面初始化 init() { Highcharts.setOptions({ global: { useUTC: false, // 不使用utc时间 }, // 默认都是英文的,这里做了部分中文翻译 lang: { noData: '暂无数据', months: [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', ], shortMonths: [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', ], weekdays: ['日', '一', '二', '三', '四', '五', '六'], buttons: [ { type: 'month', count: 1, text: '月' }, { type: 'month', count: 3, text: '季度' }, { type: 'month', count: 6, text: '半年' }, { type: 'ytd', text: 'YTD' }, { type: 'year', count: 1, text: '年' }, { type: 'all', text: '所有' }, ], rangeSelectorZoom: '范围', }, }) this.getGantt() }, getGantt() { const _this = this const day = 1000 * 60 * 60 * 24 const map = Highcharts.map // 获取数据源 let series = this.ganttConfig.data // 左侧表格配置 this.columnsConfig = [] if (this.ganttConfig.tableConfig.length > 0) { this.ganttConfig.tableConfig.forEach((item) => { let obj = { title: { text: item.title, }, categories: map(series, function (s) { return s[item.labels] }), } this.columnsConfig.push(obj) }) } Highcharts.ganttChart('container', { plotOptions: { series: { animation: true, dragDrop: { draggableX: true, // 是否横向拖动 draggableY: false, // 是否纵向拖动 dragPrecisionX: day, }, dataLabels: { enabled: true, format: '{point.title}', style: { cursor: 'default', opacity: _this.isShow ? 0 : 1, pointerEvents: 'none', }, }, allowPointSelect: true, point: { events: { dragStart: _this.onDragStart, drag: _this.onDrag, drop: _this.onDrop, select: _this.onHandleSelect, }, }, }, }, yAxis: { type: 'category', grid: { enabled: true, borderColor: 'rgba(0,0,0,0.3)', borderWidth: 1, columns: _this.columnsConfig, }, }, xAxis: [ { currentDateIndicator: true, grid: { borderWidth: 1, // 右侧表头边框宽度 cellHeight: 0, // 右侧日期表头高度 }, labels: { format: '{value:%d}日', }, }, { labels: { format: '{value:%Y年-%m月}', }, }, ], // 提示信息 tooltip: { formatter: function () { return `<div> ${this.point.title}<br/> 开始时间: ${_this.$library.common.formatDate( new Date(this.point.start), 'YYYY-MM-DD', )}<br/> 结束时间: ${_this.$library.common.formatDate( new Date(this.point.end), 'YYYY-MM-DD', )}<br/> </div>` }, }, navigator: { enabled: true, series: { type: 'gantt', pointPlacement: 0.5, pointPadding: 0.25, }, yAxis: { min: 0, max: 6, reversed: true, categories: [], }, }, series: series, // 显示滚动条 scrollbar: { enabled: true, }, // 顶部筛选按钮 rangeSelector: { enabled: true, selected: 0, buttons: [ { type: 'month', count: 1, text: '月' }, { type: 'month', count: 3, text: '季度' }, { type: 'month', count: 6, text: '半年' }, { type: 'ytd', text: 'YTD' }, { type: 'year', count: 1, text: '年' }, { type: 'all', text: '所有' }, ], }, // // 去掉右下角版权信息 credits: { enabled: false, }, }) }, // 拖动开始 onDragStart(e) {}, // 拖动 onDrag(e) {}, // 拖动停止 onDrop(e) { this.$emit('onDragStop', e.target.options) }, // 选择事件 onHandleSelect(e) { this.$emit('onHandleSelect', e.target.options) console.log(e) }, // 是否显示标题 onShowTitle() { // 标题过长 隐藏 更改文字透明度 this.isShow = !this.isShow // 重新加载 this.getGantt() }, },}</script><style lang="less" scoped>.BaseNewGantt { height: calc(100% - 70px); overflow: auto;}</style>4、组件使用<base-gantt ref="gantt" :ganttConfig="ganttConfig" @onDragStop="onDragStop" @onHandleSelect="onHandleSelect"></base-gantt>

推荐整理分享vue 甘特图 一行多条任务 可拖拽(基于vue的开源甘特图控件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue 甘特图 一行 多个,vue甘特图实例,vue使用甘特图,vue 甘特图 一行 多个,vue 甘特图 一行 多个,甘特图一行上显示多个时段,vue 甘特图 一行 多个,vue甘特图实例,内容如对您有帮助,希望把文章链接给更多的朋友!

vue 甘特图 一行多条任务 可拖拽(基于vue的开源甘特图控件)

data中配置

// 甘特图配置 ganttConfig: { // 数据源 data: [], // 左侧表格列配置 tableConfig: [ { title: '设备名称', labels: 'machineName', }, { title: '设备编码', labels: 'machineNo', }, ], },

事件

// 拖动停止onDragStop(option) {},// 甘特图选中onHandleSelect(option) { this.selectGanttRowData = option},5、实例

6、官网地址

https://www.hcharts.cn/演示地址https://www.hcharts.cn/demo/gantt

本文链接地址:https://www.jiuchutong.com/zhishi/311949.html 转载请保留说明!

上一篇:织梦后台直接添加会员功能开发方法(织梦怎么建站)

下一篇:dedecms织梦去掉文档内链自动连接关键词的下划线(织梦的首页怎么换图片)

  • vivo手机怎么查手机型号(vivo手机怎么查是不是新机)

    vivo手机怎么查手机型号(vivo手机怎么查是不是新机)

  • 麦当劳怎么预约第二天早餐(麦当劳怎么预约生日派对)

    麦当劳怎么预约第二天早餐(麦当劳怎么预约生日派对)

  • 抖音上直播买东西怎么下订单(抖音直播买东西怎么领优惠券)

    抖音上直播买东西怎么下订单(抖音直播买东西怎么领优惠券)

  • 华为nova5pro支持无线充电功能吗(华为nova5pro支持wifi6吗)

    华为nova5pro支持无线充电功能吗(华为nova5pro支持wifi6吗)

  • 微信注销了后好友知道吗(微信注销后好友会自动删除吗)

    微信注销了后好友知道吗(微信注销后好友会自动删除吗)

  • 苹果蓝牙耳机音量大解决办法(苹果蓝牙耳机音质怎么调)

    苹果蓝牙耳机音量大解决办法(苹果蓝牙耳机音质怎么调)

  • 抖音短视频最长能发多少时间(抖音短视频最长可以拍几分钟?)

    抖音短视频最长能发多少时间(抖音短视频最长可以拍几分钟?)

  • 上网设置的宽带账号和密码是什么(上网设置的宽带账号和密码可不可以不填)

    上网设置的宽带账号和密码是什么(上网设置的宽带账号和密码可不可以不填)

  • qq怎么清理隐藏内存(如何清理qq的隐藏垃圾)

    qq怎么清理隐藏内存(如何清理qq的隐藏垃圾)

  • 快手和快手极速版有啥区别(快手和快手极速版哪个赚钱快)

    快手和快手极速版有啥区别(快手和快手极速版哪个赚钱快)

  • 小米10怎么插耳机(小米怎么插耳机的时候外放闹钟)

    小米10怎么插耳机(小米怎么插耳机的时候外放闹钟)

  • 手机安全模式是什么(手机安全模式是什么原因造成的)

    手机安全模式是什么(手机安全模式是什么原因造成的)

  • r15为什么下架了(oppor15下市的原因)

    r15为什么下架了(oppor15下市的原因)

  • 2.4g和5g要不要合并

    2.4g和5g要不要合并

  • i77700k搭配什么主板(i77700k怎么配电脑)

    i77700k搭配什么主板(i77700k怎么配电脑)

  • 京东跨自营是什么意思(京东跨自营店铺是什么意思)

    京东跨自营是什么意思(京东跨自营店铺是什么意思)

  • vivo字体变成了空心字(vivo字体突然变大怎么办)

    vivo字体变成了空心字(vivo字体突然变大怎么办)

  • airpods待机时间多久(airpods耳机待机时间短)

    airpods待机时间多久(airpods耳机待机时间短)

  • 华为手机有实况模式在哪里(华为手机有实况功能吗)

    华为手机有实况模式在哪里(华为手机有实况功能吗)

  • PPT怎样插入音乐(如何往ppt里面加入音频)

    PPT怎样插入音乐(如何往ppt里面加入音频)

  • 手机wps文件在哪个目录(手机wps文件在哪个文件夹里)

    手机wps文件在哪个目录(手机wps文件在哪个文件夹里)

  • macpro开机黑屏(macpro开机黑屏没反应)

    macpro开机黑屏(macpro开机黑屏没反应)

  • 如何卸载win10 2021.09.15推送的kb5005565这个最新补丁(如何卸载win10)

    如何卸载win10 2021.09.15推送的kb5005565这个最新补丁(如何卸载win10)

  • 增值税留抵税额账务处理
  • 发票复核人一定要是财务吗
  • 人工费已经支付怎么入账
  • 信息采集需要填两个家庭成员,但只能有一个监护人
  • 公司在筹备阶段可以不交社保
  • 国外进口原材料会计处理
  • 免征增值税项目记忆
  • 未达起征点的增值税怎么账务处理
  • 工业企业辅助生产费用的分配方法
  • 个体工商户地税没有申报罚款多少
  • 个体工商户库存商品入账
  • 个体户增值税怎么算
  • 酒店行业税负率怎么算
  • 应收账款转让的会计处理
  • 生产型出口企业的概念
  • 公益性捐赠包括向脱贫地区捐赠吗
  • 上月印花税计提多了如何冲回
  • 腾讯手游助手如何隐藏鼠标
  • 该内存不能为read,要终止程序
  • 周围的材料分为哪几类
  • 酒店布草间有摄像头吗
  • 修改系统帐户用什么软件
  • 员工出差补贴怎么入账
  • 支付挂靠方的管理费用有进项吗?
  • PHP:pg_connection_reset()的用法_PostgreSQL函数
  • 净损益是
  • php文件上传用什么请求方法
  • 承包安装工程怎么报价
  • PHP:mcrypt_generic_end()的用法_Mcrypt函数
  • 闲置房的相关政策
  • 税务的基本职能
  • 利用的拼音
  • php数据导出到excel
  • 带息应收票据会计处理
  • 业务招待费计入什么会计科目
  • vscodehtml快捷键
  • 安装cuda和cudnn
  • speedtest教程
  • 违约赔偿金要交税吗
  • 增值税进项税抵扣凭证
  • 如何修改php网页内容
  • 个体工商户属于灵活就业人员吗
  • 石油预付款发票怎么开
  • 复核人和收款人一样了怎么办
  • 织梦怎么添加相关
  • discuz管理中心进不去
  • 单位购买预付卡可以用现金吗
  • access数据库用户名和密码
  • 纳税申报相关操作有哪些
  • 个人开技术服务费
  • 股东之间股权转让的税务处理
  • 购买劳务费会计分录
  • 产品销售收入的确认条件
  • 怎样理解企业财务会计的定义
  • 长期应收款是否计提坏账准备
  • 请根据你的了解叙述c++的特点,c++对c有哪些发展
  • sql server 还原数据库后显示为备用只读
  • sql中varchar和number比较
  • win10系统浏览器在哪
  • windowsxp文件
  • server core安装完成后按什么进行登录
  • vmware虚拟机不能用桥接模式
  • 找回丢失的抖音如何恢复抖音
  • centos hosts
  • Win10开机提示黑屏字母
  • win7电脑关机后自动开机怎么回事
  • 升级win10系统后无法联网的三种解决方法
  • c++lambda函数
  • javascript 操作css
  • bootstrap入门
  • jQuery Easyui datagrid连续发送两次请求问题
  • csh,tcsh,bash,sh等shell的区别
  • word-wrap在firefox中不起作用的解决方法
  • Node.js中的全局对象有
  • unity3ds
  • js代码怎么使用
  • JavaScript中的数据类型分哪为两大类?
  • js如何判断是否有定时器功能并清除
  • 白酒消费税应纳税额
  • 减免税办理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设