0.2.18 • Published 9 months ago

vuefabricmodule v0.2.18

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

vue-fabric-module

vue-fabric-module

vue-fabric-module vue-fabric-module vue-fabric-module vue-fabric-module vue-fabric-module

vue-fabric-module :【基于vue2.0 fabric.js开发的画布组件画布编辑器,支持业务以下:创建圆形,矩形,文本,条码,二维码,图片,表格等等,画布的图册移动,隐藏,删除,画布的撤销、还原、缩放、对齐、居中、预览和保存等】The canvas component developed based on vue2.0 fabric.js.This canvas-edit supports the following businesses: creating circles, rectangles, texts, barcodes, QR codes, pictures, tables, etc., moving, hiding, deleting, and canceling canvases. Restore, zoom, align, center, preview and save, etc.

Build Setup

# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build

# build for production and view the bundle analyzer report
npm run build --report

# run unit tests
npm run unit

# run all tests
npm test

# use
npm install vuefabricmoudle --save

更新淘宝镜像

cnpm sync vuefabricmodule

自己发布了NPM包,有小伙伴反应,如果是TB源,CNPM上无法获取,不是最新等问题。 排查了下,原来是 CNPM有时候 不能及时同步。 所以需要自己去手工拉取下。 cnpm镜像.

依赖

下载到本地 static/js/文件下 customiseControls.js. fabric5.js. datamatrix.js. polyfill.min.js. browser.min.js.

在index.html引入

<script type="text/javascript" src="./static/js/polyfill.min.js"></script>
<script type="text/javascript" src="./static/js/browser.min.js"></script>

<script type="text/javascript" src="./static/js/fabric5.js"></script>
<script type="text/javascript" src="./static/js/customiseControls.js"></script>
<script type="text/javascript" src="./static/js/datamatrix.js"></script>

在main.js中引入

import 'vuefabricmodule/dist/vue-fabric-module.css'; //这个如果没有引入,则元素上鼠标右键不显示
import vuefabricmodule from 'vuefabricmodule'
...
Vue.use(vuefabricmodule)

如果需要动态生成条码和二维码

import JsBarcode from 'jsbarcode'
import jrQrcode from 'jr-qrcode'
...
new Vue({
  el: '#app',
  ...
  JsBarcode,  
  jrQrcode,
  ...
  })

组件使用

使用格式

<vuefabricmodule ref="canvas" :width="parseInt(width)" :height="parseInt(height)" :boxWidth="1200" :boxHeight="800" :zoom="parseFloat(zoom)" showRule="ALL" :backgroundColor="background" @changeZoomTo="changeZoomTo"></vuefabricmodule>

默认参数

NameTypeDefaultDescription
widthNumber300画布宽
heightNumber200画布高
backgroundColorString#fff画布颜色
boxWidthNumber1200窗口宽
boxHeightNumber800窗口高
BgColorString#f1f1f1窗口背景颜色
zoomNumber1缩放比
showRuleStringNONE(ALL,NONE,HORIZONTAL,VERTICAL)标尺

回调函数

FunctionParamsDescription
changeZoomTozoom缩放大小回调
deleteidsdataid回调删除的元素id
canvasToDataname, obj键盘移动回调

事件

使用格式

 <vuefabricmodule ref="canvas" @mouse:down="mouseDown" ></vuefabricmodule>

鼠标事件

nameTypeDescription
mouse:downeventmouse down
mouse:upeventmouse up
mouse:moveeventmouse move
mouse:dblclickeventmouse dblclick
mouse:overeventmouse over
mouse:outeventmouse out

其它事件

nameTypeDescription
selection:createdevent选中 canvas 元素对象,单选和多选都会触发此事件
selection:updatedeventselection updated
selection:clearedeventselection cleared
before:selection:clearedeventbefore selection cleared
object:addedevent当有元素被添加进来时候触发
object:removedeventobject removed
object:modifiedeventobject modified
object:rotatingeventobject rotating
object:scalingeventobject scaling
object:movingeventobject moving
object:rotatedeventobject rotated
object:scaledeventobject scaled
object:movedeventobject moved

方法调用

调用格式:

this.$refs.canvas.方法名(params)

changeWH(options) 改变宽高,并且居中适配显示

options:{}

optionsTypeDefaultDescription
widthNumberthis.width重置宽
heightNumberthis.height重置高
backgroundColorStringthis.backgroundColor重置画布颜色

使用:

 this.$refs.canvas.changeWH({width: 1000, height: 800, backgroundColor: '#ff0'})

changeBackgroundColor(color) 仅改变画布颜色

参数:

optionsTypeDefaultDescription
colorString'#fff'画布颜色

使用:

 this.$refs.canvas.changeBackgroundColor('#ff0')

changemoveing(bol) 改变画布操作状态是 抓手:可以移动、缩放,不可选择, 箭头:不可移动缩放,可选择

参数:

optionsTypeDefaultDescription
bolBooleanfalsetrue:可以移动缩放抓手,false:不可移动缩放箭头

使用:

 this.$refs.canvas.changemoveing(true)

changeLeftTop() 按当前比例左上对齐窗口

参数:无

使用:

 this.$refs.canvas.changemoveing()

changeOrigin() 按当前比例居中对齐窗口

参数:无

使用:

  this.$refs.canvas.changeOrigin()

changeBigZoom() 画布适配当前窗口

参数:无

使用:

  this.$refs.canvas.changeBigZoom()

changeOneZoom() 画布1:1居中显示

参数:无

使用:

  this.$refs.canvas.changeOneZoom()

getEditObj() 获取当前活跃的元素

参数:无

使用:

  this.$refs.canvas.getEditObj()

removeEditObj() 删除当前活跃的元素(右键调用此)

参数:无

使用:

  this.$refs.canvas.removeEditObj()

setActiveObject(obj) 设置元素为活跃元素

参数: obj

使用:

  this.$refs.canvas.setActiveObject(obj)

copypaste() 复制粘贴活跃元素,坐标往右下偏移10像素(右键调用此)

参数:无

使用:

  this.$refs.canvas.copypaste()

getObjectsNew() 获取画布所有元素

参数:无

使用:

  this.$refs.canvas.getObjectsNew()

discardActive() 画布所有元素取消活跃状态

参数:无

使用:

  this.$refs.canvas.discardActive()

createElement(name, options) 画布创建元素

参数:

nameoptionsdefaultDescription
Rectwidth,height,{width:xx,height:xx,}矩形
Rectanglewidth,height,{width:xx,height:xx,}圆角矩形
Parallelogramwidth,height,{width:xx,height:xx,}平行四边形
Circlewidth,height,{width:xx,height:xx,}椭圆形
EqualCirclewidth,height,{width:xx,height:xx,}正圆
Dottedlinewidth,height,{width:xx,height:xx,}线段
EqualTrianglewidth,height,{width:xx,height:xx,}等边三角形
starwidth,height,{width:xx,height:xx,}五角星
Hexagonwidth,height,{width:xx,height:xx,}正六边形
Imagewidth,height,{width:xx,height:xx,}图片
Iconwidth,height,{width:xx,height:xx,}静态图片
equalImagewidth,height,{width:xx,height:xx,}保持居中的图片
Barcodewidth,height,{width:xx,height:xx,}条码
Qrcodewidth,height,{width:xx,height:xx,}二维码
Timewidth,height,{width:xx,height:xx,}时间文字
Itextwidth,height,{width:xx,height:xx,}当行编辑文本
Textboxwidth,height,{width:xx,height:xx,}文本域
TextRectwidth,height,{width:xx,height:xx,}限制宽高的文本
Htmlwidth,height,{width:xx,height:xx,}html
tablewidth,height,{width:xx,height:xx,}表格

使用:

this.$refs.canvas.createElement(name, options)

toHorizontalCenterDistribution() 水平居中分布

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toHorizontalCenterDistribution()

toVerticalCenterDistribution() 垂直居中分布

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toVerticalCenterDistribution()

toLeftAlign() 左对齐

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toLeftAlign()

toHorizontalCenterAlign() 水平居中对齐

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toHorizontalCenterAlign()

toRightAlign() 右对齐

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toRightAlign()

toTopAlign() 顶对齐

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toTopAlign()

toVerticalCenterAlign() 垂直居中对齐

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toVerticalCenterAlign()

toBottomAlign() 底对齐

参数:无

对象:画布中的活跃对象

使用:

  this.$refs.canvas.toBottomAlign()

moveToshow(object, index) 移动层级

参数:object, index

使用:

  this.$refs.canvas.moveToshow(object, index)

toCutObject(object) 画布单个元素预览

参数:object

使用:

  this.$refs.canvas.toCutObject(object)

toDataUrlImg 画布预览

参数:无

使用:

  this.$refs.canvas.toDataUrlImg()

对象新增参数 2023.02.02

nameDescriptiondefault
strokeWidth边框粗细0
stroke边框颜色''
borderType边框类型1
strokeDashArray边框类型设定 1:直线0,0 ; 2:虚线 5,1直线0,0
fillinColor文本组件填充背景颜色'rgba(0,0,0,0)'

上线发包流程

1.改pagckage.json版本号;
2.填写版本记录发布内容;
3.npm run build 生成js生成环境文件;
4.git add . 
  git commit -m 'vxx.xx.xx'
  git push origin master
5.npm publish --otp=xxxxxx;

Changelog

2022.05.16

v0.0.1 * 项目初始化

2022.05.17

v0.0.2 * 项目可引用

2022.05.18

v0.0.3 * 画布初始化,新增API和接口文档

  • 新增api 改变画布宽高和颜色

2022.05.18

v0.0.4 v0.0.5* 新增API和接口文档,导出画布组件

  • 新增api 改变画布操作状态是 抓手:可以移动、缩放,不可选择, 箭头:不可移动缩放,可选择
  • 新增api 按当前比例左上对齐窗口
  • 新增api 按当前比例居中对齐窗口
  • 新增api 画布适配当前窗口
  • 新增api 画布1:1居中显示

2022.05.19

v0.0.6 * 新增API和接口文档,新增组件,组件右键操作,部分键盘快捷键

  • 新增api 仅改变画布颜色
  • 新增api 获取当前活跃的元素
  • 新增api 删除当前活跃的元素(右键调用此)
  • 新增api 设置元素为活跃元素
  • 新增api 复制粘贴活跃元素,坐标往右下偏移10像素(右键调用此)
  • 新增api 获取画布所有元素
  • 新增api 画布所有元素取消活跃状态
  • 新增api 画布创建元素
  • 新增回调函数 删除回调ids,键盘移动回调
  • 新增功能 全局键盘事件(window.event.keyCode===46:delete删除所有活跃元素;37:左移1像素;38:上移1像素;39:右移1像素;40:下移1像素)
  • 新增功能 元素右键事件(图层:上移一层,下移一层,置顶,置底;复制;删除)

2022.05.23

v0.0.7 * 新增API和接口文档,新增组件,验证复制和组团复制

  • 新增的组件验证是否可以复制
  • 条码和二维码的缩放图片重绘
  • 鼠标感应元素,出现虚线框;移动元素,元素透明度降到0.8可以看到下面的图层
  • 新增二维码创建的方法
  • 新增条码创建的方法
  • 新增表格创建的方法
  • 示例中,监听窗口大小改变画布大小

2022.05.25

v0.0.8 * 修复画布的点击感应透明的问题,修复条码不能旋转的问题

2022.05.26

v0.0.9 * 新增API接口

  • 新增api 水平居中分布
  • 新增api 垂直居中分布
  • 新增api 左对齐
  • 新增api 水平居中对齐
  • 新增api 右对齐
  • 新增api 顶对齐
  • 新增api 垂直居中对齐
  • 新增api 底对齐
  • 新增api 移动层级

2022.05.27

v0.0.11 * 新增API接口

  • 新增api 回调选择的id集合
  • 新增api 新增根据ids id删除元素的接口
  • 新增api 新增根据ids id设置元素活跃的接口
  • 修复 宽高颜色设置的bug
  • 背景颜色允许不填透明色,但是加边框
  • 修复文本TextRect组件多选选择移动的bug

v0.0.12 * 修复bug

  • 修复组合shift选择没有返回id
  • 新增选择的id回调selectId
  • 根据id删除新增动画效果

2022.05.30

v0.0.13 * 新增几个事件的回调 v0.0.14 * 页面渲染的方法和布局回调改变 v0.0.15 * getZoom获取当前缩放 v0.0.16 * canvasToData横纵对齐回调

2022.05.31

v0.0.17 * 新增api 画布预览和画布内组件切割生成图片

  • Image元素换方法解决预览跨域报错

2022.06.02

v0.0.18 *新增api 文本自适应的类型改变和文字改变

  • 修复二维码缩放图层置顶问题,文本条码图片新增图层参数

v0.0.19 * 新增api 文本退出编辑的 v0.0.20

  • 退出编辑修复取消选中文本的bug v0.0.21
  • 多个文本编辑组件的退出编辑

2022.06.03

v0.0.22

  • 修复文本的图层问题 v0.0.23
  • 修复图层排序问题 v0.0.24
  • 修复图层排序置顶置底问题 v0.0.25
  • 修复图层排序置顶置底问题

2022.06.10

v0.0.26

  • 表格相关的入参调整 v0.0.27
  • 表格图层和坐标 v0.0.28
  • 表格重写方法修改 v0.0.29
  • 表格图层问题
  • 表格重置的id和layer
  • 拖拽元素的透明度与设置的冲突
  • 表格组件的封装

2022.07.26

v0.0.30

  • 二维码和条形码支持背景颜色和内容颜色同时变化

2022.07.27

v0.0.31

  • 文本编辑时回调

2022.08.02

v0.0.32

  • 条码默认背景区域透明颜色 v0.0.33
  • 忘记编译了

2022.08.16

v0.0.34

  • 图片透明度添加

2022.08.25

v0.0.35

  • 默认页面用仿PS的页面

2022.08.29

v0.0.36

  • 文本事件监听(text:changed, text:editing:entered, text:editing:exited)

2022.09.08

v0.0.37

  • 文本组件优化,编辑和退出编辑模式

2022.09.08

v0.0.38

  • 文本组件优化,刷新时宽高缩小有问题

2022.09.13

v0.0.39

  • 文本组件优化,拖拽宽高修改
  • 文本英文省略4个字,汉字省略2个字

v0.0.40

  • 文本组件退出编辑的方法添加退出编辑选择当前文本的逻辑

2023.02.02

v0.1.0

  • 文本组件新增边框,边框参数(border,borderWidth,borderType,strokeDashArray,fillinColor);
  • 矩形、椭圆形、圆角矩形 形状新增边框。

2023.02.03

v0.1.1

  • 文本组件新增边框,边框参数(strokeWidth,stroke,borderType,strokeDashArray,fillinColor);
  • 矩形、椭圆形、圆角矩形 形状新增边框。

2023.02.07

v0.1.2

  • 文本的具体属性修改

2023.02.09

v0.1.3

  • 文本组件拖拽选择框较大问题修复

2023.02.10

v0.1.5

  • 文本组件的层级问题,文本组件要被边框包围逻辑修改,文本组件改变边框样式的逻辑修改,文本的自适应和不使用切换对样式的继承

2023.02.13

v0.1.6

  • 文本组件的内嵌,需要在所有算法逻辑中引入textPadding用于去掉边框的宽度,修改如:缩放,缩放结束,文本新增、文本进入编辑、文本改变、文本退出编辑等函数;
  • 兼容vuefabric2020的旧文本组件的文本框功能;
  • 文本组件中文本新增和缩放时添加文本裁切功能;

2023.03.01

v0.1.7

  • 修复文本重绘时丢失加粗,斜体下划线等属性值

2023.04.13

v0.1.8

  • 新增价格组件

2023.04.13

v0.1.9

  • 按id显示隐藏

2023.04.13

v0.1.10

  • 数字组件的细节优化
  • 透明背景支持

2023.04.17

v0.1.11

  • 复制粘贴新增快捷方式
  • 整数错误处理

2023.04.18

v0.1.12

  • 修复全局左右上下移动和input框中事件冲突
  • 修复数字组件的文字重影

v0.1.13

  • 微调缩放效果

v0.1.14

  • 重绘后方位重调

v0.1.15

  • 修改小数点字体bug

v0.1.16

  • 字体改变重绘
  • 数字组件的选择坐标定位

2023.04.19

v0.1.17

  • 向上取整默认值计算错误
  • 数字组件整体旋转问题修复
  • 延迟时间修改

2023.04.21

v0.1.18

  • 小数字号对齐整数
  • 应用新增逻辑

2023.04.23

v0.1.19

  • 改变小数字号,后缀位置调整

2023.05.11

v0.1.20

  • 图片适应和拉伸变换

2023.05.24

v0.1.21

  • 图片默认值

v0.1.22

  • 图片支持适应和拉伸时计算图片宽高

v0.1.23

  • 二维码缩放影响图片显示
  • 新增修改9个控制角的图片

2023.06.26

v0.1.24

  • 优化价格组件

v0.1.25

  • 优化价格组件(某个参数)

v0.1.26

  • 新增一个价格组件的参数
  • 条码类型改变条码图片修改

2023.07.13

v0.1.27

  • 修复图片旋转功能

v0.1.28

  • 修复图片加载失败时默认图片
  • 修复条码加载失败时显示
  • 部分文本组件的重构

v0.1.29

  • 图片组件加载失败后判断

2023.07.17

v0.1.30

  • 文本组合组件重构NewText

2023.08.07

v0.1.31

  • 新增标尺和辅助线的开关设置

v0.1.32

  • 图片旋转角度没有返回

v0.1.33

  • 画布改变宽高颜色

v0.1.34

  • 画布标尺和辅助线做成开关

v0.1.35

  • 默认画布撑满
  • 画布表框1像素去掉

2023.08.08

v0.1.36

  • 数字价格组件初始化右边有空格
  • 数字组件没有隐藏

2023.08.18

v0.1.37

  • 画布新增组件坐标展示

v0.1.37

2023.12.11

v0.1.38

  • 画布文本组件重构
  • 画布添加删除按钮
  • 键盘事件和组件坐标、选择框等附属样式联动
  • 浏览器缩放画布大小1:1缩放

2023.12.11

v0.1.39

  • 新版本提交试试

2023.12.12

v0.2.0

  • 标尺bug修复,缩放坐标数值计算修复;
  • 业务中准备引入富文本组件、标尺功能、坐标功能、对齐线功能;
  • 业务中需考虑浏览器缩放->画布缩放
  • 业务中考虑新增删除图片,画布中可删除组件;

2024.01.10

v0.2.1

  • 新增钢笔划线工具;
  this.$refs.canvas.showPenAction(true)
  this.$refs.canvas.changePenStyle('#00ff00', 2)
  this.$refs.canvas.setCursor(6)

2024.01.12

v0.2.2

  • 修复数字价格组件宽高多1像素问题

2024.01.18

v0.2.3

  • 标尺新增主题颜色;
  • 标尺的锁定和解锁;
  • 标尺蓝色对象刻度粗细放大时不好看;
  • 钢笔多边形封装,新增对齐线和id;
  • 画布中部分组件优化,允许loadjson;

2024.01.24

v0.2.4

  • 新增shelf图片功能;
  • 新增ap图片功能;
  • 画布画框的功能;
  • 画多边形的功能;
  • 完善加载json的功能;
  • 完善复制和8角控制功能;

2024.01.29

v0.2.5

  • setMapComponetsWeight(obj, width)函数改变宽
  • setMapComponetsHeight(obj, height)函数改变高
  • 修复新增锁背景,和报错

2024.01.31

v0.2.6

  • 修复部分bug
  • 撑满缩放返回缩放比

2024.01.31

v0.2.7

  • 修复部分bug

2024.04.19

v0.2.9

  • 新增比例尺、新增折现测量工具

2024.04.26

v0.2.11

  • 禁止默认ctrl+滚轮的缩放,支持画布缩放;

2024.04.28

v0.2.12

  • 允许替换堆头的背景图片
  • ctrl+缩放单独出函数

2024.05.09

v0.2.13

  • 解决货架图片尺寸显示问题
  • 解决测距工具移动偏移问题

2024.05.09

v0.2.14

  • 新增alt快捷方式+拖拽 平移画布
  • 原ctl+滚轮 中心缩放画布

2024.07.15

v0.2.15

  • 新增条码中PDF417类型的处理

2024.07.18

v0.2.16

  • 条码切换

2024.08.01

v0.2.17

  • 表格重绘需要带标志组件,重绘图层

2024.09.19

v0.2.18

  • 修复一个报错异常
0.2.18

9 months ago

0.2.16

11 months ago

0.2.15

11 months ago

0.2.14

1 year ago

0.2.13

1 year ago

0.2.12

1 year ago

0.2.11

1 year ago

0.2.10

1 year ago

0.2.9

1 year ago

0.2.8

1 year ago

0.2.7

1 year ago

0.2.6

1 year ago

0.2.5

1 year ago

0.2.4

1 year ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.38

2 years ago

0.1.30

2 years ago

0.1.31

2 years ago

0.1.32

2 years ago

0.1.33

2 years ago

0.1.34

2 years ago

0.1.35

2 years ago

0.1.36

2 years ago

0.1.37

2 years ago

0.1.27

2 years ago

0.1.28

2 years ago

0.1.29

2 years ago

0.1.23

2 years ago

0.1.24

2 years ago

0.1.25

2 years ago

0.1.26

2 years ago

0.1.10

2 years ago

0.1.11

2 years ago

0.1.12

2 years ago

0.1.13

2 years ago

0.1.14

2 years ago

0.1.15

2 years ago

0.1.0

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.9

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.20

2 years ago

0.1.21

2 years ago

0.1.22

2 years ago

0.1.16

2 years ago

0.1.17

2 years ago

0.1.18

2 years ago

0.1.19

2 years ago

0.0.40

3 years ago

0.0.37

3 years ago

0.0.38

3 years ago

0.0.39

3 years ago

0.0.35

3 years ago

0.0.36

3 years ago

0.0.20

3 years ago

0.0.21

3 years ago

0.0.22

3 years ago

0.0.23

3 years ago

0.0.24

3 years ago

0.0.25

3 years ago

0.0.15

3 years ago

0.0.16

3 years ago

0.0.17

3 years ago

0.0.18

3 years ago

0.0.19

3 years ago

0.0.30

3 years ago

0.0.31

3 years ago

0.0.32

3 years ago

0.0.10

3 years ago

0.0.33

3 years ago

0.0.11

3 years ago

0.0.34

3 years ago

0.0.12

3 years ago

0.0.13

3 years ago

0.0.14

3 years ago

0.0.3

3 years ago

0.0.26

3 years ago

0.0.9

3 years ago

0.0.27

3 years ago

0.0.8

3 years ago

0.0.28

3 years ago

0.0.29

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago