位置: 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织梦去掉文档内链自动连接关键词的下划线(织梦的首页怎么换图片)

  • 互联网时代的营销,产品永远为王!(互联网时代的营销模式)

    互联网时代的营销,产品永远为王!(互联网时代的营销模式)

  • 京东会员有几个等级(京东会员有几个账号)

    京东会员有几个等级(京东会员有几个账号)

  • 华为智慧分屏怎么添加应用

    华为智慧分屏怎么添加应用

  • 骁龙和高通骁龙的区别(骁龙和高通骁龙的区别 新闻)

    骁龙和高通骁龙的区别(骁龙和高通骁龙的区别 新闻)

  • 苹果xsmax跑分多少正常

    苹果xsmax跑分多少正常

  • 淘宝可以看好友的浏览记录吗(淘宝可以看好友的购买记录吗)

    淘宝可以看好友的浏览记录吗(淘宝可以看好友的购买记录吗)

  • 华为手机充满电会自动断电吗(华为手机充满电自动断电怎么设置)

    华为手机充满电会自动断电吗(华为手机充满电自动断电怎么设置)

  • 微信群可以设置禁止加好友吗(微信群可以设置特别提醒吗)

    微信群可以设置禁止加好友吗(微信群可以设置特别提醒吗)

  • 快充协议有几种(快充协议有几种接口)

    快充协议有几种(快充协议有几种接口)

  • 手机开不了机充电没反应怎么办(手机开不了机充电一闪一闪的怎么回事)

    手机开不了机充电没反应怎么办(手机开不了机充电一闪一闪的怎么回事)

  • ipad10.5支持快充吗(ipad支持快充的机型)

    ipad10.5支持快充吗(ipad支持快充的机型)

  • magic14和magic2019区别

    magic14和magic2019区别

  • 华为mate30pro呼吸灯怎么设置(华为mate30pro呼吸灯不亮)

    华为mate30pro呼吸灯怎么设置(华为mate30pro呼吸灯不亮)

  • vivo手机内存卡插哪(vivo手机内存卡怎么使用)

    vivo手机内存卡插哪(vivo手机内存卡怎么使用)

  • 电脑键盘乘号怎么输入(电脑键盘乘号怎么打)

    电脑键盘乘号怎么输入(电脑键盘乘号怎么打)

  • soul不小心把距离关了(soul不小心把距离点没了如何回复)

    soul不小心把距离关了(soul不小心把距离点没了如何回复)

  • 饿了么怎么申请发票(饿了么怎么申请大额补贴)

    饿了么怎么申请发票(饿了么怎么申请大额补贴)

  • 银河奇异果能看电视直播吗(银河奇异果能看电视频道吗)

    银河奇异果能看电视直播吗(银河奇异果能看电视频道吗)

  • 拼多多账号注销流程(拼多多账号注销后订单还在吗)

    拼多多账号注销流程(拼多多账号注销后订单还在吗)

  • 高额半停机怎么恢复(高额半停机怎么自行解除)

    高额半停机怎么恢复(高额半停机怎么自行解除)

  • word如何设置页数(word如何设置页脚)

    word如何设置页数(word如何设置页脚)

  • 华为bacal00是什么型号(华为手机bacal00是什么型号)

    华为bacal00是什么型号(华为手机bacal00是什么型号)

  • 怎么充值公交卡(支付宝怎么充值公交卡)

    怎么充值公交卡(支付宝怎么充值公交卡)

  • 群红包额度上限怎么办(群红包额度上限怎么解决)

    群红包额度上限怎么办(群红包额度上限怎么解决)

  • 【强化学习探索01】Win10 下gym安装

    【强化学习探索01】Win10 下gym安装

  • vue2中无法监听数组和对象的某些变化问题(vue为什么监听不到对象内部属性)

    vue2中无法监听数组和对象的某些变化问题(vue为什么监听不到对象内部属性)

  • 纳税人享受的权利有哪些
  • 开普票需要交税多少
  • 商业汇票申请贴现分录
  • 筹建期间发生的开办费计入什么科目
  • 资产处置损益是营业外收入吗
  • 小规模公司用什么会计准则
  • 工会经费2019年新政策
  • 通用机打发票能作废吗
  • 红字发票信息表填好后再怎么操作
  • 进项税加计扣除什么时候开始的
  • 贩卖增值税发票怎么判刑
  • 个人收到的国外短信
  • 公司给员工买房子
  • 其他应收款 应收账款
  • 进出口企业如何防范汇率风险
  • 农产品增值税优惠政策2021
  • 一般纳税人能开普票吗,几个点
  • 个人所得税任职受雇信息有影响吗
  • 批发企业购进商品发生的进货费用可以选择下列
  • 债权性投资和权益性投资的区别
  • 同一控制下合并对价怎么算
  • 什么是增值税
  • 在建工程变更建设单位
  • 借款人约定分期还款中途可以起诉吗
  • 2022年苹果iphone14视频配音乐
  • PHP:stream_context_get_params()的用法_Stream函数
  • 个人所得税扣缴申报啥意思
  • 一般合同怎么写才有效
  • 采购国产设备退税公告
  • 先开票还是先付款最新规定
  • 遇到的问题及解决方法
  • 用人单位如何缴纳医疗保险
  • vscode怎么运行前端
  • framework开发教程
  • 发票确认平台勾选步骤
  • 员工多了怎么管理办法
  • 企业的所有分类
  • discuz发帖标签
  • c语言fgets函数用法stdin
  • 供应商质量考核评估表样板
  • 一般纳税人按简易办法计税销售额
  • 4s店开的维修发票怎么开
  • 应收账款的账龄怎么分析
  • 企业返聘退休人员需要交社保吗
  • 固定资产减值损失计入
  • 医疗收费票据管理制度
  • 固定资产指的是几年度
  • 公司收到财政局奖励怎么记账
  • 财务软件怎样和银行对账
  • 开票确定收入分录
  • 融资租赁租金利息怎么算
  • 对公账户原路退回备注怎么写
  • 项目所在地个税网上怎么报
  • 发票怎么打印的出来
  • 出口退税贷方余额是什么意思
  • 航天信息服务费280元如何申报
  • mysql在数据分析中的作用
  • sql server 错误
  • 自动备份mssql server数据库并压缩的批处理脚本
  • win7系统如何查看文件扩展名
  • win8.1怎么改win7系统
  • ubuntu20.04怎么样
  • apple mac book
  • ie11怎么打开ie8
  • win批处理命令
  • win7网络连接不显示
  • win7系统怎么删除输入法
  • linux常见服务
  • linux常用命令touch
  • 使用jquery实现的项目
  • Node.js中的construct构造函数
  • android开发遇到的技术难点
  • android 数据
  • 云南省电子税务局怎么改号码
  • 单位自有住房免增值税吗
  • 村级公益性支出是什么
  • 任何基金都可以转让吗
  • 四川税务稽查举报电话
  • 非房地产企业转让旧房土地增值税
  • 房屋增值税和土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设