vue2-client 1.12.98 → 1.12.100

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 (36) hide show
  1. package/package.json +107 -107
  2. package/src/base-client/components/common/XCollapse/XCollapse.vue +251 -251
  3. package/src/base-client/components/common/XDatePicker/index.vue +3 -0
  4. package/src/base-client/components/common/XReport/index.js +3 -3
  5. package/src/base-client/components/common/XReportGrid/XReportDemo.vue +44 -44
  6. package/src/base-client/components/common/XTimeline/XTimeline.vue +19 -18
  7. package/src/base-client/components/his/XList/XList.vue +131 -131
  8. package/src/base-client/components/his/XRadio/XRadio.vue +1 -0
  9. package/src/base-client/components/his/XSidebar/XSidebar.vue +0 -1
  10. package/src/base-client/plugins/AppData.js +126 -126
  11. package/src/expression/ExpressionRunner.js +26 -26
  12. package/src/expression/TestExpression.js +509 -509
  13. package/src/expression/core/Delegate.js +115 -115
  14. package/src/expression/core/Expression.js +1358 -1358
  15. package/src/expression/core/Program.js +932 -932
  16. package/src/expression/core/Token.js +27 -27
  17. package/src/expression/enums/ExpressionType.js +81 -81
  18. package/src/expression/enums/TokenType.js +11 -11
  19. package/src/expression/exception/BreakWayException.js +2 -2
  20. package/src/expression/exception/ContinueWayException.js +2 -2
  21. package/src/expression/exception/ExpressionException.js +28 -28
  22. package/src/expression/exception/ReturnWayException.js +14 -14
  23. package/src/expression/exception/ServiceException.js +22 -22
  24. package/src/expression/instances/LogicConsole.js +44 -44
  25. package/src/logic/LogicRunner.js +62 -62
  26. package/src/logic/TestLogic.js +13 -13
  27. package/src/logic/plugins/common/VueTools.js +30 -30
  28. package/src/logic/ts/LogicRunner.ts +67 -67
  29. package/src/logic/ts/TestLogic.ts +13 -13
  30. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  31. package/src/pages/ReportGrid/index.vue +76 -76
  32. package/src/pages/userInfoDetailManage/uploadFilesHistory/index.vue +1 -1
  33. package/src/router/async/router.map.js +119 -124
  34. package/src/services/api/entity.js +18 -18
  35. package/src/utils/waterMark.js +31 -31
  36. package/src/base-client/components/common/XCollapse/XCollapseDemo.vue +0 -15
@@ -1,251 +1,251 @@
1
- <template>
2
- <div>
3
- <a-collapse
4
- :activeKey="activeKey"
5
- @change="handleChange"
6
- >
7
- <a-collapse-panel
8
- v-for="(panel, panelIndex) in config.showData"
9
- :key="panelIndex.toString()"
10
- :show-arrow="false"
11
- :disabled="config.collapsible"
12
- >
13
- <template #header>
14
- <div class="header-content">
15
- <span
16
- class="header-text"
17
- :style="config.titleStyle"
18
- >
19
- {{ panel.title }}
20
- </span>
21
- <!-- 当有 title2 数据时显示信息项 -->
22
- <template v-if="panel.title2 && panel.title2.length">
23
- <span
24
- v-for="(item, headerIndex) in panel.title2"
25
- :key="headerIndex"
26
- class="info-item"
27
- :style="config.title2Style"
28
- >
29
- <!-- 根据showTitle是否显示键名 -->
30
- <span v-if="item.showTitle">{{ item.key }}:</span>
31
- <span>{{ item.value }}</span>
32
- </span>
33
- </template>
34
- <!-- 当有 title3 数据时显示时间项 -->
35
- <span
36
- v-if="panel.title3"
37
- class="time-item"
38
- :style="config.title3Style"
39
- >
40
- {{ panel.title3 }}
41
- </span>
42
- <!-- 修改搜索框的显示条件 -->
43
- <a-input-search
44
- v-if="panel.search"
45
- v-model="searchText[panelIndex]"
46
- :placeholder="panel.searchPlace"
47
- class="search-input"
48
- @search="(value) => onSearch(value, panelIndex)"
49
- @click.stop
50
- />
51
- </div>
52
- </template>
53
- <!-- 根据类型显示不同内容 -->
54
- <template v-if="panel.type === 'picture'">
55
- <img :src="panel.configName" alt="图片" style="width: 100%; max-width: 500px;"/>
56
- </template>
57
- <template v-else-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse','x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio'].includes(panel.type)">
58
- <component
59
- :is="getComponentName(panel.type)"
60
- :ref="`dynamicComponent_${ panel.type }`"
61
- serverName="af-his"
62
- :queryParamsName="panel.configName"
63
- :countVisible="false"
64
- :env="env"
65
- @listClick="listClick"
66
- @click="click"
67
- />
68
- </template>
69
- </a-collapse-panel>
70
- </a-collapse>
71
- </div>
72
- </template>
73
-
74
- <script>
75
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
76
-
77
- export default {
78
- name: 'XCollapse',
79
- components: {
80
- XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'),
81
- XAddNativeForm: () => import('@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'),
82
- XFormGroup: () => import('@vue2-client/base-client/components/common/XFormGroup/XFormGroup.vue'),
83
- XTreePro: () => import('@vue2-client/base-client/components/common/XTree/XTreePro.vue'),
84
- XHisEditor: () => import('@vue2-client/base-client/components/his/XHisEditor/XHisEditor.vue'),
85
- XTab: () => import('@vue2-client/base-client/components/common/XTab/XTab.vue'),
86
- XReport: () => import('@vue2-client/base-client/components/common/XReport/XReport.vue'),
87
- XButtons: () => import('@vue2-client/base-client/components/common/XButtons/XButtons.vue'),
88
- XLabelSelect: () => import('@vue2-client/base-client/components/common/XLabelSelect/XLabelSelect.vue'),
89
- XConversation: () => import('@vue2-client/base-client/components/common/XConversation/XConversation.vue'),
90
- XCheckList: () => import('@vue2-client/base-client/components/common/XCheckList/XCheckList.vue'),
91
- XCardSet: () => import('@vue2-client/base-client/components/common/XCardSet/XCardSet.vue'),
92
- XCollapse: () => import('@vue2-client/base-client/components/common/XCollapse/XCollapse.vue'),
93
- XHDescriptions: () => import('@vue2-client/base-client/components/his/XHDescriptions/XHDescriptions.vue'),
94
- XSidebar: () => import('@vue2-client/base-client/components/his/XSidebar/XSidebar.vue'),
95
- XList: () => import('@vue2-client/base-client/components/his/XList/XList.vue'),
96
- XInput: () => import('@vue2-client/base-client/components/common/XInput/XInput.vue'),
97
- XTimeLine: () => import('@vue2-client/base-client/components/common/XTimeline/XTimeline.vue'),
98
- XRadio: () => import('@vue2-client/base-client/components/his/XRadio/XRadio.vue')
99
- },
100
- data () {
101
- return {
102
- activeKey: [],
103
- config: {},
104
- configName: '',
105
- searchText: {}
106
- }
107
- },
108
- props: {
109
- // 环境
110
- env: {
111
- type: String,
112
- default: 'prod'
113
- },
114
- // json名
115
- queryParamsName: {
116
- type: Object,
117
- default: null
118
- },
119
- parameter: {
120
- type: Object,
121
- default: () => {
122
- return {}
123
- }
124
- }
125
- },
126
- created () {
127
- this.getData(this.queryParamsName, this.parameter)
128
- },
129
- beforeDestroy () {
130
- },
131
- methods: {
132
- getComponentName (componentName) {
133
- return componentName
134
- },
135
- listClick (data) {
136
- this.$emit('listClick', data)
137
- },
138
- click (data) {
139
- this.$emit('click', data)
140
- },
141
- getConfigByName (componentName) {
142
- const refKey = `dynamicComponent_${componentName}`
143
- return this.$refs[refKey]
144
- },
145
- async getData (config, parameter) {
146
- this.configName = config
147
- getConfigByName(config, 'af-his', res => {
148
- this.config = res
149
- console.warn(this.config)
150
- runLogic(res.mainLogic, parameter, 'af-his').then(result => {
151
- this.config.showData = result
152
- // 更具timeType更改时间类型
153
- if (this.config.timeType && this.config.timeType === '.') {
154
- this.config.showData.forEach(panel => {
155
- if (panel.title3) {
156
- panel.title3 = this.convertToCustomFormat(panel.title3)
157
- }
158
- })
159
- this.$forceUpdate()
160
- }
161
- this.activeKey = this.config.showData.map((_, panelIndex) => panelIndex.toString())
162
- })
163
- })
164
- },
165
- refreshXCollapse () {
166
- this.getData(this.queryParamsName, this.parameter)
167
- },
168
- convertToCustomFormat (dateString) {
169
- // 创建一个新的 Date 对象
170
- const date = new Date(dateString)
171
- // 获取年、月、日
172
- const year = date.getFullYear()
173
- const month = date.getMonth() + 1 // 月份从0开始,所以需要加1
174
- const day = date.getDate()
175
- // 返回格式化后的字符串
176
- return `${year}.${month}.${day}`
177
- },
178
- handleChange (keys) {
179
- this.activeKey = keys
180
- },
181
- onSearch (value, panelIndex) {
182
- this.$emit('searchChange', { value: value, panelIndex: panelIndex })
183
- },
184
- },
185
- watch: {
186
- queryParamsName: {
187
- handler (newValue) {
188
- this.getData(newValue, this.parameter)
189
- },
190
- deep: true
191
- }
192
- }
193
- }
194
- </script>
195
-
196
- <style scoped>
197
- .header-content {
198
- display: flex;
199
- align-items: center;
200
- gap: 24px;
201
- white-space: nowrap;
202
- overflow: hidden;
203
- }
204
-
205
- .header-text {
206
- margin-right: 16px;
207
- font-size: 16px;
208
- font-weight: 800;
209
- flex-shrink: 0;
210
- }
211
-
212
- .info-item {
213
- display: inline-flex;
214
- align-items: center;
215
- gap: 4px;
216
- font-size: 12px;
217
- color: #888888;
218
- flex-shrink: 0;
219
- }
220
-
221
- .time-item {
222
- margin-left: auto;
223
- text-align: right;
224
- flex-shrink: 0;
225
- }
226
-
227
- :deep(.ant-collapse-header) {
228
- position: relative;
229
- border-bottom: v-bind('config.showLine ? "1px solid #000000" : "none"');
230
- align-items: center !important;
231
- }
232
-
233
- :deep(.ant-collapse-header-text) {
234
- flex: 1;
235
- }
236
-
237
- :deep(.ant-collapse-content > .ant-collapse-content-box) {
238
- padding: 0;
239
- }
240
-
241
- :deep(.ant-card-body) {
242
- padding: 8px;
243
- }
244
- .search-input {
245
- margin-left: auto;
246
- width: 100%;
247
- }
248
- :deep(.ant-collapse-item-disabled > .ant-collapse-header) {
249
- cursor: default !important;
250
- }
251
- </style>
1
+ <template>
2
+ <div>
3
+ <a-collapse
4
+ :activeKey="activeKey"
5
+ @change="handleChange"
6
+ >
7
+ <a-collapse-panel
8
+ v-for="(panel, panelIndex) in config.showData"
9
+ :key="panelIndex.toString()"
10
+ :show-arrow="false"
11
+ :disabled="config.collapsible"
12
+ >
13
+ <template #header>
14
+ <div class="header-content">
15
+ <span
16
+ class="header-text"
17
+ :style="config.titleStyle"
18
+ >
19
+ {{ panel.title }}
20
+ </span>
21
+ <!-- 当有 title2 数据时显示信息项 -->
22
+ <template v-if="panel.title2 && panel.title2.length">
23
+ <span
24
+ v-for="(item, headerIndex) in panel.title2"
25
+ :key="headerIndex"
26
+ class="info-item"
27
+ :style="config.title2Style"
28
+ >
29
+ <!-- 根据showTitle是否显示键名 -->
30
+ <span v-if="item.showTitle">{{ item.key }}:</span>
31
+ <span>{{ item.value }}</span>
32
+ </span>
33
+ </template>
34
+ <!-- 当有 title3 数据时显示时间项 -->
35
+ <span
36
+ v-if="panel.title3"
37
+ class="time-item"
38
+ :style="config.title3Style"
39
+ >
40
+ {{ panel.title3 }}
41
+ </span>
42
+ <!-- 修改搜索框的显示条件 -->
43
+ <a-input-search
44
+ v-if="panel.search"
45
+ v-model="searchText[panelIndex]"
46
+ :placeholder="panel.searchPlace"
47
+ class="search-input"
48
+ @search="(value) => onSearch(value, panelIndex)"
49
+ @click.stop
50
+ />
51
+ </div>
52
+ </template>
53
+ <!-- 根据类型显示不同内容 -->
54
+ <template v-if="panel.type === 'picture'">
55
+ <img :src="panel.configName" alt="图片" style="width: 100%; max-width: 500px;"/>
56
+ </template>
57
+ <template v-else-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse','x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio'].includes(panel.type)">
58
+ <component
59
+ :is="getComponentName(panel.type)"
60
+ :ref="`dynamicComponent_${ panel.type }`"
61
+ serverName="af-his"
62
+ :queryParamsName="panel.configName"
63
+ :countVisible="false"
64
+ :env="env"
65
+ @listClick="listClick"
66
+ @click="click"
67
+ />
68
+ </template>
69
+ </a-collapse-panel>
70
+ </a-collapse>
71
+ </div>
72
+ </template>
73
+
74
+ <script>
75
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
76
+
77
+ export default {
78
+ name: 'XCollapse',
79
+ components: {
80
+ XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'),
81
+ XAddNativeForm: () => import('@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'),
82
+ XFormGroup: () => import('@vue2-client/base-client/components/common/XFormGroup/XFormGroup.vue'),
83
+ XTreePro: () => import('@vue2-client/base-client/components/common/XTree/XTreePro.vue'),
84
+ XHisEditor: () => import('@vue2-client/base-client/components/his/XHisEditor/XHisEditor.vue'),
85
+ XTab: () => import('@vue2-client/base-client/components/common/XTab/XTab.vue'),
86
+ XReport: () => import('@vue2-client/base-client/components/common/XReport/XReport.vue'),
87
+ XButtons: () => import('@vue2-client/base-client/components/common/XButtons/XButtons.vue'),
88
+ XLabelSelect: () => import('@vue2-client/base-client/components/common/XLabelSelect/XLabelSelect.vue'),
89
+ XConversation: () => import('@vue2-client/base-client/components/common/XConversation/XConversation.vue'),
90
+ XCheckList: () => import('@vue2-client/base-client/components/common/XCheckList/XCheckList.vue'),
91
+ XCardSet: () => import('@vue2-client/base-client/components/common/XCardSet/XCardSet.vue'),
92
+ XCollapse: () => import('@vue2-client/base-client/components/common/XCollapse/XCollapse.vue'),
93
+ XHDescriptions: () => import('@vue2-client/base-client/components/his/XHDescriptions/XHDescriptions.vue'),
94
+ XSidebar: () => import('@vue2-client/base-client/components/his/XSidebar/XSidebar.vue'),
95
+ XList: () => import('@vue2-client/base-client/components/his/XList/XList.vue'),
96
+ XInput: () => import('@vue2-client/base-client/components/common/XInput/XInput.vue'),
97
+ XTimeLine: () => import('@vue2-client/base-client/components/common/XTimeline/XTimeline.vue'),
98
+ XRadio: () => import('@vue2-client/base-client/components/his/XRadio/XRadio.vue')
99
+ },
100
+ data () {
101
+ return {
102
+ activeKey: [],
103
+ config: {},
104
+ configName: '',
105
+ searchText: {}
106
+ }
107
+ },
108
+ props: {
109
+ // 环境
110
+ env: {
111
+ type: String,
112
+ default: 'prod'
113
+ },
114
+ // json名
115
+ queryParamsName: {
116
+ type: Object,
117
+ default: null
118
+ },
119
+ parameter: {
120
+ type: Object,
121
+ default: () => {
122
+ return {}
123
+ }
124
+ }
125
+ },
126
+ created () {
127
+ this.getData(this.queryParamsName, this.parameter)
128
+ },
129
+ beforeDestroy () {
130
+ },
131
+ methods: {
132
+ getComponentName (componentName) {
133
+ return componentName
134
+ },
135
+ listClick (data) {
136
+ this.$emit('listClick', data)
137
+ },
138
+ click (data) {
139
+ this.$emit('click', data)
140
+ },
141
+ getConfigByName (componentName) {
142
+ const refKey = `dynamicComponent_${componentName}`
143
+ return this.$refs[refKey]
144
+ },
145
+ async getData (config, parameter) {
146
+ this.configName = config
147
+ getConfigByName(config, 'af-his', res => {
148
+ this.config = res
149
+ console.warn(this.config)
150
+ runLogic(res.mainLogic, parameter, 'af-his').then(result => {
151
+ this.config.showData = result
152
+ // 更具timeType更改时间类型
153
+ if (this.config.timeType && this.config.timeType === '.') {
154
+ this.config.showData.forEach(panel => {
155
+ if (panel.title3) {
156
+ panel.title3 = this.convertToCustomFormat(panel.title3)
157
+ }
158
+ })
159
+ this.$forceUpdate()
160
+ }
161
+ this.activeKey = this.config.showData.map((_, panelIndex) => panelIndex.toString())
162
+ })
163
+ })
164
+ },
165
+ refreshXCollapse () {
166
+ this.getData(this.queryParamsName, this.parameter)
167
+ },
168
+ convertToCustomFormat (dateString) {
169
+ // 创建一个新的 Date 对象
170
+ const date = new Date(dateString)
171
+ // 获取年、月、日
172
+ const year = date.getFullYear()
173
+ const month = date.getMonth() + 1 // 月份从0开始,所以需要加1
174
+ const day = date.getDate()
175
+ // 返回格式化后的字符串
176
+ return `${year}.${month}.${day}`
177
+ },
178
+ handleChange (keys) {
179
+ this.activeKey = keys
180
+ },
181
+ onSearch (value, panelIndex) {
182
+ this.$emit('searchChange', { value: value, panelIndex: panelIndex })
183
+ },
184
+ },
185
+ watch: {
186
+ queryParamsName: {
187
+ handler (newValue) {
188
+ this.getData(newValue, this.parameter)
189
+ },
190
+ deep: true
191
+ }
192
+ }
193
+ }
194
+ </script>
195
+
196
+ <style scoped>
197
+ .header-content {
198
+ display: flex;
199
+ align-items: center;
200
+ gap: 24px;
201
+ white-space: nowrap;
202
+ overflow: hidden;
203
+ }
204
+
205
+ .header-text {
206
+ margin-right: 16px;
207
+ font-size: 16px;
208
+ font-weight: 800;
209
+ flex-shrink: 0;
210
+ }
211
+
212
+ .info-item {
213
+ display: inline-flex;
214
+ align-items: center;
215
+ gap: 4px;
216
+ font-size: 12px;
217
+ color: #888888;
218
+ flex-shrink: 0;
219
+ }
220
+
221
+ .time-item {
222
+ margin-left: auto;
223
+ text-align: right;
224
+ flex-shrink: 0;
225
+ }
226
+
227
+ :deep(.ant-collapse-header) {
228
+ position: relative;
229
+ border-bottom: v-bind('config.showLine ? "1px solid #000000" : "none"');
230
+ align-items: center !important;
231
+ }
232
+
233
+ :deep(.ant-collapse-header-text) {
234
+ flex: 1;
235
+ }
236
+
237
+ :deep(.ant-collapse-content > .ant-collapse-content-box) {
238
+ padding: 0;
239
+ }
240
+
241
+ :deep(.ant-card-body) {
242
+ padding: 8px;
243
+ }
244
+ .search-input {
245
+ margin-left: auto;
246
+ width: 100%;
247
+ }
248
+ :deep(.ant-collapse-item-disabled > .ant-collapse-header) {
249
+ cursor: default !important;
250
+ }
251
+ </style>
@@ -175,6 +175,9 @@ export default {
175
175
  this.yearShowOne = status
176
176
  },
177
177
  RangePanelChange (value, mode) {
178
+ if (value.length === 0) {
179
+ return
180
+ }
178
181
  this.localValue = [
179
182
  moment(value[0]).format(this.formatType),
180
183
  moment(value[1]).format(this.formatType),
@@ -1,3 +1,3 @@
1
- import XReport from './XReport'
2
-
3
- export default XReport
1
+ import XReport from './XReport'
2
+
3
+ export default XReport
@@ -1,44 +1,44 @@
1
- <template>
2
- <div id="test">
3
- <a-card :bordered="false">
4
- <XReport
5
- ref="main"
6
- :use-oss-for-img="false"
7
- config-name="openPrescriptionCover"
8
- server-name="af-his"
9
- :show-img-in-cell="true"
10
- :display-only="true"
11
- :edit-mode="false"
12
- :dont-format="true"/>
13
- </a-card>
14
- </div>
15
- </template>
16
-
17
- <script>
18
- import XReport from './XReport'
19
- import XAddReport from '../XAddReport/XAddReport.vue'
20
- // eslint-disable-next-line no-unused-vars
21
-
22
- export default {
23
- name: 'XReportDemo',
24
- components: {
25
- XReport, XAddReport
26
- },
27
- mounted () {
28
- // this.$refs.xAddReport.init({
29
- // configName: 'skinTestExecuActionCover',
30
- // selectedId: '11111',
31
- // mixinData: {}
32
- // })
33
- },
34
- data () {
35
- return {
36
- }
37
- },
38
- methods: {
39
- }
40
- }
41
- </script>
42
- <style scoped>
43
-
44
- </style>
1
+ <template>
2
+ <div id="test">
3
+ <a-card :bordered="false">
4
+ <XReport
5
+ ref="main"
6
+ :use-oss-for-img="false"
7
+ config-name="openPrescriptionCover"
8
+ server-name="af-his"
9
+ :show-img-in-cell="true"
10
+ :display-only="true"
11
+ :edit-mode="false"
12
+ :dont-format="true"/>
13
+ </a-card>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ import XReport from './XReport'
19
+ import XAddReport from '../XAddReport/XAddReport.vue'
20
+ // eslint-disable-next-line no-unused-vars
21
+
22
+ export default {
23
+ name: 'XReportDemo',
24
+ components: {
25
+ XReport, XAddReport
26
+ },
27
+ mounted () {
28
+ // this.$refs.xAddReport.init({
29
+ // configName: 'skinTestExecuActionCover',
30
+ // selectedId: '11111',
31
+ // mixinData: {}
32
+ // })
33
+ },
34
+ data () {
35
+ return {
36
+ }
37
+ },
38
+ methods: {
39
+ }
40
+ }
41
+ </script>
42
+ <style scoped>
43
+
44
+ </style>