0.0.3 • Published 2 years ago

yiyun-qrcode v0.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

亦云二维码组件

doc

example

git

npm install yiyun-qrcode
import YiYunQrCode from 'yiyun-qrcode'
// import 'yiyun-qrcode/style.css' /** 使用TemplateEditor组件需要引入的css文件 **/

Vue.use(YiYunQrCode)

// 单独使用某个组件如QrCodeBinder
import { QrCodeBinder } from 'yiyun-qrcode'

Vue.use(QrCodeBinder)

QrCodeContainer

展示一个使用了模版的二维码

宽高直接在组件上设置样式即可,必须与模版默认宽高同比例,不然可能出现显示异常

const qrInfo = {
  "id": "4XyE7bjFLUq", // 二维码ID
  "model": {
    "config": {
      "id": "color5",
      "svg": "<svg...", // 模版字符串
      "defaultColor": "#254569", // 模版默认背景色值
      "defaultWidth": 120, // 模版默认宽
      "defaultHeight": 80, // 模版默认高
      "hasLogo": true, // 模版是否有logo
      "hasTitle": true, // 模版是否有标题
      "hasSubTitle": true, // 模版是否有副标题
      "tagCount": 4, // 模版字段数量
      "type": 2, // 0 黑白模版    1 彩色模版    2 自定义模版
    },
    "width": 120,
    "height": 80,
    "backgroudColor": "#254569",
    "logo": "https://pinia.vuejs.org/logo.svg",
    "title": "🥸🥸🥸🥸",
    "subTitle": "",
    "tagFields": [
      "🥸🥶🫠🥲🥸🥶🫠🥲🥸🥶",
      "🥱🥱🥱🥱",
      "🥱",
      "卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡卡",
    ],
  },
}

<QrCodeContainer
  :qrInfo="qrInfo"
  style="{ 'width': `${qrInfo.model.width}mm`, 'height': `${qrInfo.model.height}mm` }"
/>

参数

名称类型必填描述
qrInfo-通过二维码详情接口获取到的数据

QrCodeTemplate

展示模版缩略图

const tplInfo = {
  "id": "4XxixG511AP",
  "name": "标签981011",
  "svg": "<svg...",
  "svgDemo": "https://dl-edisk.effio.cn/ptest/1522378481458163712.svg",
  "defaultColor": "#FFFFFF",
  "defaultWidth": 150,
  "defaultHeight": 100,
  "hasLogo": true,
  "hasTitle": true,
  "hasSubTitle": true,
  "tagCount": 4,
  "type": 2,
}

<QrCodeTemplate :tplInfo="tplInfo" style="height:250px;" />

参数

名称类型必填描述
tplInfo-模版详情

QrCodeBinder

根据给的模版信息与模版数据实时展示带有模版的二维码

宽高直接在组件上设置样式即可,必须与模版默认宽高同比例,不然可能出现显示异常

const tplInfo = {
  "id": "4XxixG511AP",
  "svg": "<svg...",
  "defaultColor": "#FFFFFF",
  "defaultWidth": 150,
  "defaultHeight": 100,
  "hasLogo": true,
  "hasTitle": true,
  "hasSubTitle": true,
  "tagCount": 4,
	"type": 2,
}

const tplData = {
  "id": "4XvmuiUeC2b", // 二维码ID
  "width": 150, // 模版宽(自定义模版无效)
  "height": 100, // 模版高(自定义模版无效)
  "backgroudColor": "#FFFFFF", // 模版背景色
  "logo": "https://pinia.vuejs.org/logo.svg",
  "title": "KKAOKAO",
  "subTitle": "北包包包包包包包包包包包包包包包包包包包包包包包包",
  "tagFields": [ // 字段集合
    "🥶🫠🥲🥸🥶🫠🥲🥲",
    "🫠🥲🥸🥶🫠🥲🥸🥶",
    "🫠🥲🥸🥶🫠🥲🥸🥶",
    "🥲🥸🥶🫠🥲🥸🥶🫠",
  ],
}

<QrCodeBinder
	:style="{ 'width': `${tplData.width}mm`, 'height': `${tplData.height}mm` }"
	:tplInfo="tplInfo" :tplData="tplData" ref="QrCodeBinder"
	focusColor="rgba(251, 113, 133, 1)"
/>

参数

名称类型必填默认值描述
tplInfo--模版详情
tplData--绑定到模版的数据
focusColorString(色值)#fbbf24聚焦框颜色

方法

名称参数描述
showFocustype: ‘title'/'subTitle'/'field', index(字段索引): Number, text?(提示文字): String显示聚焦框
hiddenFocus-隐藏聚焦框

QrCodeTemplateEditor

创建新的自定义模版或者编辑已有自定义模版,组件推荐最小尺寸(宽:1090px, 高:810px)

const preTplInfo = {
	id: '',
  name: '',
  defaultColor: '#FFFFFF',
  defaultWidth: 150,
  defaultHeight: 100,
}
const preControls = [{"type":"rect","tag":"rect": "..."}]
const templateName = '标签123'

<QrCodeTemplateEditor
	ref="templateEditor" style="width:100%;height:100%;"
  :fonts="[{ name: 'Fira Code', value: 'Fira Code' }, { name: 'JetBrains Mono', value: 'JetBrains Mono' }]"
  :colors="['#eea2a4', '#ee3f4d', '#12aa9c', '#57c3c2', '#ef6f48', '#9b1e64']"
  :preControls="preControls" :preTplInfo="preTplInfo" primaryColor="#fb7185"
	:fieldMaxCount="5" :rectMaxCount="5" :showHotKeyBoard="true" :hotKey="true"
/>

参数

名称类型必填默认值描述
primaryColor色值#0B58D2组件主题色
fonts[]{ name: String, value: String }四种字体添加自己的字体
colors[]String16种颜色添加自己的颜色
preTplInfo-{ id: '', name: '', defaultColor: ‘#FFFFFF, defaultWidth: 150, defaultHeight: 100 }模版详情,用于编辑已有模版,不传则为新建模版
preControls[]Control[]通过获取模版控件信息接口得到的数据(反序列化再使用)
showHotKeyBoardBooleantrue显示快捷键面板
showControlLibBooleantrue显示控件库
showAttrsBoardBooleantrue显示控件属性面板
hotKeyBooleantrue开启内置快捷键
fieldMaxCountNumber8字段控件最大数量
rectMaxCountNumber10矩形控件最大数量
lineMaxCountNumber3直线控件最大数量
uploadImageCallBackFunction...图片上传回调,参数为选择的文件,返回值会赋给图片路径

方法

名称参数返回值描述
undo--撤销
unUndo--反撤销
cloneControl--复制当前控件
pasteControl--粘贴复制的控件
incrementScaleNumber-画布缩放
fitScale--画布缩放至一个合适的大小
addControltype(控件类型):‘title’/‘subTitle’/‘field’/‘qr’/‘logo’/‘rect’/‘line’, position?(相对于画布左上角的偏移量): x:Number, y:Number-添加一个控件
toEdgetype: ‘top’/‘bottom’-将当前控件图层移至画布顶部或底部
moveLeveltype: ‘up’/‘dowm’-将当前控件图层下或上移一层
removeControl--删除当前控件
setTemplateSizewidth: 20 ≤ Number ≤ 250, height: 20 ≤ Number ≤ 250-设置模版大小
setControlColorColor(色值)-设置当前控件的颜色
toggleBold--切换文字是否粗体
toggleItalic--切换文字是否斜体
setTextAligntype: ‘left’/‘center’/‘right’-设置当前文字控件的对齐方式
setFontFamilyfont: String-设置当前文字控件的字体
setFontSizesize: 12 ≤ Number ≤ 72设置当前文字控件的字体大小
setRectRxrx: 0 ≤ Number ≤ 50-设置当前矩形控件的圆角
getTplDemoBlob-false/Blob获取模版缩略图的Blob对象,模版不符合要求时返回false(未添加二维码控件)
generateUsefulData--生成完整的二维码模版信息,模版不符合要求时返回false(未添加二维码控件或二维码名称为空),数据格式见下方
interface IQrCodeTemplate {
  id?: String, // 二维码ID,如未传则返回的数据不含有这项
  name: String,
  svg: String, // 模版字符串
  width: Number,
  height: Number,
  defaultColor: String,
  hasLogo: Boolean,
  hasTitle: Boolean,
  hasSubTitle: Boolean,
  tagCount: Number,
  controls: JSON.stringify([]Control), // 二维码控件信息
}

事件

名称触发
addControlFail控件添加失败
noQr生成二维码模版信息时未添加二维码控件
noName生成二维码模版信息时二维码名称为空