vue2-client 1.15.26 → 1.15.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +0 -1
  2. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +2 -4
  3. package/package.json +1 -1
  4. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  5. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  6. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  7. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  8. package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
  9. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +197 -197
  10. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  11. package/src/components/HeightScanner/index.vue +54 -10
  12. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +201 -37
  13. package/src/pages/WorkflowDetail/WorkFlowDemo2.vue +97 -169
  14. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +22 -27
  15. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowPreview.vue +5 -5
  16. package/src/router/async/router.map.js +7 -12
  17. package/vue.config.js +3 -4
  18. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  19. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  20. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  21. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  22. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  23. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  24. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  25. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  26. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  27. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  28. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  29. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  30. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  31. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  32. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  33. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  34. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  35. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  36. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  37. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  38. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  39. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  40. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  69. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  70. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  71. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  72. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  73. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  74. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  75. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  76. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  77. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  78. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  79. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  80. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  81. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  82. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  83. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  84. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  85. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  86. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  87. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  88. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  89. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  90. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  91. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  92. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  93. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  94. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  95. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  96. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  97. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  98. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  99. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  100. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  101. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  102. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  103. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  104. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  105. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  106. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  107. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  108. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  109. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  110. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  111. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  112. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  113. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  114. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  115. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  116. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  117. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  118. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  119. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  129. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  130. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  131. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  132. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -1,197 +1,197 @@
1
- <template>
2
- <div class="tree-container">
3
- <div class="tree-header">
4
- <span class="tree-title">{{ title }}</span>
5
- <span class="tree-expand-all" @click="isToOpenAll" v-if="isShowOpen">
6
- {{ isExpanded ? '收起' : '全部展开' }}
7
- </span>
8
- </div>
9
- <div class="tree-list">
10
- <tree-node
11
- v-for="node in showData"
12
- :key="node.id"
13
- :node="node"
14
- @toggle="toggleNode"/>
15
- </div>
16
- </div>
17
- </template>
18
-
19
- <script>
20
- import TreeNode from '@vue2-client/base-client/components/his/XTreeRows/TreeNode.vue'
21
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
22
-
23
- export default {
24
- name: 'XTreeRows',
25
- components: {
26
- TreeNode
27
- },
28
- props: {
29
- queryParamsName: {
30
- type: String,
31
- default: ''
32
- },
33
- isOpenAll: {
34
- type: Boolean,
35
- default: false
36
- },
37
- parameter: {
38
- type: Object,
39
- default: () => {
40
- return {}
41
- }
42
- }
43
- },
44
- data () {
45
- return {
46
- treeData: [
47
- {
48
- id: '1',
49
- title: '体征',
50
- expanded: false,
51
- children: [
52
- {
53
- id: '1-1',
54
- title: '一般情况'
55
- },
56
- {
57
- id: '1-2',
58
- title: '皮肤粘膜'
59
- },
60
- {
61
- id: '1-3',
62
- title: '头颈',
63
- expanded: false,
64
- children: [
65
- {
66
- id: '1-3-1',
67
- title: '头部头部头部头部头部头部头部头部头部头部头部头部头部头部',
68
- expanded: false,
69
- children: [
70
- {
71
- id: '1-3-1-1',
72
- title: '123456'
73
- }
74
- ]
75
- },
76
- {
77
- id: '1-2-2',
78
- title: '颈部'
79
- }
80
- ]
81
- },
82
- {
83
- id: '1-4',
84
- title: '胸部'
85
- },
86
- ]
87
- }
88
- ],
89
- isExpanded: false,
90
- showData: [],
91
- isShowOpen: true,
92
- title: '标题'
93
- }
94
- },
95
- methods: {
96
- toggleNode (node) {
97
- node.expanded = !node.expanded
98
- this.$emit('node-toggle', node)
99
- },
100
- isToOpenAll () {
101
- this.isExpanded = !this.isExpanded
102
- this.expandAllNodes(this.showData, this.isExpanded)
103
- this.$emit('isOpenAll', this.isExpanded)
104
- },
105
- expandAllNodes (nodes, expand) {
106
- nodes.forEach(node => {
107
- if (node.children && node.children.length > 0) {
108
- node.expanded = expand
109
- this.expandAllNodes(node.children, expand)
110
- }
111
- })
112
- },
113
- init (config, parameterData) {
114
- getConfigByName(config, 'af-his', res => {
115
- this.isShowOpen = res.isShowOpen
116
- this.title = res.title
117
- console.log(res)
118
- if (!res.isCheck) {
119
- this.showData = res.showData
120
- return
121
- }
122
- const parameter = { ...parameterData, ...this.parameter }
123
- runLogic(res.logicName, parameter, 'af-his').then(result => {
124
- this.showData = result
125
- })
126
- })
127
- }
128
- },
129
- watch: {
130
- queryParamsName: {
131
- immediate: true,
132
- handler (newValue) {
133
- console.log(newValue)
134
- this.init(newValue, {})
135
- },
136
- deep: true
137
- }
138
- }
139
- }
140
- </script>
141
-
142
- <style scoped>
143
- .tree-container {
144
- width: 100%;
145
- height: 320px;
146
- overflow-y: auto;
147
- overflow-x: auto;
148
- padding: 6px;
149
- box-sizing: border-box;
150
- }
151
- /* 自定义滚动条样式 */
152
- .tree-container::-webkit-scrollbar {
153
- width: 4px;
154
- height: 4px;
155
- }
156
- .tree-container::-webkit-scrollbar-thumb {
157
- background-color: #ccc;
158
- border-radius: 2px;
159
- }
160
- .tree-container::-webkit-scrollbar-track {
161
- background-color: #f5f5f5;
162
- }
163
- .tree-list {
164
- font-size: 14px;
165
- min-width: 100%;
166
- }
167
-
168
- .tree-header {
169
- padding: 8px 4px;
170
- border-bottom: 1px solid #e8e8e8;
171
- margin-bottom: 8px;
172
- position: sticky;
173
- top: 0;
174
- background-color: #fff;
175
- z-index: 1;
176
- }
177
-
178
- .tree-title {
179
- font-size: 16px;
180
- font-weight: 700;
181
- color:#5D5C5C;
182
- }
183
-
184
- .tree-expand-all {
185
- float: right;
186
- margin-right: 15px;
187
- font-size: 14px;
188
- font-weight: 400;
189
- color: #5D5C5C;
190
- cursor: pointer;
191
- user-select: none;
192
- }
193
-
194
- .tree-expand-all:hover {
195
- color: #989a9a;
196
- }
197
- </style>
1
+ <template>
2
+ <div class="tree-container">
3
+ <div class="tree-header">
4
+ <span class="tree-title">{{ title }}</span>
5
+ <span class="tree-expand-all" @click="isToOpenAll" v-if="isShowOpen">
6
+ {{ isExpanded ? '收起' : '全部展开' }}
7
+ </span>
8
+ </div>
9
+ <div class="tree-list">
10
+ <tree-node
11
+ v-for="node in showData"
12
+ :key="node.id"
13
+ :node="node"
14
+ @toggle="toggleNode"/>
15
+ </div>
16
+ </div>
17
+ </template>
18
+
19
+ <script>
20
+ import TreeNode from '@vue2-client/base-client/components/his/XTreeRows/TreeNode.vue'
21
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
22
+
23
+ export default {
24
+ name: 'XTreeRows',
25
+ components: {
26
+ TreeNode
27
+ },
28
+ props: {
29
+ queryParamsName: {
30
+ type: String,
31
+ default: ''
32
+ },
33
+ isOpenAll: {
34
+ type: Boolean,
35
+ default: false
36
+ },
37
+ parameter: {
38
+ type: Object,
39
+ default: () => {
40
+ return {}
41
+ }
42
+ }
43
+ },
44
+ data () {
45
+ return {
46
+ treeData: [
47
+ {
48
+ id: '1',
49
+ title: '体征',
50
+ expanded: false,
51
+ children: [
52
+ {
53
+ id: '1-1',
54
+ title: '一般情况'
55
+ },
56
+ {
57
+ id: '1-2',
58
+ title: '皮肤粘膜'
59
+ },
60
+ {
61
+ id: '1-3',
62
+ title: '头颈',
63
+ expanded: false,
64
+ children: [
65
+ {
66
+ id: '1-3-1',
67
+ title: '头部头部头部头部头部头部头部头部头部头部头部头部头部头部',
68
+ expanded: false,
69
+ children: [
70
+ {
71
+ id: '1-3-1-1',
72
+ title: '123456'
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ id: '1-2-2',
78
+ title: '颈部'
79
+ }
80
+ ]
81
+ },
82
+ {
83
+ id: '1-4',
84
+ title: '胸部'
85
+ },
86
+ ]
87
+ }
88
+ ],
89
+ isExpanded: false,
90
+ showData: [],
91
+ isShowOpen: true,
92
+ title: '标题'
93
+ }
94
+ },
95
+ methods: {
96
+ toggleNode (node) {
97
+ node.expanded = !node.expanded
98
+ this.$emit('node-toggle', node)
99
+ },
100
+ isToOpenAll () {
101
+ this.isExpanded = !this.isExpanded
102
+ this.expandAllNodes(this.showData, this.isExpanded)
103
+ this.$emit('isOpenAll', this.isExpanded)
104
+ },
105
+ expandAllNodes (nodes, expand) {
106
+ nodes.forEach(node => {
107
+ if (node.children && node.children.length > 0) {
108
+ node.expanded = expand
109
+ this.expandAllNodes(node.children, expand)
110
+ }
111
+ })
112
+ },
113
+ init (config, parameterData) {
114
+ getConfigByName(config, 'af-his', res => {
115
+ this.isShowOpen = res.isShowOpen
116
+ this.title = res.title
117
+ console.log(res)
118
+ if (!res.isCheck) {
119
+ this.showData = res.showData
120
+ return
121
+ }
122
+ const parameter = { ...parameterData, ...this.parameter }
123
+ runLogic(res.logicName, parameter, 'af-his').then(result => {
124
+ this.showData = result
125
+ })
126
+ })
127
+ }
128
+ },
129
+ watch: {
130
+ queryParamsName: {
131
+ immediate: true,
132
+ handler (newValue) {
133
+ console.log(newValue)
134
+ this.init(newValue, {})
135
+ },
136
+ deep: true
137
+ }
138
+ }
139
+ }
140
+ </script>
141
+
142
+ <style scoped>
143
+ .tree-container {
144
+ width: 100%;
145
+ height: 320px;
146
+ overflow-y: auto;
147
+ overflow-x: auto;
148
+ padding: 6px;
149
+ box-sizing: border-box;
150
+ }
151
+ /* 自定义滚动条样式 */
152
+ .tree-container::-webkit-scrollbar {
153
+ width: 4px;
154
+ height: 4px;
155
+ }
156
+ .tree-container::-webkit-scrollbar-thumb {
157
+ background-color: #ccc;
158
+ border-radius: 2px;
159
+ }
160
+ .tree-container::-webkit-scrollbar-track {
161
+ background-color: #f5f5f5;
162
+ }
163
+ .tree-list {
164
+ font-size: 14px;
165
+ min-width: 100%;
166
+ }
167
+
168
+ .tree-header {
169
+ padding: 8px 4px;
170
+ border-bottom: 1px solid #e8e8e8;
171
+ margin-bottom: 8px;
172
+ position: sticky;
173
+ top: 0;
174
+ background-color: #fff;
175
+ z-index: 1;
176
+ }
177
+
178
+ .tree-title {
179
+ font-size: 16px;
180
+ font-weight: 700;
181
+ color:#5D5C5C;
182
+ }
183
+
184
+ .tree-expand-all {
185
+ float: right;
186
+ margin-right: 15px;
187
+ font-size: 14px;
188
+ font-weight: 400;
189
+ color: #5D5C5C;
190
+ cursor: pointer;
191
+ user-select: none;
192
+ }
193
+
194
+ .tree-expand-all:hover {
195
+ color: #989a9a;
196
+ }
197
+ </style>
@@ -1,111 +1,111 @@
1
- <template>
2
- <!-- 根据实际部署环境修改 editor.html 的路径 -->
3
- <iframe
4
- src="/his/editor/editor.html"
5
- width="100%"
6
- height="800"
7
- frameborder="0"
8
- @load="onIframeLoad"
9
- ref="editorIframe">
10
- </iframe>
11
- </template>
12
-
13
- <script setup>
14
-
15
- import { ref, onBeforeUnmount } from 'vue'
16
-
17
- const editorIframe = ref(null)
18
- const checkEditorTimer = ref(null)
19
- const checkCount = ref(0)
20
- const editor = ref(null)
21
- const iframeWindow = ref(null)
22
- // 对外暴露的获取editor方法
23
- const getEditor = () => {
24
- if (editor.value) {
25
- return editor.value
26
- }
27
- if (iframeWindow.value && iframeWindow.value.editor) {
28
- editor.value = iframeWindow.value.editor
29
- return editor.value
30
- }
31
- if (editorIframe.value && editorIframe.value.contentWindow && editorIframe.value.contentWindow.editor) {
32
- editor.value = editorIframe.value.contentWindow.editor
33
- return editor.value
34
- }
35
- return null
36
- }
37
- // 创建体温单方法
38
- const createVitalSigns = (data) => {
39
- const editorObj = getEditor()
40
- if (!editorObj) {
41
- throw new Error('editor对象未初始化,无法创建体温单')
42
- }
43
- if (typeof editorObj.createVitalSigns === 'function') {
44
- return editorObj.createVitalSigns(data)
45
- } else {
46
- throw new Error('editor对象未包含createVitalSigns方法')
47
- }
48
- }
49
-
50
- // 检查editor对象是否已初始化
51
- const startEditorCheck = (frameWindow, iframe) => {
52
- if (checkEditorTimer.value) {
53
- clearInterval(checkEditorTimer.value)
54
- }
55
- checkCount.value = 0
56
- checkEditorTimer.value = setInterval(() => {
57
- checkCount.value++
58
- try {
59
- const editorObj = frameWindow.editor
60
- if (editorObj && typeof editorObj.createVitalSigns === 'function') {
61
- clearInterval(checkEditorTimer.value)
62
- editor.value = editorObj
63
- // 将editor对象暴露到全局
64
- window.iframeEditor = editorObj
65
- window.iframeWindow = frameWindow
66
- // 触发事件
67
- emit('editor-ready', editorObj)
68
- emit('load', { target: iframe, editor: editorObj })
69
- // 发送消息通知
70
- window.parent.postMessage({ type: 'editorReady' }, '*')
71
- }
72
- } catch (err) {
73
- console.error('检查editor对象时出错:', err)
74
- }
75
- if (checkCount.value >= 20) {
76
- clearInterval(checkEditorTimer.value)
77
- console.error('Editor 对象加载失败')
78
- }
79
- }, 500)
80
- }
81
- // iframe加载完成的处理
82
- const onIframeLoad = (e) => {
83
- const iframe = e.target
84
- const frameWindow = iframe.contentWindow
85
- iframeWindow.value = frameWindow
86
- if (!frameWindow) {
87
- console.error('无法访问 iframe 内容')
88
- return
89
- }
90
- startEditorCheck(frameWindow, iframe)
91
- }
92
- // 组件销毁前清理
93
- onBeforeUnmount(() => {
94
- if (checkEditorTimer.value) {
95
- clearInterval(checkEditorTimer.value)
96
- }
97
- })
98
- // 暴露方法给父组件
99
- defineExpose({ getEditor, createVitalSigns })
100
-
101
- // 定义事件
102
- const emit = defineEmits(['editor-ready', 'load'])
103
- </script>
104
-
105
- <style scoped>
106
- iframe {
107
- border: none;
108
- width: 100%;
109
- min-height: 800px;
110
- }
111
- </style>
1
+ <template>
2
+ <!-- 根据实际部署环境修改 editor.html 的路径 -->
3
+ <iframe
4
+ src="/his/editor/editor.html"
5
+ width="100%"
6
+ height="800"
7
+ frameborder="0"
8
+ @load="onIframeLoad"
9
+ ref="editorIframe">
10
+ </iframe>
11
+ </template>
12
+
13
+ <script setup>
14
+
15
+ import { ref, onBeforeUnmount } from 'vue'
16
+
17
+ const editorIframe = ref(null)
18
+ const checkEditorTimer = ref(null)
19
+ const checkCount = ref(0)
20
+ const editor = ref(null)
21
+ const iframeWindow = ref(null)
22
+ // 对外暴露的获取editor方法
23
+ const getEditor = () => {
24
+ if (editor.value) {
25
+ return editor.value
26
+ }
27
+ if (iframeWindow.value && iframeWindow.value.editor) {
28
+ editor.value = iframeWindow.value.editor
29
+ return editor.value
30
+ }
31
+ if (editorIframe.value && editorIframe.value.contentWindow && editorIframe.value.contentWindow.editor) {
32
+ editor.value = editorIframe.value.contentWindow.editor
33
+ return editor.value
34
+ }
35
+ return null
36
+ }
37
+ // 创建体温单方法
38
+ const createVitalSigns = (data) => {
39
+ const editorObj = getEditor()
40
+ if (!editorObj) {
41
+ throw new Error('editor对象未初始化,无法创建体温单')
42
+ }
43
+ if (typeof editorObj.createVitalSigns === 'function') {
44
+ return editorObj.createVitalSigns(data)
45
+ } else {
46
+ throw new Error('editor对象未包含createVitalSigns方法')
47
+ }
48
+ }
49
+
50
+ // 检查editor对象是否已初始化
51
+ const startEditorCheck = (frameWindow, iframe) => {
52
+ if (checkEditorTimer.value) {
53
+ clearInterval(checkEditorTimer.value)
54
+ }
55
+ checkCount.value = 0
56
+ checkEditorTimer.value = setInterval(() => {
57
+ checkCount.value++
58
+ try {
59
+ const editorObj = frameWindow.editor
60
+ if (editorObj && typeof editorObj.createVitalSigns === 'function') {
61
+ clearInterval(checkEditorTimer.value)
62
+ editor.value = editorObj
63
+ // 将editor对象暴露到全局
64
+ window.iframeEditor = editorObj
65
+ window.iframeWindow = frameWindow
66
+ // 触发事件
67
+ emit('editor-ready', editorObj)
68
+ emit('load', { target: iframe, editor: editorObj })
69
+ // 发送消息通知
70
+ window.parent.postMessage({ type: 'editorReady' }, '*')
71
+ }
72
+ } catch (err) {
73
+ console.error('检查editor对象时出错:', err)
74
+ }
75
+ if (checkCount.value >= 20) {
76
+ clearInterval(checkEditorTimer.value)
77
+ console.error('Editor 对象加载失败')
78
+ }
79
+ }, 500)
80
+ }
81
+ // iframe加载完成的处理
82
+ const onIframeLoad = (e) => {
83
+ const iframe = e.target
84
+ const frameWindow = iframe.contentWindow
85
+ iframeWindow.value = frameWindow
86
+ if (!frameWindow) {
87
+ console.error('无法访问 iframe 内容')
88
+ return
89
+ }
90
+ startEditorCheck(frameWindow, iframe)
91
+ }
92
+ // 组件销毁前清理
93
+ onBeforeUnmount(() => {
94
+ if (checkEditorTimer.value) {
95
+ clearInterval(checkEditorTimer.value)
96
+ }
97
+ })
98
+ // 暴露方法给父组件
99
+ defineExpose({ getEditor, createVitalSigns })
100
+
101
+ // 定义事件
102
+ const emit = defineEmits(['editor-ready', 'load'])
103
+ </script>
104
+
105
+ <style scoped>
106
+ iframe {
107
+ border: none;
108
+ width: 100%;
109
+ min-height: 800px;
110
+ }
111
+ </style>