location /smartCode/tansenAI/ {
proxy_pass http://192.168.3.224:5001/;
}
运行镜像
bash
docker run -d -p 5000:5000 -v /home/dcwriter_docker/dcwriter5files:/app/dcwriter5files -it dc/writer/service/dotnet:3.1
- 其中
5000
为系统本地端口,需要在防火墙放行 /home/dcwriter_docker/dcwriter5files
路径为第一步迁移的编辑器资源路径
验证
访问对应的服务器链接:
http://192.168.208.26:5000/MyWriter/MoreHandleDCWriterServicePage?wasmres=dcwriter5.js
业务
评估单配置公式, 展示所有单选多选数据元, 配置公式后, 在页面进行计算 入院评估单里, 例如疼痛等级, 有双击事件, 打开文书, 选择一个评估单, 写完后把评估结果回填
自定义封装整合
json 操作实用方法
js
//操作JSON
class jsonOperation{
constructor(json){
this.data=JSON.parse(json);
this.body=this.getDocElement("Body")
}
//type有固定的三个Header,Body,Footer,以及每页的头脚,HeaderForFirstPage,FooterForFirstPage,...等
getDocElement(type){
return this.data.Elements.find((item) => item.Type == type)
}
getDocBodyElement(type){
this.body.Elements.find(item=>item.Type==type)
}
}
元素操作实用方法
js
class editorElementOperation{
constructor(editor){
this.editor=editor;
}
//元素操作
//获取元素自定义属性
getElementAttribute(element,prop){
const editor = this.editor;
if(prop){
return this.editor.GetElementAttribute(element,prop);
}else{
return this.editor.GetElementCustomAttributes(element);
}
}
//获取元素的某个属性
getElementOrProperty(element,prop,key){
const editor = this.editor;
if(prop==='Attributes')return this.getElementAttribute(element,key);
const Element = editor.GetElementProperties(element)
if(prop&&key){
return Element[prop][key]
}else if(prop){
return Element[prop]
}else{
return Element
}
}
//获取元素中的输入域
getInputFields(element,excludeReadonly,excludeHiddenElement){
return this.editor.GetAllInputFields(excludeReadonly, excludeHiddenElement, element, true)
}
// 设置选中元素执行命令
setDCExecuteCommand(Command) {
const editor = this.editor
editor.DCExecuteCommand(Command, true, null)
}
// 设置元素的属性,可通过元素/元素ID设置
setElementProperties(element, data) {
const editor = this.editor
editor.SetElementProperties(element, data)
}
// 设置元素所有Elements的属性
setAllElementsProperties(element, data) {
const editor = this.editor
const Element = this.getElementOrProperty(element)
Element.Elements.forEach((item) => {
setElementProperties(item, data)
})
}
// 获取元素中的第一个数据元
getDataElement (element) {
const editor = this.editor
const El = this.getElementOrProperty(element)
let dataElement = null
for (const item in El.Elements) {
const Element = this.getElementOrProperty(item)
if (Element.TypeName == 'XTextInputFieldElement') {
dataElement = Element
break
}
}
}
}
表格操作实用方法
js
class editorDataElementOperation extends editorElementOperation{
constructor(editor){
super(editor)
this.editor=editor;
}
//设置输入域的默认值,打印显示,只读,是否显示
setStatusOrDefaultValue(
element,defaultValue,PrintVisibility,ContentReadonly,Visible
){
const Element=this.getElementOrProperty(element)
this.setElementProperties(Element,{
...Element,
Visible: Visible??Element.Visible,
PrintVisibility: PrintVisibility??Element.PrintVisibility,
ContentReadonly: ContentReadonly??Element.ContentReadonly,
Text: defaultValue??'',
InnerValue: defaultValue??Element.InnerValue
})
}
}
输入域操作实用方法
js
class editorDataElementOperation extends editorElementOperation{
constructor(editor){
super(editor)
this.editor=editor;
}
//设置输入域的默认值,打印显示,只读,是否显示
setStatusOrDefaultValue(
element,{defaultValue,PrintVisibility,ContentReadonly,Visible,Deletable}
){
const Element=this.getElementOrProperty(element)
this.setElementProperties(Element,{
...Element,
Visible: Visible??Element.Visible, //true,false
PrintVisibility: PrintVisibility??Element.PrintVisibility, //'Visible','Hidden','None'
ContentReadonly: ContentReadonly??Element.ContentReadonly, //'True' : 'False'
Text: defaultValue??Element.BackgroundText,
InnerValue: defaultValue??Element.InnerValue,
Deletable:Deletable??Element.Deletable //true false
})
}
}
命令
插入命令
命令 | 说明 |
---|---|
ctl.DCExecuteCommand('InsertString', false,"哈哈哈哈\r\n打") | 插入文本,\r 回车,\n 换行 |
DCExecuteCommand('InsertTDBarcodeElement',true,null) | 插入二维码 |
DCExecuteCommand('Insertunorderedlist',false,null) | 插入无序列表 |
DCExecuteCommand('InsertWhiteSpaceForAlignRight',false,null) | 插入空格补全至右侧内容右对齐 |
DCExecuteCommand('DCInsertImage', false, null) | 插入本地图片, 会打开一个弹框 |
DCExecuteCommand ('InsertImage', false, options) | 插入图片 ID (必填): '' 图片唯一 ID Src (必填): '' 图片路径 (base64 或链接),支持网络图片,但是网络图片地址需跟编辑器引用地址保持同源。支持 base64 图片数据 |
编辑器对象相关
编辑器对象就是挂载编辑器的那个 dom 对象
API
api | 说明 |
---|---|
LoadDocumentFromString (data, type, prop, errorHandler) | 加载指定类型的病历文档 data 病历的内容 type 内容的数据类型 prop 可选,加载病历的哪一块,header页眉、footer页脚、headerfooter页眉页脚、body正文 errorHandler 错误回调 |
元素相关
api
获取
api | 说明 |
---|---|
GetElementByIdExt (element/element.ID) | 获取元素对象 |
GetElementById (elment.ID) | 根据 ID 获取元素对象 |
GetElementProperties (element/element.ID) | 获取元素身上的属性 |
SetElementProperties (element/element.ID, data) | 设置元素身上的属性 |
GetElementAttribute(element.ID, 指定的自定义属性名称) | 获取元素身上指定的自定义属性 |
GetElementCustomAttributes (element/element. ID) | 获取元素身上的自定义属性 |
GetElementTextByID (elment/element.ID,parameter) | 获取元素的文本 parameter:{ IncludeBackgroundText: false, //是否包含背景文字 IncludeBorderText: false, //是否保存边框文字 IncludeHiddenText: false, //是否包含隐藏的文本 IncludeLabelUnitText: false, //是否包含标签单位文本 IncludeLogicDeletedContent: false //是否包含逻辑删除内容 } |
操作
api | 说明 |
---|---|
FocusElement (elment/elment.ID) | 将光标聚焦在指定元素所在位置 |
SetChildElements (element/element.ID, options, position,isRefresh,isAddTrack) | 给指定元素插入元素 options: 插入元素列表 position:插入位置, beforebegin 开始位置 afterBegin 开始之后位置 beforeEnd 结束位置 isRefresh: 是否刷新 isAddTrack: 是否带痕迹 var options = [ { 'image':{//图片 id: "123", //图片id //src: redpicbase64data, //图片路径 src: "http://localhost:5214/pingcode/webdemo.png", //图片路径 width: "100", //图片宽度 height: "100", //图片高度 savecontentinfile: false } 'text':"文本1\r\n文本2" } ]; |
SetElementTextByID (element/element. ID, text) | 给指定元素设置文本, 会覆盖元素里原本的内容 |
表格相关
api
获取
api | 说明 |
---|---|
CurrentTable () | 获取当前焦点表格对象 |
CurrentTableColumn () | 获取当前焦点列对象 |
CurrentTableRow () | 获取当前焦点行对象 |
CurrentTableCell () | 获取当前焦点单元格对象 |
表格对象属性
元素属性 | 数据类型 | 说明 |
AbsLeft | 对象在文档中的绝对坐标位置 (左侧) | |
AbsTop | 对象在文档中的绝对坐标位置(上侧) | |
AcceptChildElementTypes | 能接收的子元素类型 | |
AcceptTab | 能否接受制表符,默认false。 | |
AllowUserDeleteRow | 用户可删除表格行 布尔值 | |
AllowUserInsertRow | 用户可新增表格行 布尔值 | |
AllowUserToResizeColumns | 用户可调整列宽 布尔值 | |
AllowUserToResizeRows | 用户可调整行高 布尔值 | |
Attributes | 用户自定义属性列表 | |
AutoFixTextMode | 文本自动修复模式 | |
Cells | 当前表格单元格对象集合 | |
ColumnsWidth | 列宽 | |
CompressOwnerLineSpacing | 压缩所在文档行的行间距 | |
ContentLock | 内容锁 | |
ContentReadonly | 元素只读状态 | |
ContentReadonlyExpression | 元素内容只读性表达式。 | |
CopySource | 内容复制来源 | |
Deleteable | 用户可删除表格 | |
Elements | 子对象列表 | |
EnablePermission | 启用授权控制 布尔值 | |
EventTemplateName | 文档元素事件模板名称 | |
Height | 高度 | |
HiddenPrintWhenEmpty | 内容为空时不打印 | |
ID | 元素编号 | |
InnerID | 元素内部ID | |
InnerText | 元素内容的文本内容 | |
JavaScriptForClick | 单击时执行的javascript脚本 | |
JavaScriptForDoubleClick | 双击时执行的javascript脚本 | |
Left | 左端位置 | |
LeftInOwnerPage | 文档元素在文档页中的距离页面纸张左上角的水平距离 | |
LimitedInputChars | 本容器元素能接受的字符清单,比如本属性设置为“0123456789”,则在用户界面中本容器元素只能输入规定的数字字符 | |
MaxInputLength | 最大可输入的字符的长度,属性值小于等于0则无限制。 | |
Modified | 元素是否修改 | |
OwnerLastPageIndex | 获得一个从0开始计算的元素下边缘所能到达的页码 | |
OwnerPageIndex | 获得一个从0开始计算的当前元素所在的页码 | |
PrintBothBorderWhenJumpPrint | 续打时打印所有单元格边框 | |
PrintVisibility | 打印是否可见 | |
PrintVisibilityExpression | 打印时是否可见性表达式 | |
Rows | 当前表格表格行对象集合 | |
RowsCount | 当前表格表格行行数 | |
RowsHeight | 行高 | |
Style | 元素样式列表 | |
Text | 表格内容 | |
ToolTip | 元素提示信息 | |
Top | 顶端位置 | |
TopInOwnerPage | 文档元素在文档页中的距离页面纸张左上角的垂直距离 | |
TypeName | 元素类型 | |
UserFlags | 用户标记 | |
ValueExpression | 数值表达式 | |
Visible | 元素是否可见 | |
Width | 宽度 |
列对象属性
元素属性 | 数据类型 | 说明 |
AbsLeft | 对象在文档中的绝对坐标位置 (左侧) | |
AbsTop | 对象在文档中的绝对坐标位置(上侧) | |
AcceptChildElementTypes | 允许接收的内容样式 | |
AcceptTab | 输入域接收Tab符号 | |
AllowInsertRowDownUseHotKey | 使用快捷键向下插入表格行时的行为 Disable:禁止使用快捷键在下面插入表格行 EnableOnlyForLastRow:只有是表格的最后一行才启用这种行为 EnableInAllCases:在所有状态下都启用这种行为。无论表格行是否是表格的最后一行都启用这种行为 | |
AllowUserToResizeHeight | 是否允许用户鼠标拖拽操作改变表格行高度 False:不只读 Inherit:只读 True:继承父节点 | |
Attributes | 用户自定义属性列表 | |
AutoFixTextMode | 文本自动修复模式 | |
AutoHideMode | 自动隐藏模式 None:不做设置 HideWhenEmpty:内容为空时自动隐藏 HideWhenChildFieldEmpty:子输入域内容为空时自动隐藏 | |
CanSplitByPageLine | 能否被分页线分割,也就是是否允许被分配到两页上 | |
Cells | 表格中单元格集合列表 | |
CellsCount | 单元格数量 | |
CloneType | 复制方式 Default:默认方式,只复制表格行及单元格,不复制内容。对于单元格是继承上级设置。 ContentWithClearField: 复制内容,但删除输入域中的内容。 Complete:完整的复制,包括输入域中的内容。 | |
ContentLock | 内容锁 | |
ContentReadonly | 内容是否只读 True:只读 False:不只读 Inherit:继承父节点 | |
ContentReadonlyExpression | 元素内容只读性表达式。 | |
CopySource | 内容复制来源 | |
Deleteable | 是否允许删除 | |
Elements | 子元素列表 | |
EnablePermission | 启用文档内容安全和权限控制 True:启用 False:不启用 Inherit:继承父节点 | |
EventTemplateName | 文档元素事件模板名称 | |
ExpendForDataBinding | 由于数据源绑定而扩展的表格行 | |
HeaderStyle | 标题行样式 | |
Height | 高度 | |
HiddenPrintWhenEmpty | 当为空时打印是否隐藏 | |
ID | 元素编号 | |
InnerID | 元素内部ID | |
InnerText | 元素内容的文本内容 | |
JavaScriptForClick | 单击时执行的javascript脚本 | |
JavaScriptForDoubleClick | 双击时执行的javascript脚本 | |
Left | 左端位置 | |
LeftInOwnerPage | 文档元素在文档页中的距离页面纸张左上角的水平距离 | |
LimitedInputChars | 本容器元素能接受的字符清单,比如本属性设置为“0123456789”,则在用户界面中本容器元素只能输入规定的数字字符 | |
MaxInputLength | 最大可输入的字符的长度,属性值小于等于0则无限制。 | |
Modified | 元素是否修改 | |
NewPage | 是否强制分页 | |
OwnerLastPageIndex | 获得一个从0开始计算的元素下边缘所能到达的页码 | |
OwnerPageIndex | 获得一个从0开始计算的当前元素所在的页码 | |
PrintCellBackground | 打印单元格背景 | |
PrintCellBorder | 打印单元格边框线 | |
PrintVisibility | 打印时是否可见 Visible:显示 Hidden:隐藏,但占据排版位置 None:隐藏,而且不占据排版位置 | |
PrintVisibilityExpression | 打印时可见表达式 | |
RowIndex | 要操作的表格行序号 | |
SpecifyHeight | 指定的高度 | |
Style | 元素样式列表 | |
Text | 元素内容 | |
ToolTip | 元素提示信息 | |
Top | 顶端位置 | |
TopInOwnerPage | 文档元素在文档页中的距离页面纸张左上角的垂直距离 | |
TypeName | 元素类型 | |
UserFlags | 用户标记 | |
ValueBinding | 数据源绑定信息。同输入域属性下的数据源,但是表格数据源绑定,表格行只需要设置数据源名称,行对应的单元格设置绑定路径 | |
ValueExpression | 数值表达式 | |
Visible | 元素是否可见 | |
VisibleExpression | 元素可见性表达式 | |
Width | 宽度 |
单元格对象属性
元素属性 | 数据类型 | 说明 |
---|---|---|
Attributes | Object | 用户自定义属性列表 |
CloneType | String | 复制方式 Default:默认方式,只复制表格行及单元格,不复制内容。对于单元格是继承上级设置。 ContentWithClearField:复制内容,但删除输入域中的内容。 Complete:完整的复制,包括输入域中的内容。 |
ContentReadonly | String | 内容是否只读 True:只读 False:不只读 Inherit:继承父节点 |
Text | 元素内容 | |
ValueExpression | 数值表达式 | |
Visible | Boolean | 元素是否可见 |
VisibleExpression | 元素可见性表达式 | |
PrintVisibility | String | 打印时是否可见 Visible:显示 Hidden:隐藏,但占据排版位置 None:隐藏,而且不占据排版位置 |
ValueBinding | 数据源绑定信息。同输入域属性下的数据源,但是表格数据源绑定,表格行只需要设置数据源名称,行对应的单元格设置绑定路径 | |
TypeName | 元素类型 | |
SlantSplitLineStyle | 斜分割线样式 | |
MirrorViewForCrossPage | 跨页视图镜像 | |
ColSpan | 跨列数合并 | |
RowSpan | 跨行数合并 | |
RowIndex | 要操作的表格行序号 | |
ColIndex | 当前单元格所在列索引 | |
Style | 元素样式列表 | |
ToolTip | 元素提示信息 | |
ContentLock | 内容锁 | |
ContentReadonlyExpression | 元素内容只读性表达式。 | |
Deleteable | 是否允许删除 | |
Modified | 元素是否修改 | |
CopySource | 内容复制来源 | |
Elements | 子元素列表 | |
EnablePermission | 启用文档内容安全和权限控制 True:启用 False:不启用 Inherit:继承父节点 | |
EventTemplateName | 文档元素事件模板名称 | |
GridLine | 网格线设置 | |
Height | 高度 | |
HiddenPrintWhenEmpty | 当为空时打印是否隐藏 | |
ID | 元素编号 | |
InnerID | 元素内部ID | |
InnerText | 元素内容的文本内容 | |
IsOverrided | 判断本单元格是否被其他单元格合并了 | |
JavaScriptForClick | 单击时执行的javascript脚本 | |
JavaScriptForDoubleClick | 双击时执行的javascript脚本 | |
LimitedInputChars | 本容器元素能接受的字符清单,比如本属性设置为“0123456789”,则在用户界面中本容器元素只能输入规定的数字字符 | |
MaxInputLength | 最大可输入的字符的长度,属性值小于等于0则无限制。 | |
MoveFocusHotKey | 移动焦点使用的快捷键 | |
UserFlags | 用户标记 | |
Width | 宽度 | |
PrintVisibilityExpression | 打印时可见表达式 | |
AcceptChildElementTypes | 允许接收的内容样式 | |
AcceptTab | 输入域接收Tab符号 | |
AutoFixFontSizeMode | 自动修改字体大小以适应内容 | |
AutoFixTextMode | 文本自动修复模式 | |
OwnerLastPageIndex | 获得一个从0开始计算的元素下边缘所能到达的页码 | |
OwnerPageIndex | 获得一个从0开始计算的当前元素所在的页码 | |
Top | 顶端位置 | |
TopInOwnerPage | 文档元素在文档页中的距离页面纸张左上角的垂直距离 | |
Left | 左端位置 | |
LeftInOwnerPage | 文档元素在文档页中的距离页面纸张左上角的水平距离 | |
AbsLeft | 对象在文档中的绝对坐标位置 (左侧) | |
AbsTop | 对象在文档中的绝对坐标位置(上侧) |
输入域相关
api
获取
api | 说明 |
---|---|
CurrentCheckboxOrRadio () | 获取当前焦点输入域 |
GetAllInputFields (excludeReadonly, excludeHiddenElement,specifyRootElement) | 所有参数都不传默认获取全文输入域 excludeReadonly : 是否排除只读元素 excludeHiddenElement : 是否排除隐藏元素 specifyRootElement : 获取指定容器对象下的输入域集合列表。 比如需要获取一个输入域里面所有子输入域元素,传父元素的编号即可 比如需要获取一个表格所有输入域,传表格编号即可 比如需要获取一个病程中所有输入域,传病程编号即可 比如需要获取页眉中所有输入域传参为 header 比如需要获取正文中所有输入域传参为 body 比如需要获取页脚中所有输入域传参为 footer 不传默认获取全文输入域 |
操作
api | 说明 |
---|---|
SetElementTextByID
容器属性
js
<div id="myControl" dctype="DCTemperatureControlForWASM"/>
dctype指定控件类型,
WriterControlForWASM
DCTemperatureControlForWASM 三测单
DCTemperatureDesignControlForWASM 三测单设计器
ServicePageUrl 授权服务的地址,使用第四代地址
RegisterCode 授权码,没写会有红色提示
-->创建控件
Var ctl = document.getElementById ("myWriterControl");
CreateTemperatureControlForWASM (ctl);
创建成功,会触发控件加载完成事件 ctl.EventTemperatureContorolOnLoad (callback)。
文档操作
方法 | 返回值 | 说明 |
---|---|---|
Ctl. TemperatureFileNew () | Bool | 新建空白文档 |
Ctl. LoadTemperatureDocumentFromString (xml) | Bool | 加载 xml 文档 |
Ctl.LoadTemperatureDocumentFromFile () | Bool | 加载本地文件 |
Ctl.SaveTemperatureDocumentToString () | 字符串 | 保存文档 |
ctl. SaveTemperatureDocumentToFile () | Bool | 下载文档 |
other
- 新增右键菜单
- 表格列属性
- 有一个配置公式
- 列属性总览
- 表格列属性
eventSender: 编辑器实例
js
三测单,又称为体温单,包括患者姓名、年龄、性别、科别、床号、入院日期、住院病历号(或病案号)、日期、住院天数、手术后天数、脉搏/心率、体温、呼吸、血压、出入量、大便次数、身高、体重等。
依赖jq