UE
1.0.0
1.复制、纯文本粘贴、带格式粘贴、切剪
2.控件复制粘贴(包含控件sde-model属性及所带事件)
1. 字体、字号、增大字体、缩小字体
2. 字体设置颜色及背景色
i. 字符
ii. 链接
1. 插入链接、取消链接
2. 插入折线图链接
iii. 图片
1. 图片放大、涂鸦、图片上添加文字
iv. 表格
1. 插入表格
2. 表格设置边框线(上下左右、外围、内部、所有、清除)
v. 公式(节点形式)
1. 公式插入后可编辑且可回写
vi. 视频
1. 支持在编辑器内播放插入的视频
vii. 条形码,二维码
1. 支持设置宽高及内容
1. 文本控件、日期控件、下拉控件
(20180409 17.00)发布新包,版本号 2.1.0.20180409.17-SNAPSHOT,版本备份:无
更新内容:
1.增加趋势图点击折点,折点数据回写到指定id控件中;
2.控件树优化,支持模糊搜索;
3.修复控件侧面,特殊情况下光标点不进的问题;
4.切换页面....光标点不进的问题.
5.双击点不进的问题.
6.删除控件.还会有源码存在的问题
(20180327 18.00)发布新包,版本号 2.1.0.20180327.18-SNAPSHOT,版本备份:无
更新内容:
1.修复复制控件时出现复制一行内容及有时出现复制粘贴单个控件损坏的问题;---Nothing
2.修复复制下拉控件时,下拉框错位问题;---Nothing
3.修复涂鸦功能中输入框不能输入文字问题;---Nothing
4.优化tab切换光标定位不准确问题;---Nothing
5.控件点击时,需要调用自定义方法的功能:通过sdeUserFun对象绑定自定义方法.---king
6.修复涂鸦后图片打印显示不出来的问题---king
7.添加一个新对象:sdeAction...该对象主要提供与后台交互接口.默认用变量sdeaction初始化使用---king
8.新增一个接口:sdeAction.base64ToImg(base64Str,uploadType,actionType)---king
* 描述: 通过同步请求更新base64图片
* 参数: base64Str: 一个base64字符串
* uploadType: 更新类型.1本地更新.2fastdfs更新
* actionType: 涂鸦更新等,默认uploadscrawl更新....具体看com.ry.editor.template.ueditor.define.ActionMap
*
* 返回参数:JSON
* suffixType: 后缀类型
* uploadType: 更新类型.1本地更新.2fastdfs更新
* msg: 消息
* code: 编码:500失败.200成功
* url: 上传后图片路径
9.修复文本控件编辑时控件限定长度无法回写的问题---king
10.修复设置行距.保存病程记录导致报错的问题---king
数据库增量脚本SVN序号为: 0020(无变化)



建议给病历模板设计者(开发人员,或者科主任)使用。
可用来设计电子病历模板,也可以当做电子病历编辑器使用。
此时输入的值可利用SDE对象暴露出的接口获取。
增加自定义toolbar标题功能,可支持多语言。
建议给医生使用。
此时医生可以在原有模板中添加已有的控件,也可以给科主任用来设计模板。
亦可通过SDE对象暴露出来的接口获取数据。
建议该模式给医生查看使用,在该模式下电子病历中所有控件均不可编辑。
--data 模拟异步请求的数据,正式项目中可忽略
--dialogs 扩展百度ueditor的dialogs
--lang toolbar多语言支持,可自定义toolbar标题
--dist-- 核心js文件
js--
--sde.design3.js SoDiaoEditor设计器核心js
--sde.editor3.js SoDiaoEditor编辑器核心js
--example 一些demo
--ueditor 百度ueditor库,可替换成自己版本
--sde.config.js 核心配置文件 <!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>设计模式--电子病历设计器</title>
<!-- 注意以下各脚本之间的加载顺序! -->
<script type="text/javascript" src="sde.config.js"></script>
<link rel="stylesheet" href="ueditor/themes/default/css/ueditor.css" />
<script type="text/javascript" src="ueditor/ueditor.all.js"></script>
<script type="text/javascript" src="ueditor/lang/zh-cn/zh-cn.js"></script>
<script type="text/javascript" src="dist/js/sde.design.js"></script>
</head>
<body>
<script id="myEditor" type="text/plain" style="width:680px;height:1000px;">
病历模板...
</script>
<script type="text/javascript">
window.onload = function() {
var sde = new SDE({
id: "myEditor",
title: '<div style="height: 45px;overflow: hidden;background-color: #16742B;">' +
'<div class="left" style="position:absolute;top:0;left:0;">' +
'<img src="../data/img/SoDiaoL.png" style="height:35px;margin:5px;border:none;" />' +
'</div>' +
'<h1 style="font-size: 14px;height: 45px;line-height: 45px;margin: 0 auto;text-align: center;font-weight: normal;color:#fff;" >SoDiaoEditor电子病历编辑器</h1>' +
'</div>', //自定义title
iframe_js_src: "", //iframe中添加js脚本,可以为string或Array类型。例如:"xx/xx.js"或者["aa/aa.js","bb/bb.js"]
iframe_css_src: "" //iframe中添加css脚本,可以为string或Array类型。例如:"xx/xx.css"或者["aa/aa.css","bb/bb.css"]
});
};
</script>
</body>
</html>
각 스크립트 사이의로드 순서는 다음과 같습니다. 구성 항목 (sde.config.js) :
/*
默认配置项
*/
(function() {
var URL = window.UEDITOR_HOME_URL || getUEBasePath();
/*
SDE_CONFIG 配置项
*/
window.SDE_CONFIG = {
HOME_URL: URL,
HOME_URL_DIALOGS: URL + 'dialogs/',//SoDiaoEditor扩展ueditor的dialogs位置
EDITOR_URL: URL + 'dist/js/sde.editor.js',
MODE: "DESIGN", //DESIGN:设计|EDITOR:编辑|READONLY:只读(所有节点都不可编辑)
CONTROL_TEMPLATES: [],//控件模板
PLUGINS:[]//toolbar中扩展的组件
};
/**
* 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
*/
window.UEDITOR_CONFIG = {
UEDITOR_HOME_URL: URL + 'ueditor/', //为编辑器实例添加一个路径,这个不能被注释
serverUrl: URL + "data/config.json", //URL + "net/controller.ashx", // 服务器统一请求接口路径
toolbars: [], //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义
autoClearinitialContent: false, //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了
//iframeJsUrl: URL + window.SDE_CONFIG.EDITOR_URL + '?temp=' + new Date().getTime(), //给编辑区域的iframe引入一个js文件
// iframeCssUrl: URL + 'EMR/css/default.css?temp=' + new Date().getTime(), //给编辑区域的iframe引入一个css文件
allowDivTransToP: false, //允许进入编辑器的div标签自动变成p标签
wordCount: false, //关闭字数统计
elementPathEnabled: false, //关闭elementPath
autoClearinitialContent: false
};
function getUEBasePath(docUrl, confUrl) {
return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());
}
function getConfigFilePath() {
var configPath = document.getElementsByTagName('script');
return configPath[configPath.length - 1].src;
}
function getBasePath(docUrl, confUrl) {
var basePath = confUrl;
if (/^(/|\\)/.test(confUrl)) {
basePath = /^.+?w(/|\\)/.exec(docUrl)[0] + confUrl.replace(/^(/|\\)/, '');
} else if (!/^[a-z]+:/i.test(confUrl)) {
docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\/]+$/, '');
basePath = docUrl + "" + confUrl;
}
return optimizationPath(basePath);
}
function optimizationPath(path) {
var protocol = /^[a-z]+:///.exec(path)[0],
tmp = null,
res = [];
path = path.replace(protocol, "").split("?")[0].split("#")[0];
path = path.replace(/\/g, '/').split(///);
path[path.length - 1] = "";
while (path.length) {
if ((tmp = path.shift()) === "..") {
res.pop();
} else if (tmp !== ".") {
res.push(tmp);
}
}
return protocol + res.join("/");
}
window.UE = {
getUEBasePath: getUEBasePath
};
})();
알아채다:
Window.sde_Config 및 Window.ueUditor_config에 집중하십시오. Window.euditor_config를 수정하는 것이 좋습니다. Window.sde_config 객체를 필요에 따라 사용할 수 있습니다.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>编辑模式--电子病历编辑器</title>
<script type="text/javascript" src="dist/js/sde.editor.js"></script>
</head>
<body>
<div id="myEditor" style="width:680px;height:1000px;margin:0 auto;">
病历内容...
</div>
<script type="text/javascript">
window.onload = function() {
var sde = new SDE({
id: "myEditor",
title: '<div style="height: 45px;overflow: hidden;background-color: #16742B;">' +
'<div class="left" style="position:absolute;top:0;left:0;">' +
'<img src="../data/img/SoDiaoL.png" style="height:35px;margin:5px;border:none;" />' +
'</div>' +
'<h1 style="font-size: 14px;height: 45px;line-height: 45px;margin: 0 auto;text-align: center;font-weight: normal;color:#fff;" >SoDiaoEditor电子病历编辑器</h1>' +
'</div>', //自定义title
mode: 'EDITOR'//配置模式
});
};
</script>
</body>
</html>
| 방법 | 설명 | 설명하다 |
|---|---|---|
| ready (function () {}) | 편집기로드가 완료되었습니다 | (준비 로딩 후에 모든 후속 방법을 사용해야합니다) |
| HTML ([HTML]) | 모든 편집기에서 HTML 템플릿을 설정/설정하십시오 | HTML이 통과되지 않으면 가져 오면 값이 있으면 설정됩니다. |
| getControl ([ID]) | 편집기에서 컨트롤을 얻으십시오 | ID는 선택 사항입니다. 없으면 모든 컨트롤이 표시됩니다. |
| SetControl (CTL) | 편집기에서 지정된 ID의 제어 값을 설정 | CTL : {id : '', value : ''} 선택한 경우 Control Type CTL : {id : '', value : ', text :' '}. CTL은 배열 또는 객체 일 수 있습니다. Readonly Set Set : 1은 동결, 읽기 전용은 작동 할 수 없습니다. |
| deletecontrol (ID) | 편집기에서 컨트롤을 삭제합니다 | 필요합니다 |
| ShowControl (ID) | 편집기에서 컨트롤을 표시합니다 | 필요합니다 |
| HideControl (ID) | 편집기에서 컨트롤을 숨기십시오 | 필요합니다 |
| setMode (모드) | 편집기 모드를 설정합니다 | 모드 선택 사항 : 디자인 (디자인), 편집기 (편집기), Readonly (읽기 전용) |
| showsource () | 소스 코드 모드 및 일반 편집 모드를 전환합니다 | 소스 코드 모드 및 일반 편집 모드를 전환합니다 |
| Movetocontrolposition (ID) | 지정된 제어 위치에 위치합니다 | 페이지에 동일한 ID가있는 여러 컨트롤이있을 수 있으므로 필요한 위치를 찾기 위해 여러 번 호출 할 수 있습니다. ID는 컨트롤의 ID입니다 |
| 선택 통제 () | CheckControl이 실행될 때 발견 된 배경색을 제거하십시오. | |
| CheckControl (OBJ) | 제어 값이 요구 사항을 충족하는지 확인하십시오 | 특정 사용은 다음과 같습니다. |
//调用方式如下
sde.checkControl({
id:"可选,也可不写,如果不填就是校验所有控件!"
error:function(obj){//错误信息时触发,其中obj:{model:{json对象},msg:"错误信息!"}
console.log(obj);
},success:function(){//校验成功时触发
console.log('success!!!');
}
},false/true);//默认为false,如果为true表示校验所有控件,如果为false表示发现不符合规则的控件值即停止往下检查。为true且发现同时有多个控件不符合要求时 error会被触发多次
请同时更新dialogs/text.html文件!
//默认配置
defaultOptions: {
id: '',
title: '', // //电子病历标题
width:664,//可不写,默认宽度:664
control_templates: [],
controls: [], //需要设置的controls的值
mode: '', //优先去里面值
footer: 'SoDiaoEditor v2.0 电子病历编辑器',
//其顺序保证了页面序列化时的顺序
toolbars: {
'sde-toolbar-file': 'file',
'sde-toolbar-editor': ['history', 'clipboard', 'fonts', 'paragraphs', 'styles'],
'sde-toolbar-insert': ['horizontal', 'spechars', 'link', 'img', 'map', 'code', 'table', 'formula', 'comment'],
'sde-toolbar-tables': ['table', 'blockmergecells', 'alignmergecells'],
'sde-toolbar-views': ['directory', 'showcomment', 'preview'],
'sde-toolbar-tools': ['drafts', 'print', 'searchreplace', 'wordcount'],
'sde-toolbar-records': ['sdetemplate', 'sdecontrols'],
},
iframe_js_src: "", //iframe中添加js脚本
iframe_css_src: "" //iframe中添加css脚本
}
toolbars: {
'sde-toolbar-file': 'file',//文件
'sde-toolbar-editor': ['history', 'clipboard', 'fonts', 'paragraphs', 'styles'],//编辑
'sde-toolbar-insert': ['horizontal', 'spechars', 'link', 'img', 'map', 'code', 'table', 'formula', 'comment'],//插入
'sde-toolbar-tables': ['table', 'blockmergecells', 'alignmergecells'],//表格
'sde-toolbar-views': ['directory', 'showcomment', 'preview'],//视图
'sde-toolbar-tools': ['drafts', 'print', 'searchreplace', 'wordcount'],//工具
'sde-toolbar-records': ['sdetemplate', 'sdecontrols']//病历控件
}
| 방법 | 설명 | 설명하다 |
|---|---|---|
| HTML ([HTML]) | 모든 편집기에서 HTML 템플릿을 설정/설정하십시오 | HTML이 통과되지 않으면 가져 오면 값이 있으면 설정됩니다. |
| getControl ([ID]) | 편집기에서 컨트롤을 얻으십시오 | ID는 선택 사항입니다. 없으면 모든 컨트롤이 표시됩니다. |
| SetControl (CTL) | 편집기에서 지정된 ID의 제어 값을 설정 | CTL : {id : '', value : ''} 선택한 경우 Control Type CTL : {id : '', value : ', text :' '}. CTL은 배열 또는 객체 일 수 있습니다. Readonly Set Set : 1은 동결, 읽기 전용은 작동 할 수 없습니다. |
| deletecontrol (ID) | 편집기에서 컨트롤을 삭제합니다 | 필요합니다 |
| ShowControl (ID) | 편집기에서 컨트롤을 표시합니다 | 필요합니다 |
| HideControl (ID) | 편집기에서 컨트롤을 숨기십시오 | 필요합니다 |
| setMode (모드) | 편집기 모드를 설정합니다 | 모드 선택 사항 : 디자인 (디자인), 편집기 (편집기), Readonly (읽기 전용) |
| Movetocontrolposition (ID) | 지정된 제어 위치에 위치합니다 | 페이지에 동일한 ID가있는 여러 컨트롤이있을 수 있으므로 필요한 위치를 찾기 위해 여러 번 호출 할 수 있습니다. ID는 컨트롤의 ID입니다 |
| 선택 통제 () | CheckControl이 실행될 때 발견 된 배경색을 제거하십시오. | |
| CheckControl (OBJ) | 제어 값이 요구 사항을 충족하는지 확인하십시오 | 특정 사용은 다음과 같습니다. |
//调用方式如下
sde.checkControl({
id:"可选,也可不写,如果不填就是校验所有控件!"
width:664,//可不写,默认宽度:664
error:function(obj){//错误信息时触发,其中obj:{model:{json对象},msg:"错误信息!"}
console.log(obj);
},success:function(){//校验成功时触发
console.log('success!!!');
}
},false/true);//默认为false,如果为true表示校验所有控件,如果为false表示发现不符合规则的控件值即停止往下检查。为true且发现同时有多个控件不符合要求时 error会被触发多次
请同时更新dialogs/text.html文件!