基于vue-draggable-resizable的电子病历编辑器
- 通过新增拖拽面板编辑编辑内容
- 设计、编辑、只读模式
- 很多
安装vue-draggable-resizable
$ npm install --save vue-draggable-resizable
安装qrcodeautojs,在package.json中写入配置后进行安装(qrcodeautojs项目fork自qrcodejs,仅修改了两行代码以让生成的二维码自适应容器宽高)
"dependencies":{
"qrcodeautojs": "git+https://github.com/MaxYYYYY/qrcodejs.git"
}
或者使用软连接安装
"dependencies":{
"qrcodeautojs": "file:maxeditor在项目中的路径/lib/qrcodeautojs"
}
添加后安装
npm install
最后将assets中所有文件拷贝到你的项目中,在Vue通过import引入
<template>
<div>
<MaxEditor></MaxEditor>
</div>
</template>
<script>
import MaxEditor from './your/dir/maxeditor/assets'
export default {
components:{ MaxEditor}
}
</script>
Type: String
Required: true
Default: maxEditor_00
编辑器id,多tab下需要传入
Type: Number
Required: false
Default: 794
Type: Number
Required: false
Default: 1124
Type: Number
Required: true
Default: 500
视口高度(既编辑器所在容器的高度)
Type: Number
Required: false
Default: 20
左右边距
Type: Number
Required: false
Default: 20
上下边距
Type: Boolean
Required: false
Default: false
编辑器工具栏是否显示
Type: Boolean
Required: false
Default: false
编辑器工具栏设计按钮是否可见
方法通过钩子调用
<template>
<div >
<button @click="getBoards"></button>
<MaxEditor ref="maxeditor"></MaxEditor>
</div>
</template>
<script>
import MaxEditor from 'vue-maxeditor'
export default {
components:{ MaxEditor},
methods: {
getBoards(){
this.$refs.maxeditor.getBoards()
},
}
}
</script>
获取面板列表,返回值为json数组
设置面板列表,boards为json数组(对象以及字符串皆可),结构如上
cb为回掉函数,在页面设置完后执行
清除所有面板
设置编辑器模式,可选值为'design'、'edit'、 'readonly'
获取当前模式, 返回值为'design'||'edit'|| 'readonly'
根据id激活面板
释放面板焦点
获取当前编辑面板内容,返回值为html代码
获取当前编辑面板id
更改面板id
更改面板标题(仅文本框可修改)
更改标签(仅标签文本和下拉框可用)
更改面板z-index值
更具id获取面板对象,返回值示例如下
{
component: "maxeditor-board",
content: "春眠不觉晓<div>处处闻啼鸟</div>",
height: 48,
id: "dd",
imgs: null,
isFluid: false,
isSingleLine: false,
label: null,
title: null,
type: "normal",
width: 200,
x: 168,
y: 224,
z: 999,
}
根据id获取面板内容,返回值为html代码
根据id获取面板内容,innerText
设置面版内容,content可为html代码或文本内容
插入分隔线
插入普通多行文本面板,需要传入id
插入带标题多行文本面板
插入不可编辑的文本面板,该面板内容仅在设计模式下可编辑
插入带标签输入框
插入带标签下拉框,datalist示例如下
[{"value":"张三","id":"doctor_1"},
{"value":"李四","id":"doctor_2"},
{"value":"王五","id":"doctor_3"}]
更新下拉面板的选项列表,datalist如上所示
获取下拉框选项列表
获取下拉框当前选中项,返回值为对象
{"value":"张三","id":"doctor_1"}
设置下拉框选中选项,itemId为选项的id
插入图片容器
向图片容器中插入图片,imgs为json数组
[{
"src": "http://dmt.upload.streakingman.com/test01.jpg",
"tab": {
"position": "tr",
"color":"green"
},
"key": "pic2",
"label": "pic2"
}]
插入单张图片时也需要传入数组,此时图片大小根据容器高度而定
图片数量大于1时宽度为固定值160px
cb为回掉函数(可选),imgDomList为插入的图片dom集合
addImg(id, imgs, function (imgDomList) {
console.log(imgDomList)
//DO SOMETHING
})
清空图片容器内容
向图片容器中插入二维码
像图片容器中插入单张图片,img格式如下
{
"src": "http://dmt.upload.streakingman.com/test01.jpg",
"tab": {
"position": "br",
"color":"green"
},
"tabX": 30,
"tabY": 34,
"key": "pic2",
"label": "pic2"
}
tab的position为角标位置,有四个可选值tl、tr、bl、br,分别为左上角、右上角、左下角、右下角。color为背景颜色,值可为颜色名称或颜色代码(如white、#ff3306)
tabX、tabY为标记在绑定的示意图中的坐标
cb为回掉函数(可选),返回插入图片的dom元素
addImg(id, img, function (imgDom) {
console.log(imgDom)
//DO SOMETHING
})
根据key值获取图片容器中的图片对象
更新图片容器中的图片对象,更具传入的img对象的key值进行匹配跟新,cb为回掉函数,返回值为更新后的imgDom
根据key删除图片
绑定扫描图容器和示意图容器,两个入参分别为扫描图的容器id和示意图的容器id 被绑定的扫描图容器务必设置tab属性
解除绑定
打印,cb为回掉函数
在光标处插入文本,此方法底层为execCommand,所以调用时若焦点转移则无法插入
在光标处插入下拉框,values为选项json数组,示例如下
[{"value":"数据1"},
{"value":"数据2"},
{"value":"数据3"}]