vue2-client 1.16.86 → 1.16.87

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 (40) hide show
  1. package/package.json +112 -112
  2. package/src/assets/img/paymentMethod/icon1.png +0 -0
  3. package/src/assets/img/paymentMethod/icon2.png +0 -0
  4. package/src/assets/img/paymentMethod/icon3.png +0 -0
  5. package/src/assets/img/paymentMethod/icon4.png +0 -0
  6. package/src/assets/img/paymentMethod/icon5.png +0 -0
  7. package/src/assets/img/paymentMethod/icon6.png +0 -0
  8. package/src/assets/svg/female.svg +1 -1
  9. package/src/assets/svg/male.svg +1 -1
  10. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +412 -381
  11. package/src/base-client/components/common/HIS/HForm/HForm.vue +506 -492
  12. package/src/base-client/components/common/HIS/HFormGroup/index.js +3 -3
  13. package/src/base-client/components/common/HIS/HFormTable/HFormTable.vue +5 -0
  14. package/src/base-client/components/common/HIS/HTab/HTab.vue +443 -443
  15. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +8 -0
  16. package/src/base-client/components/common/XCollapse/XCollapse.vue +833 -833
  17. package/src/base-client/components/common/XDatePicker/index.vue +16 -4
  18. package/src/base-client/components/common/XForm/XFormItem.vue +6 -0
  19. package/src/base-client/components/common/XFormTable/XFormTable.vue +6 -0
  20. package/src/base-client/components/common/XInput/XInput.vue +194 -194
  21. package/src/base-client/components/common/XReport/XReportHospitalizationDemo.vue +45 -0
  22. package/src/base-client/components/common/XTable/XTable.vue +1618 -1610
  23. package/src/base-client/components/common/XTimeline/XTimeline.vue +478 -478
  24. package/src/base-client/components/his/XCheckbox/XCheckbox.vue +194 -181
  25. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +705 -705
  26. package/src/base-client/components/his/XIcon/XIcon.vue +73 -73
  27. package/src/base-client/components/his/XIcon/index.js +3 -3
  28. package/src/base-client/components/his/XIcon/index.md +177 -177
  29. package/src/base-client/components/his/XImportExcelButton/XImportExcelButton.vue +46 -2
  30. package/src/base-client/components/his/XList/XList.vue +829 -829
  31. package/src/base-client/components/his/XRadio/XRadio.vue +389 -389
  32. package/src/base-client/components/his/XSimpleTable/XSimpleTable.vue +159 -159
  33. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +306 -306
  34. package/src/base-client/components/his/XTitle/XTitle.vue +274 -274
  35. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +341 -341
  36. package/src/base-client/components/his/threeTestOrders/editor.vue +113 -113
  37. package/src/pages/userInfoDetailManage/ExceptionRecordQuery/index.vue +45 -45
  38. package/src-base-client/components/his/XCharge/XCharge.vue +0 -0
  39. package/src-base-client/components/common/HIS/HForm/HForm.vue +0 -347
  40. /package/src-base-client/components/{common/XCollapse/XCollapse.vue → his/XCharge/README.md} +0 -0
@@ -1,274 +1,274 @@
1
- <template>
2
- <div class="x-title-container" :class="wrapperClassObject">
3
- <div
4
- v-if="config.type === 'title'"
5
- class="x-title"
6
- :class="{ 'with-underline': config.line === 'line' }">
7
- <div class="title-content">
8
- <div class="title-dot"></div>
9
- <a-icon v-if="attrs.icon && !attrs.customIcon" :type="attrs.icon" class="title-icon" />
10
- <XIcon v-if="attrs.customIcon" :name="attrs.customIcon" class="title-icon" />
11
- <span>{{ config.label }}</span>
12
- </div>
13
- <div
14
- v-if="config.line === 'line'"
15
- class="underline"
16
- :style="lineStyle">
17
- </div>
18
- </div>
19
- <div v-else-if="config.type === 'button'" class="x-button-container">
20
- <a-button type="primary" @click="handleClick">{{ config.label }}</a-button>
21
- </div>
22
- </div>
23
- </template>
24
-
25
- <script setup>
26
- import { ref, computed, onMounted, useAttrs } from 'vue'
27
- import XIcon from '../XIcon/XIcon.vue'
28
-
29
- const props = defineProps({
30
- queryParamsName: {
31
- type: String,
32
- default: ''
33
- },
34
- // 新增:直接设置标题文本,优先级高于queryParamsName
35
- title: {
36
- type: String,
37
- default: ''
38
- }
39
- })
40
-
41
- const emit = defineEmits([])
42
-
43
- const config = ref({
44
- label: '',
45
- type: 'title',
46
- clickName: '',
47
- line: '',
48
- color: '',
49
- lineLength: ''
50
- })
51
-
52
- const lineStyle = computed(() => {
53
- const style = {}
54
-
55
- // 设置线条颜色
56
- style.backgroundColor = config.value.color || '#5D5C5C'
57
-
58
- // 设置线条宽度
59
- style.width = config.value.lineLength ? `${config.value.lineLength}px` : '800px'
60
-
61
- return style
62
- })
63
-
64
- // 动态样式开关:通过 $attrs 生成 xtitle-* 类(布尔开关 + size 派生类)
65
- const attrs = useAttrs()
66
- const wrapperClassObject = computed(() => {
67
- const classes = {}
68
- const booleanStyleKeys = [
69
- 'center',
70
- 'littlefont',
71
- 'dot',
72
- 'nodot',
73
- 'yizhu-title',
74
- 'left-title',
75
- 'line-style'
76
- ]
77
- booleanStyleKeys.forEach(key => {
78
- const val = attrs[key]
79
- const truthy = val === true || val === '' || val === 'true'
80
- if (truthy) classes[`x-title-${key}`] = true
81
- })
82
- return classes
83
- })
84
-
85
- const handleClick = () => {
86
- if (config.value.clickName) {
87
- emit(config.value.clickName)
88
- }
89
- }
90
-
91
- const parseConfig = (data) => {
92
- // 如果设置了title属性,直接使用title作为标签
93
- if (props.title) {
94
- config.value.label = props.title
95
- config.value.type = 'title'
96
- config.value.line = ''
97
- config.value.color = ''
98
- config.value.lineLength = ''
99
- config.value.clickName = ''
100
- return
101
- }
102
-
103
- if (!data) return
104
-
105
- const parts = data.includes('-') ? data.split('-') : data === 'line' ? ['', 'title', 'line'] : [data]
106
-
107
- // 基本设置 - 标签和类型
108
- config.value.label = parts[0] || ''
109
- config.value.type = parts[1] || 'title'
110
-
111
- // 根据类型采用不同的参数格式解析
112
- if (config.value.type === 'title') {
113
- // 标题类型格式: aa-title-line-red-800
114
- // parts[0]: 标签
115
- // parts[1]: title
116
- // parts[2]: line (下划线样式)
117
- // parts[3]: 颜色
118
- // parts[4]: 长度
119
- config.value.line = parts[2] || ''
120
- config.value.color = parts[3] || ''
121
- config.value.lineLength = parts[4] || ''
122
- } else if (config.value.type === 'button') {
123
- // 按钮类型格式: aa-button-cc
124
- // parts[0]: 标签
125
- // parts[1]: button
126
- // parts[2]: 点击事件名称
127
- config.value.clickName = parts[2] || ''
128
- }
129
- }
130
-
131
- onMounted(() => {
132
- parseConfig(props.queryParamsName)
133
- })
134
- </script>
135
-
136
- <style scoped lang="less">
137
- .x-title-container {
138
- display: flex;
139
- align-items: center;
140
- justify-content: space-between;
141
- }
142
-
143
- .x-title {
144
- font-size: 18px;
145
- font-weight: 700;
146
- height: 26px;
147
- width: 100%;
148
- text-align: left;
149
- font-family: "Source Han Sans";
150
- color: #313131;
151
- position: relative;
152
- }
153
-
154
- .underline {
155
- position: absolute;
156
- bottom: 0;
157
- left: 0;
158
- height: 1px;
159
- width: 100%;
160
- background-color: #5D5C5C;
161
- }
162
-
163
- .x-button-container {
164
- text-align: right;
165
- }
166
- .x-title-center {
167
- &.x-title-container,
168
- .x-title-container {
169
- :deep(.x-title) {
170
- text-align: center;
171
- }
172
- }
173
- }
174
- .x-title-littlefont {
175
- &.x-title-container,
176
- .x-title-container {
177
- :deep(.x-title) {
178
- font-size: 16px;
179
- }
180
- }
181
- }
182
-
183
- .title-icon {
184
- font-size: 16px;
185
- flex-shrink: 0;
186
- display: inline-flex;
187
- align-items: center;
188
- justify-content: center;
189
- vertical-align: baseline;
190
- line-height: 1;
191
- color: #5D5C5C;
192
- margin-right: 8px;
193
- transform: translateY(0.1em);
194
- }
195
-
196
- // title-content 默认样式 - 只保留右侧间距
197
- .x-title-container {
198
- :deep(.title-content) {
199
- display: flex;
200
- align-items: baseline;
201
- }
202
- }
203
-
204
- .x-title-dot,
205
- .x-title-nodot {
206
- &.x-title-container,
207
- .x-title-container {
208
- :deep(.title-dot) {
209
- width: 14px;
210
- height: 14px;
211
- margin-right: 8px;
212
- flex-shrink: 0;
213
- }
214
- }
215
- }
216
-
217
- // dot 样式特有部分
218
- .x-title-dot {
219
- &.x-title-container,
220
- .x-title-container {
221
- :deep(.title-dot) {
222
- border-radius: 50%;
223
- background-color: #3362DA;
224
- }
225
- }
226
- }
227
- .x-title-yizhu-title {
228
- &.x-title-container,
229
- .x-title-container {
230
- margin-top: 3px;
231
- margin-left: 6px;
232
- margin-bottom: 7px;
233
- :deep(.x-title) {
234
- height: 26px;
235
- opacity: 1;
236
- font-family: "Source Han Sans";
237
- font-size: 18px;
238
- font-weight: bold;
239
- line-height: normal;
240
- letter-spacing: 0em;
241
- font-feature-settings: "kern" on;
242
- color: #5D5C5C;
243
- }
244
- }
245
- }
246
- .x-title-left-title {
247
- &.x-title-container,
248
- .x-title-container {
249
- margin: 15px auto 15px 6px;
250
- :deep(.x-title) {
251
- height: 26px;
252
- opacity: 1;
253
- font-family: "Source Han Sans";
254
- font-size: 18px;
255
- font-weight: bold;
256
- line-height: normal;
257
- }
258
- }
259
- }
260
- // nodot 样式特有部分
261
- .x-title-nodot {
262
- &.x-title-container,
263
- .x-title-container {
264
- :deep(.title-dot) {
265
- /* 透明圆点,保持占位但不显示 */
266
- background-color: transparent;
267
- }
268
- }
269
- }
270
- .x-title-line-style {
271
- background: #0057FE;
272
- height: 2px;
273
- }
274
- </style>
1
+ <template>
2
+ <div class="x-title-container" :class="wrapperClassObject">
3
+ <div
4
+ v-if="config.type === 'title'"
5
+ class="x-title"
6
+ :class="{ 'with-underline': config.line === 'line' }">
7
+ <div class="title-content">
8
+ <div class="title-dot"></div>
9
+ <a-icon v-if="attrs.icon && !attrs.customIcon" :type="attrs.icon" class="title-icon" />
10
+ <XIcon v-if="attrs.customIcon" :name="attrs.customIcon" class="title-icon" />
11
+ <span>{{ config.label }}</span>
12
+ </div>
13
+ <div
14
+ v-if="config.line === 'line'"
15
+ class="underline"
16
+ :style="lineStyle">
17
+ </div>
18
+ </div>
19
+ <div v-else-if="config.type === 'button'" class="x-button-container">
20
+ <a-button type="primary" @click="handleClick">{{ config.label }}</a-button>
21
+ </div>
22
+ </div>
23
+ </template>
24
+
25
+ <script setup>
26
+ import { ref, computed, onMounted, useAttrs } from 'vue'
27
+ import XIcon from '../XIcon/XIcon.vue'
28
+
29
+ const props = defineProps({
30
+ queryParamsName: {
31
+ type: String,
32
+ default: ''
33
+ },
34
+ // 新增:直接设置标题文本,优先级高于queryParamsName
35
+ title: {
36
+ type: String,
37
+ default: ''
38
+ }
39
+ })
40
+
41
+ const emit = defineEmits([])
42
+
43
+ const config = ref({
44
+ label: '',
45
+ type: 'title',
46
+ clickName: '',
47
+ line: '',
48
+ color: '',
49
+ lineLength: ''
50
+ })
51
+
52
+ const lineStyle = computed(() => {
53
+ const style = {}
54
+
55
+ // 设置线条颜色
56
+ style.backgroundColor = config.value.color || '#5D5C5C'
57
+
58
+ // 设置线条宽度
59
+ style.width = config.value.lineLength ? `${config.value.lineLength}px` : '800px'
60
+
61
+ return style
62
+ })
63
+
64
+ // 动态样式开关:通过 $attrs 生成 xtitle-* 类(布尔开关 + size 派生类)
65
+ const attrs = useAttrs()
66
+ const wrapperClassObject = computed(() => {
67
+ const classes = {}
68
+ const booleanStyleKeys = [
69
+ 'center',
70
+ 'littlefont',
71
+ 'dot',
72
+ 'nodot',
73
+ 'yizhu-title',
74
+ 'left-title',
75
+ 'line-style'
76
+ ]
77
+ booleanStyleKeys.forEach(key => {
78
+ const val = attrs[key]
79
+ const truthy = val === true || val === '' || val === 'true'
80
+ if (truthy) classes[`x-title-${key}`] = true
81
+ })
82
+ return classes
83
+ })
84
+
85
+ const handleClick = () => {
86
+ if (config.value.clickName) {
87
+ emit(config.value.clickName)
88
+ }
89
+ }
90
+
91
+ const parseConfig = (data) => {
92
+ // 如果设置了title属性,直接使用title作为标签
93
+ if (props.title) {
94
+ config.value.label = props.title
95
+ config.value.type = 'title'
96
+ config.value.line = ''
97
+ config.value.color = ''
98
+ config.value.lineLength = ''
99
+ config.value.clickName = ''
100
+ return
101
+ }
102
+
103
+ if (!data) return
104
+
105
+ const parts = data.includes('-') ? data.split('-') : data === 'line' ? ['', 'title', 'line'] : [data]
106
+
107
+ // 基本设置 - 标签和类型
108
+ config.value.label = parts[0] || ''
109
+ config.value.type = parts[1] || 'title'
110
+
111
+ // 根据类型采用不同的参数格式解析
112
+ if (config.value.type === 'title') {
113
+ // 标题类型格式: aa-title-line-red-800
114
+ // parts[0]: 标签
115
+ // parts[1]: title
116
+ // parts[2]: line (下划线样式)
117
+ // parts[3]: 颜色
118
+ // parts[4]: 长度
119
+ config.value.line = parts[2] || ''
120
+ config.value.color = parts[3] || ''
121
+ config.value.lineLength = parts[4] || ''
122
+ } else if (config.value.type === 'button') {
123
+ // 按钮类型格式: aa-button-cc
124
+ // parts[0]: 标签
125
+ // parts[1]: button
126
+ // parts[2]: 点击事件名称
127
+ config.value.clickName = parts[2] || ''
128
+ }
129
+ }
130
+
131
+ onMounted(() => {
132
+ parseConfig(props.queryParamsName)
133
+ })
134
+ </script>
135
+
136
+ <style scoped lang="less">
137
+ .x-title-container {
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: space-between;
141
+ }
142
+
143
+ .x-title {
144
+ font-size: 18px;
145
+ font-weight: 700;
146
+ height: 26px;
147
+ width: 100%;
148
+ text-align: left;
149
+ font-family: "Source Han Sans";
150
+ color: #313131;
151
+ position: relative;
152
+ }
153
+
154
+ .underline {
155
+ position: absolute;
156
+ bottom: 0;
157
+ left: 0;
158
+ height: 1px;
159
+ width: 100%;
160
+ background-color: #5D5C5C;
161
+ }
162
+
163
+ .x-button-container {
164
+ text-align: right;
165
+ }
166
+ .x-title-center {
167
+ &.x-title-container,
168
+ .x-title-container {
169
+ :deep(.x-title) {
170
+ text-align: center;
171
+ }
172
+ }
173
+ }
174
+ .x-title-littlefont {
175
+ &.x-title-container,
176
+ .x-title-container {
177
+ :deep(.x-title) {
178
+ font-size: 16px;
179
+ }
180
+ }
181
+ }
182
+
183
+ .title-icon {
184
+ font-size: 16px;
185
+ flex-shrink: 0;
186
+ display: inline-flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ vertical-align: baseline;
190
+ line-height: 1;
191
+ color: #5D5C5C;
192
+ margin-right: 8px;
193
+ transform: translateY(0.1em);
194
+ }
195
+
196
+ // title-content 默认样式 - 只保留右侧间距
197
+ .x-title-container {
198
+ :deep(.title-content) {
199
+ display: flex;
200
+ align-items: baseline;
201
+ }
202
+ }
203
+
204
+ .x-title-dot,
205
+ .x-title-nodot {
206
+ &.x-title-container,
207
+ .x-title-container {
208
+ :deep(.title-dot) {
209
+ width: 14px;
210
+ height: 14px;
211
+ margin-right: 8px;
212
+ flex-shrink: 0;
213
+ }
214
+ }
215
+ }
216
+
217
+ // dot 样式特有部分
218
+ .x-title-dot {
219
+ &.x-title-container,
220
+ .x-title-container {
221
+ :deep(.title-dot) {
222
+ border-radius: 50%;
223
+ background-color: #3362DA;
224
+ }
225
+ }
226
+ }
227
+ .x-title-yizhu-title {
228
+ &.x-title-container,
229
+ .x-title-container {
230
+ margin-top: 3px;
231
+ margin-left: 6px;
232
+ margin-bottom: 7px;
233
+ :deep(.x-title) {
234
+ height: 26px;
235
+ opacity: 1;
236
+ font-family: "Source Han Sans";
237
+ font-size: 18px;
238
+ font-weight: bold;
239
+ line-height: normal;
240
+ letter-spacing: 0em;
241
+ font-feature-settings: "kern" on;
242
+ color: #5D5C5C;
243
+ }
244
+ }
245
+ }
246
+ .x-title-left-title {
247
+ &.x-title-container,
248
+ .x-title-container {
249
+ margin: 15px auto 15px 6px;
250
+ :deep(.x-title) {
251
+ height: 26px;
252
+ opacity: 1;
253
+ font-family: "Source Han Sans";
254
+ font-size: 18px;
255
+ font-weight: bold;
256
+ line-height: normal;
257
+ }
258
+ }
259
+ }
260
+ // nodot 样式特有部分
261
+ .x-title-nodot {
262
+ &.x-title-container,
263
+ .x-title-container {
264
+ :deep(.title-dot) {
265
+ /* 透明圆点,保持占位但不显示 */
266
+ background-color: transparent;
267
+ }
268
+ }
269
+ }
270
+ .x-title-line-style {
271
+ background: #0057FE;
272
+ height: 2px;
273
+ }
274
+ </style>