vue2-client 1.16.83 → 1.16.84

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 (23) hide show
  1. package/package.json +112 -112
  2. package/src/assets/svg/female.svg +1 -1
  3. package/src/assets/svg/male.svg +1 -1
  4. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +381 -369
  5. package/src/base-client/components/common/HIS/HForm/HForm.vue +348 -177
  6. package/src/base-client/components/common/HIS/HFormGroup/index.js +3 -3
  7. package/src/base-client/components/common/XCollapse/XCollapse.vue +833 -833
  8. package/src/base-client/components/common/XInput/XInput.vue +194 -194
  9. package/src/base-client/components/common/XTable/XTable.vue +1610 -1610
  10. package/src/base-client/components/common/XTimeline/XTimeline.vue +462 -454
  11. package/src/base-client/components/his/XCheckbox/XCheckbox.vue +181 -134
  12. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +705 -705
  13. package/src/base-client/components/his/XList/XList.vue +829 -829
  14. package/src/base-client/components/his/XRadio/XRadio.vue +389 -322
  15. package/src/base-client/components/his/XSimpleTable/XSimpleTable.vue +159 -159
  16. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +306 -269
  17. package/src/base-client/components/his/XTitle/XTitle.vue +269 -255
  18. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +341 -341
  19. package/src/base-client/components/his/threeTestOrders/editor.vue +113 -113
  20. package/src/pages/userInfoDetailManage/ExceptionRecordQuery/index.vue +45 -45
  21. package/src/router/async/router.map.js +1 -2
  22. package/src-base-client/components/common/HIS/HForm/HForm.vue +348 -0
  23. package/src-base-client/components/common/XCollapse/XCollapse.vue +0 -0
@@ -1,194 +1,194 @@
1
- <template>
2
- <div class="x-input-wrapper" :class="wrapperClassObject">
3
- <div class="input-container">
4
- <span v-if="config?.label" class="input-label">{{ config.label }}</span>
5
- <div class="input-wrapper">
6
- <a-input
7
- v-model="innerValue"
8
- v-bind="$attrs"
9
- :placeholder="config?.placeholder"
10
- :size="config?.size"
11
- :maxLength="config?.maxLength"
12
- :disabled="config?.disabled"
13
- :allowClear="config?.allowClear"
14
- @change="handleInput"
15
- @pressEnter="handleSearch"
16
- >
17
- <template v-if="config?.prefix" #prefix>
18
- <a-icon :type="config.prefix" @click="handleSearch" class="clickable-icon" />
19
- </template>
20
- <template v-if="config?.suffix" #suffix>
21
- <a-icon :type="config.suffix" @click="handleSearch" class="clickable-icon" />
22
- </template>
23
- </a-input>
24
- </div>
25
- <span v-if="config?.tail" class="input-tail">{{ config.tail }}</span>
26
- </div>
27
- </div>
28
- </template>
29
-
30
- <script>
31
- import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
32
-
33
- export default {
34
- name: 'XInput',
35
- inheritAttrs: false,
36
- props: {
37
- value: {
38
- type: [String, Number],
39
- default: ''
40
- },
41
- queryParamsName: {
42
- type: String,
43
- default: ''
44
- }
45
- },
46
- data () {
47
- return {
48
- innerValue: this.value || '',
49
- config: null
50
- }
51
- },
52
- computed: {
53
- // 动态样式开关:布尔开关 + size 派生类
54
- wrapperClassObject () {
55
- const attrs = this.$attrs || {}
56
- const classes = {}
57
- const booleanStyleKeys = [
58
- 'medical-history',
59
- 'yizhu-input'
60
- ]
61
- booleanStyleKeys.forEach(key => {
62
- const val = attrs[key]
63
- const truthy = val === true || val === '' || val === 'true'
64
- if (truthy) classes[`xinput-${key}`] = true
65
- })
66
- const size = attrs.size
67
- if (size && typeof size === 'string') classes[`xinput-size-${size}`] = true
68
- return classes
69
- }
70
- },
71
- created () {
72
- this.getData(this.queryParamsName)
73
- },
74
- emits: ['search'],
75
- methods: {
76
- runLogic,
77
- async getData (data) {
78
- getConfigByName(data, 'af-his', res => {
79
- this.config = res
80
- if (res.defaultValue !== undefined) {
81
- this.innerValue = res.defaultValue
82
- }
83
- })
84
- },
85
- handleInput (e) {
86
- const value = e.target.value
87
- this.innerValue = value
88
- this.$emit('search', value)
89
- },
90
- handleSearch () {
91
- // 统一的搜索事件:将当前输入值发送给父组件
92
- this.$emit('search', this.innerValue)
93
- }
94
- },
95
- watch: {
96
- value: {
97
- handler (newValue) {
98
- this.innerValue = newValue
99
- },
100
- immediate: true
101
- },
102
- queryParamsName: {
103
- handler (newValue) {
104
- this.getData(newValue)
105
- },
106
- deep: true
107
- }
108
- }
109
- }
110
- </script>
111
-
112
- <style scoped lang="less">
113
- .x-input-wrapper {
114
- position: relative;
115
- display: inline-block;
116
- width: 100%;
117
- }
118
-
119
- .input-container {
120
- display: flex;
121
- align-items: center;
122
- }
123
-
124
- .input-label {
125
- white-space: nowrap;
126
- color: rgba(0, 0, 0, 0.85);
127
- padding-right: 8px; /* 标签右侧固定间距 */
128
- }
129
-
130
- .input-label {
131
- white-space: nowrap;
132
- color: rgba(0, 0, 0, 0.85);
133
- padding-left: 4px; /* 标签左侧固定间距 */
134
- }
135
-
136
- .input-wrapper {
137
- flex: 1; /* 输入框占据剩余空间 */
138
- }
139
-
140
- :deep(.clickable-icon) {
141
- cursor: pointer;
142
- }
143
-
144
- :deep(.clickable-icon:hover) {
145
- color: #1890ff;
146
- }
147
-
148
- .x-input-wrapper{
149
- &.xinput-medical-history {
150
- width: 192px;
151
- height: 32px;
152
- border-radius: 6px;
153
- opacity: 1;
154
- background: #FFFFFF;
155
- box-sizing: border-box;
156
- border: 1px solid #D8D8D8;
157
-
158
- :deep(.ant-input::placeholder) {
159
- font-family: Source Han Sans;
160
- font-size: 16px;
161
- font-weight: normal;
162
- line-height: normal;
163
- letter-spacing: 0em;
164
- font-variation-settings: "opsz" auto;
165
- font-feature-settings: "kern" on;
166
- color: #A7A7A7;
167
- }
168
- }
169
- &.xinput-yizhu-input {
170
- border-radius: 6px;
171
- opacity: 1;
172
- background: #FFFFFF;
173
- box-sizing: border-box;
174
- border: 1px solid #E5E9F0;
175
-
176
- margin: 2px 0px;
177
- :deep(.ant-input) {
178
- border-radius: 6px;
179
- opacity: 1;
180
- background: #FFFFFF;
181
- box-sizing: border-box;
182
- border: 1px solid #E5E9F0;
183
- font-family: Source Han Sans;
184
- font-size: 14px;
185
- padding: 5px 76px 3px 8px;
186
- font-weight: normal;
187
- line-height: 24px;
188
- letter-spacing: 0em;
189
- color: #A7A7A7;
190
- }
191
- }
192
- }
193
-
194
- </style>
1
+ <template>
2
+ <div class="x-input-wrapper" :class="wrapperClassObject">
3
+ <div class="input-container">
4
+ <span v-if="config?.label" class="input-label">{{ config.label }}</span>
5
+ <div class="input-wrapper">
6
+ <a-input
7
+ v-model="innerValue"
8
+ v-bind="$attrs"
9
+ :placeholder="config?.placeholder"
10
+ :size="config?.size"
11
+ :maxLength="config?.maxLength"
12
+ :disabled="config?.disabled"
13
+ :allowClear="config?.allowClear"
14
+ @change="handleInput"
15
+ @pressEnter="handleSearch"
16
+ >
17
+ <template v-if="config?.prefix" #prefix>
18
+ <a-icon :type="config.prefix" @click="handleSearch" class="clickable-icon" />
19
+ </template>
20
+ <template v-if="config?.suffix" #suffix>
21
+ <a-icon :type="config.suffix" @click="handleSearch" class="clickable-icon" />
22
+ </template>
23
+ </a-input>
24
+ </div>
25
+ <span v-if="config?.tail" class="input-tail">{{ config.tail }}</span>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
32
+
33
+ export default {
34
+ name: 'XInput',
35
+ inheritAttrs: false,
36
+ props: {
37
+ value: {
38
+ type: [String, Number],
39
+ default: ''
40
+ },
41
+ queryParamsName: {
42
+ type: String,
43
+ default: ''
44
+ }
45
+ },
46
+ data () {
47
+ return {
48
+ innerValue: this.value || '',
49
+ config: null
50
+ }
51
+ },
52
+ computed: {
53
+ // 动态样式开关:布尔开关 + size 派生类
54
+ wrapperClassObject () {
55
+ const attrs = this.$attrs || {}
56
+ const classes = {}
57
+ const booleanStyleKeys = [
58
+ 'medical-history',
59
+ 'yizhu-input'
60
+ ]
61
+ booleanStyleKeys.forEach(key => {
62
+ const val = attrs[key]
63
+ const truthy = val === true || val === '' || val === 'true'
64
+ if (truthy) classes[`xinput-${key}`] = true
65
+ })
66
+ const size = attrs.size
67
+ if (size && typeof size === 'string') classes[`xinput-size-${size}`] = true
68
+ return classes
69
+ }
70
+ },
71
+ created () {
72
+ this.getData(this.queryParamsName)
73
+ },
74
+ emits: ['search'],
75
+ methods: {
76
+ runLogic,
77
+ async getData (data) {
78
+ getConfigByName(data, 'af-his', res => {
79
+ this.config = res
80
+ if (res.defaultValue !== undefined) {
81
+ this.innerValue = res.defaultValue
82
+ }
83
+ })
84
+ },
85
+ handleInput (e) {
86
+ const value = e.target.value
87
+ this.innerValue = value
88
+ this.$emit('search', value)
89
+ },
90
+ handleSearch () {
91
+ // 统一的搜索事件:将当前输入值发送给父组件
92
+ this.$emit('search', this.innerValue)
93
+ }
94
+ },
95
+ watch: {
96
+ value: {
97
+ handler (newValue) {
98
+ this.innerValue = newValue
99
+ },
100
+ immediate: true
101
+ },
102
+ queryParamsName: {
103
+ handler (newValue) {
104
+ this.getData(newValue)
105
+ },
106
+ deep: true
107
+ }
108
+ }
109
+ }
110
+ </script>
111
+
112
+ <style scoped lang="less">
113
+ .x-input-wrapper {
114
+ position: relative;
115
+ display: inline-block;
116
+ width: 100%;
117
+ }
118
+
119
+ .input-container {
120
+ display: flex;
121
+ align-items: center;
122
+ }
123
+
124
+ .input-label {
125
+ white-space: nowrap;
126
+ color: rgba(0, 0, 0, 0.85);
127
+ padding-right: 8px; /* 标签右侧固定间距 */
128
+ }
129
+
130
+ .input-label {
131
+ white-space: nowrap;
132
+ color: rgba(0, 0, 0, 0.85);
133
+ padding-left: 4px; /* 标签左侧固定间距 */
134
+ }
135
+
136
+ .input-wrapper {
137
+ flex: 1; /* 输入框占据剩余空间 */
138
+ }
139
+
140
+ :deep(.clickable-icon) {
141
+ cursor: pointer;
142
+ }
143
+
144
+ :deep(.clickable-icon:hover) {
145
+ color: #1890ff;
146
+ }
147
+
148
+ .x-input-wrapper{
149
+ &.xinput-medical-history {
150
+ width: 192px;
151
+ height: 32px;
152
+ border-radius: 6px;
153
+ opacity: 1;
154
+ background: #FFFFFF;
155
+ box-sizing: border-box;
156
+ border: 1px solid #D8D8D8;
157
+
158
+ :deep(.ant-input::placeholder) {
159
+ font-family: Source Han Sans;
160
+ font-size: 16px;
161
+ font-weight: normal;
162
+ line-height: normal;
163
+ letter-spacing: 0em;
164
+ font-variation-settings: "opsz" auto;
165
+ font-feature-settings: "kern" on;
166
+ color: #A7A7A7;
167
+ }
168
+ }
169
+ &.xinput-yizhu-input {
170
+ border-radius: 6px;
171
+ opacity: 1;
172
+ background: #FFFFFF;
173
+ box-sizing: border-box;
174
+ border: 1px solid #E5E9F0;
175
+
176
+ margin: 2px 0px;
177
+ :deep(.ant-input) {
178
+ border-radius: 6px;
179
+ opacity: 1;
180
+ background: #FFFFFF;
181
+ box-sizing: border-box;
182
+ border: 1px solid #E5E9F0;
183
+ font-family: Source Han Sans;
184
+ font-size: 14px;
185
+ padding: 5px 76px 3px 8px;
186
+ font-weight: normal;
187
+ line-height: 24px;
188
+ letter-spacing: 0em;
189
+ color: #A7A7A7;
190
+ }
191
+ }
192
+ }
193
+
194
+ </style>