|
@@ -3,31 +3,68 @@
|
|
|
:props="defaultProps"
|
|
|
@node-click="handleNodeClick"
|
|
|
node-key="_id"
|
|
|
+ @node-contextmenu="fragmentPreview"
|
|
|
+ :expand-on-click-node="false"
|
|
|
default-expand-all/>
|
|
|
+ <el-dialog v-model="dialog" title="效果预览" top="2%" width="60%">
|
|
|
+ <div>
|
|
|
+ <iframe src="/emr/runtime/#/editor"
|
|
|
+ style="width: 100%"
|
|
|
+ :style="{height: getWindowSize.h / 1.2 + 'px'}"
|
|
|
+ ref="emrRef"/>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</template>
|
|
|
|
|
|
<script setup name='EmrSnippet'>
|
|
|
|
|
|
import {getSnippet} from "@/api/zhu-yuan-yi-sheng/emr-api";
|
|
|
+import {getWindowSize} from "@/utils/window-size";
|
|
|
+import {EMRInteractive} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
|
|
|
|
|
|
const emit = defineEmits(['nodeClick'])
|
|
|
|
|
|
let snippetData = $ref([])
|
|
|
+let dialog = $ref(false)
|
|
|
+let selectedData = $ref({})
|
|
|
const defaultProps = {
|
|
|
children: 'children',
|
|
|
label: 'name',
|
|
|
}
|
|
|
|
|
|
+const emrRef = ref(null)
|
|
|
+const currentEmr = ref(null)
|
|
|
+
|
|
|
const handleNodeClick = (node, object, event) => {
|
|
|
if (node.content) {
|
|
|
emit('nodeClick', node)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+const fragmentPreview = (event, data, node) => {
|
|
|
+ console.log(event, data, node)
|
|
|
+ selectedData = data
|
|
|
+ dialog = true
|
|
|
+ if (!currentEmr.value) {
|
|
|
+ nextTick(() => {
|
|
|
+ currentEmr.value = new EMRInteractive(null, editorEvents);
|
|
|
+ emrRef.value.parentElement.emr = currentEmr.value
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ currentEmr.value.setDocument(selectedData, true, true)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const editorEvents = ({name}) => {
|
|
|
+ if (name === 'loaded') {
|
|
|
+ currentEmr.value.setDocument(selectedData, true, true)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
getSnippet().then((res) => {
|
|
|
snippetData = res
|
|
|
- console.log(snippetData)
|
|
|
+ // console.log(snippetData)
|
|
|
})
|
|
|
})
|
|
|
|