vue2-client 1.22.2 → 1.22.3

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 (170) hide show
  1. package/.claude/settings.local.json +30 -30
  2. package/.env.his +19 -19
  3. package/.eslintrc.js +74 -74
  4. package/.history/.eslintrc_20260521171150.js +74 -0
  5. package/.history/.eslintrc_20260521171213.js +74 -0
  6. package/.history/src/base-client/components/common/HIS/HAddNativeForm/HAddNativeForm_20260601154443.vue +726 -0
  7. package/.history/src/base-client/components/common/HIS/HAddNativeForm/HAddNativeForm_20260601154700.vue +478 -0
  8. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260512175435.vue +706 -0
  9. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260512175450.vue +694 -0
  10. package/.history/src/base-client/components/common/HIS/HButtons/HButtons_20260611152602.vue +755 -0
  11. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513145941.vue +524 -0
  12. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513153133.vue +731 -0
  13. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260513160316.vue +525 -0
  14. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260601144150.vue +1046 -0
  15. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310142713.vue +512 -0
  16. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310145118.vue +511 -0
  17. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260311094834.vue +696 -0
  18. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260320143028.vue +693 -0
  19. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260409101450.vue +677 -0
  20. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260508164645.vue +758 -0
  21. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260508164714.vue +693 -0
  22. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260508171651.vue +716 -0
  23. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260509133717.vue +695 -0
  24. package/.history/src/base-client/components/common/HIS/HTab/HTab_20260509171115.vue +664 -0
  25. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513140637.vue +1455 -0
  26. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513140935.vue +1441 -0
  27. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513150818.vue +1441 -0
  28. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513153119.vue +1442 -0
  29. package/.history/src/base-client/components/common/XAddNativeForm/XAddNativeForm_20260513153126.vue +1486 -0
  30. package/.history/src/base-client/components/common/XForm/XFormItem_20260513140854.vue +1607 -0
  31. package/.history/src/base-client/components/common/XMarkdownViewer/XMarkdownViewer_20260519140403.vue +643 -0
  32. package/.history/src/base-client/components/common/XMarkdownViewer/XMarkdownViewer_20260519140829.vue +628 -0
  33. package/.history/src/base-client/components/common/XMarkdownViewer/demo_20260519142824.vue +104 -0
  34. package/.history/src/base-client/components/common/XMarkdownViewer/demo_20260519143155.vue +102 -0
  35. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171231.vue +1241 -0
  36. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171441.vue +1223 -0
  37. package/.history/src/base-client/components/his/HAi/HAi_20260612174826.vue +472 -0
  38. package/.history/src/base-client/components/his/HAi/HAi_20260612175839.vue +538 -0
  39. package/.history/src/base-client/components/his/HAi/HAi_20260615103331.vue +650 -0
  40. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260424134504.vue +1469 -0
  41. package/.history/src/base-client/components/his/XSidebar/XSidebar_20260610171133.vue +788 -0
  42. package/.history/src/base-client/components/his/XSidebar/XSidebar_20260610171151.vue +780 -0
  43. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260511170841.vue +585 -0
  44. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260511171138.vue +787 -0
  45. package/.history/src/base-client/components/his/XTransfer/XTransfer_20260512141830.vue +739 -0
  46. package/.history/src/components/STable/index_20260409155138.js +806 -0
  47. package/.history/src/components/STable/index_20260409155218.js +814 -0
  48. package/.history/src/expression/core/Expression_20260305164427.js +1371 -0
  49. package/.history/src/expression/core/Expression_20260305170258.js +1358 -0
  50. package/.history/src/expression/core/Program_20260305111830.js +944 -0
  51. package/.history/src/expression/core/Program_20260305112041.js +931 -0
  52. package/.history/src/logic/LogicRunner_20260304154306.js +170 -0
  53. package/.history/src/logic/LogicRunner_20260304155553.js +112 -0
  54. package/.history/src/logic/LogicRunner_20260305105834.js +112 -0
  55. package/.history/src/logic/LogicRunner_20260305112718.js +129 -0
  56. package/.history/src/logic/LogicRunner_20260305182436.js +133 -0
  57. package/.history/src/logic/LogicRunner_20260306151301.js +213 -0
  58. package/.history/src/logic/LogicRunner_20260306152419.js +213 -0
  59. package/.history/src/logic/plugins/common/DateTools_20260305154159.js +61 -0
  60. package/.history/src/logic/plugins/common/DateTools_20260305154217.js +44 -0
  61. package/.history/src/logic/plugins/common/DateTools_20260305161014.js +44 -0
  62. package/.history/src/logic/plugins/common/HttpTools_20260305164352.js +80 -0
  63. package/.history/src/logic/plugins/common/HttpTools_20260305170258.js +75 -0
  64. package/.history/src/logic/plugins/common/HttpTools_20260305171634.js +75 -0
  65. package/.history/src/logic/plugins/common/HttpTools_20260306152419.js +72 -0
  66. package/.history/src/services/api/restTools_20260427142149.js +245 -0
  67. package/.history/src/services/api/restTools_20260427142853.js +230 -0
  68. package/.history/src/services/api/restTools_20260519135558.js +230 -0
  69. package/.history/src/services/api/restTools_20260519140825.js +230 -0
  70. package/.history/src/services/api/restTools_20260519151223.js +230 -0
  71. package/.history/src/utils/indexedDB_20260306150918.js +593 -0
  72. package/.history/src/utils/indexedDB_20260306151301.js +586 -0
  73. package/.idea/af-vue2-client.iml +9 -0
  74. package/.idea/codeStyles/Project.xml +62 -0
  75. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  76. package/.idea/misc.xml +6 -0
  77. package/.idea/modules.xml +1 -1
  78. package/Components.md +60 -60
  79. package/index.js +31 -31
  80. package/jest-transform-stub.js +8 -8
  81. package/jest.setup.js +7 -7
  82. package/package.json +1 -1
  83. package/preview-input-box.html +180 -0
  84. package/src/assets/img/querySlotDemo.svg +15 -15
  85. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  86. package/src/base-client/components/common/CitySelect/index.js +3 -3
  87. package/src/base-client/components/common/CitySelect/index.md +109 -109
  88. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  89. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  90. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +55 -1
  91. package/src/base-client/components/common/HIS/HForm/HForm.vue +1186 -1186
  92. package/src/base-client/components/common/HIS/HTab/HTab.vue +88 -1
  93. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  94. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  95. package/src/base-client/components/common/Tree/index.js +2 -2
  96. package/src/base-client/components/common/Upload/index.js +3 -3
  97. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  98. package/src/base-client/components/common/XAddReport/XAddReport.vue +16 -1
  99. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  100. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  101. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  102. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  103. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  104. package/src/base-client/components/common/XDescriptions/index.md +382 -382
  105. package/src/base-client/components/common/XForm/index.md +178 -178
  106. package/src/base-client/components/common/XInput/XInput.vue +32 -1
  107. package/src/base-client/components/common/XInspectionDetailDrawer/index.vue +1 -1
  108. package/src/base-client/components/common/XMarkdownViewer/demo.vue +102 -102
  109. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  110. package/src/base-client/components/common/XStepView/index.js +3 -3
  111. package/src/base-client/components/common/XStepView/index.md +31 -31
  112. package/src/base-client/components/common/XTable/index.md +255 -255
  113. package/src/base-client/components/his/HAi/HAi.vue +1177 -436
  114. package/src/base-client/components/his/XList/XList.vue +337 -58
  115. package/src/base-client/components/his/XSidebar/XSidebar.vue +36 -12
  116. package/src/base-client/components/his/XTransfer/index.md +327 -327
  117. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  118. package/src/base-client/plugins/Config.js +19 -19
  119. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  120. package/src/components/Charts/Bar.vue +62 -62
  121. package/src/components/Charts/ChartCard.vue +134 -134
  122. package/src/components/Charts/Liquid.vue +67 -67
  123. package/src/components/Charts/MiniArea.vue +39 -39
  124. package/src/components/Charts/MiniBar.vue +39 -39
  125. package/src/components/Charts/MiniProgress.vue +75 -75
  126. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  127. package/src/components/Charts/Radar.vue +68 -68
  128. package/src/components/Charts/RankList.vue +77 -77
  129. package/src/components/Charts/TagCloud.vue +113 -113
  130. package/src/components/Charts/TransferBar.vue +64 -64
  131. package/src/components/Charts/Trend.vue +82 -82
  132. package/src/components/Charts/chart.less +12 -12
  133. package/src/components/Charts/smooth.area.less +13 -13
  134. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  135. package/src/components/NumberInfo/index.js +3 -3
  136. package/src/components/NumberInfo/index.less +54 -54
  137. package/src/components/NumberInfo/index.md +43 -43
  138. package/src/components/STable/index.js +953 -953
  139. package/src/components/card/ChartCard.vue +79 -79
  140. package/src/components/chart/Bar.vue +60 -60
  141. package/src/components/chart/MiniArea.vue +67 -67
  142. package/src/components/chart/MiniBar.vue +59 -59
  143. package/src/components/chart/MiniProgress.vue +57 -57
  144. package/src/components/chart/Radar.vue +80 -80
  145. package/src/components/chart/RankingList.vue +60 -60
  146. package/src/components/chart/Trend.vue +79 -79
  147. package/src/components/chart/index.less +9 -9
  148. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  149. package/src/components/input/IInput.vue +66 -66
  150. package/src/components/menu/SideMenu.vue +75 -75
  151. package/src/components/menu/menu.js +273 -273
  152. package/src/components/tool/AStepItem.vue +60 -60
  153. package/src/layouts/CommonLayout.vue +56 -56
  154. package/src/lib.js +1 -1
  155. package/src/mock/extend/index.js +84 -84
  156. package/src/mock/goods/index.js +108 -108
  157. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  158. package/src/pages/system/dictionary/index.vue +44 -44
  159. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  160. package/src/pages/system/monitor/operLog/index.vue +37 -37
  161. package/src/services/api/cas.js +79 -79
  162. package/src/store/modules/setting.js +119 -119
  163. package/src/utils/errorCode.js +6 -6
  164. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  165. package/.idea/MarsCodeWorkspaceAppSettings.xml +0 -7
  166. package/.idea/google-java-format.xml +0 -6
  167. package/.idea/inspectionProfiles/Project_Default.xml +0 -24
  168. package/.idea/jsLinters/eslint.xml +0 -6
  169. package/.idea/vue2-client.iml +0 -12
  170. package/.vscode/settings.json +0 -28
@@ -0,0 +1,755 @@
1
+ <script setup >
2
+ import XButtons from '@vue2-client/base-client/components/common/XButtons/XButtons.vue'
3
+ import { ref, computed, useAttrs, nextTick, onMounted } from 'vue'
4
+
5
+ const props = defineProps({
6
+ // HButtons特有的属性
7
+ buttonStyle: {
8
+ type: String,
9
+ default: 'button24'
10
+ }
11
+ })
12
+
13
+ const emit = defineEmits(['update:activeIndex', 'activeChange', 'configEnd'])
14
+
15
+ // 内部 XButtons 实例引用
16
+ const xButtonsRef = ref()
17
+
18
+ // useStyle10模式下激活按钮的索引(从0开始)
19
+ const activeIndex = ref(0)
20
+
21
+ // 兼容多种样式配置
22
+ const attrs = useAttrs()
23
+
24
+ // 判断是否使用 useStyle10 模式
25
+ const isUseStyle10 = computed(() => {
26
+ return props.buttonStyle === 'useStyle10' || attrs.useStyle10 === true || attrs.useStyle10 === '' || attrs.useStyle10 === 'true'
27
+ })
28
+
29
+ const wrapperClassObject = computed(() => {
30
+ const a = attrs
31
+ const classes = {}
32
+
33
+ // 通用布尔样式开关(以存在/空字符串/'true' 为真)
34
+ const booleanStyleKeys = [
35
+ 'max-width200',
36
+ 'width173',
37
+ 'button_refresh',
38
+ 'border', 'no-style',
39
+ 'fill-container',
40
+ 'no-boder-style',
41
+ 'form-inline',
42
+ 'one-button-style', // 一个按钮样式,占满整个宽度
43
+ 'useStyle10', // 左侧蓝色圆点指示器样式
44
+ 'custom-icon-style' // 自定义图标边框样式
45
+ ]
46
+ for (const key of booleanStyleKeys) {
47
+ const val = a[key]
48
+ const truthy = val === true || val === '' || val === 'true'
49
+ if (truthy) classes[`h-buttons-${key}`] = true
50
+ }
51
+ return classes
52
+ })
53
+
54
+ // 获取内部按钮元素列表
55
+ const getButtonElements = () => {
56
+ const xEl = xButtonsRef.value?.$el
57
+ if (!xEl) return []
58
+ return Array.from(xEl.querySelectorAll('.ant-btn'))
59
+ }
60
+
61
+ // 设置按钮激活状态
62
+ const setActiveState = (btn, isActive) => {
63
+ if (!btn) return
64
+ if (isActive) {
65
+ btn.classList.add('h-btn-active')
66
+ // 使用内联样式确保颜色生效
67
+ btn.style.color = '#0057FE'
68
+ } else {
69
+ btn.classList.remove('h-btn-active')
70
+ // 清除内联样式
71
+ btn.style.color = ''
72
+ }
73
+ }
74
+
75
+ // 清除所有按钮的激活样式
76
+ const clearAllActiveStyles = () => {
77
+ const buttons = getButtonElements()
78
+ buttons.forEach(btn => {
79
+ setActiveState(btn, false)
80
+ })
81
+ }
82
+
83
+ // 设置指定索引按钮为激活状态
84
+ const setActiveButton = (index) => {
85
+ const buttons = getButtonElements()
86
+ clearAllActiveStyles()
87
+
88
+ if (buttons[index]) {
89
+ setActiveState(buttons[index], true)
90
+ }
91
+ }
92
+
93
+ // 事件委托:处理按钮点击
94
+ const handleButtonClick = (event) => {
95
+ if (!isUseStyle10.value) return
96
+
97
+ // 查找被点击的按钮元素
98
+ const target = event.target.closest('.ant-btn')
99
+ if (!target) return
100
+
101
+ const buttons = getButtonElements()
102
+ const index = buttons.indexOf(target)
103
+
104
+ if (index === -1) return
105
+
106
+
107
+ // 更新激活索引
108
+ activeIndex.value = index
109
+ emit('update:activeIndex', index)
110
+ emit('activeChange', index)
111
+
112
+ // 更新按钮样式
113
+ clearAllActiveStyles()
114
+ setActiveState(buttons[index], true)
115
+ }
116
+
117
+ // 初始化 useStyle10 样式(带重试机制)
118
+ const initUseStyle10 = (retryCount = 0) => {
119
+
120
+ if (!isUseStyle10.value) {
121
+ return
122
+ }
123
+
124
+ const buttons = getButtonElements()
125
+
126
+
127
+ // 如果没有找到按钮,重试最多10次
128
+ if (buttons.length === 0 && retryCount < 10) {
129
+ setTimeout(() => {
130
+ initUseStyle10(retryCount + 1)
131
+ }, 100)
132
+ return
133
+ }
134
+
135
+ if (buttons.length === 0) {
136
+
137
+ return
138
+ }
139
+
140
+ // 设置第一个按钮为激活状态
141
+ clearAllActiveStyles()
142
+ setActiveState(buttons[0], true)
143
+ }
144
+
145
+ // 监听 XButtons 配置结束,初始化激活状态
146
+ const handleConfigEnd = async () => {
147
+ await nextTick()
148
+ initUseStyle10()
149
+ emit('configEnd')
150
+ }
151
+
152
+ // 在挂载时也尝试初始化(作为备用方案)
153
+ onMounted(() => {
154
+ setTimeout(() => {
155
+ initUseStyle10()
156
+ }, 300)
157
+ })
158
+
159
+ // 暴露方法:获取内部 XButtons 实例
160
+ defineExpose({
161
+ getXButtonsInstance: function () { return xButtonsRef.value },
162
+ /** 等待配置结束的异步方法,委托给内部 XButtons */
163
+ waitConfigEnd: () => xButtonsRef.value?.waitConfigEnd?.() ?? Promise.resolve(),
164
+ /** 获取当前激活按钮索引 */
165
+ getActiveIndex: () => activeIndex.value,
166
+ /** 设置激活按钮索引 */
167
+ setActiveIndex: (index) => {
168
+ activeIndex.value = index
169
+ setActiveButton(index)
170
+ },
171
+ /** 获取当前激活按钮元素 */
172
+ getActiveButton: () => {
173
+ const buttons = getButtonElements()
174
+ return buttons[activeIndex.value]
175
+ }
176
+ })
177
+ </script>
178
+
179
+ <template>
180
+ <div
181
+ class="h-buttons-wrapper"
182
+ :class="[
183
+ `h-buttons-${buttonStyle}`,
184
+ wrapperClassObject
185
+ ]"
186
+ @click="handleButtonClick"
187
+ >
188
+ <x-buttons
189
+ ref="xButtonsRef"
190
+ v-bind="$attrs"
191
+ v-on="$listeners"
192
+ @configEnd="handleConfigEnd"
193
+ >
194
+ <template v-for="(_, name) in $slots" #[name]="slotData">
195
+ <slot :name="name" v-bind="slotData" />
196
+ </template>
197
+ </x-buttons>
198
+ </div>
199
+ </template>
200
+
201
+ <style scoped lang="less">
202
+ .h-buttons-wrapper {
203
+ // 基础样式
204
+ :deep(.ant-btn-group) {
205
+ .ant-btn {
206
+ border-radius: 6px;
207
+ background-color: #FFFFFF;
208
+ border: 1px solid #9499A0;
209
+ color: #313131;
210
+ font-weight: normal;
211
+ letter-spacing: 0em;
212
+ width: 110px;
213
+ font-size: 16px;
214
+ font-family: "Source Han Sans";
215
+ line-height: normal;
216
+ margin-right: 25px;
217
+ height: 32px;
218
+ }
219
+ }
220
+ // button24样式
221
+ &.h-buttons-button24 {
222
+ :deep(.ant-btn-group) {
223
+ .ant-btn {
224
+ border: 1px solid #CDCDCD;
225
+ color: #5D5C5C;
226
+ // top: -100px;
227
+ width: fit-content;
228
+ min-width: 110px;
229
+ }
230
+ }
231
+ }
232
+ // button23样式
233
+ &.h-buttons-button23 {
234
+ :deep(.ant-btn-group) {
235
+ .ant-btn {
236
+ border: none;
237
+ padding: 0 !important;
238
+ color: #FFFFFF;
239
+ border-radius: 50%;
240
+ background-color: #1890FF;
241
+ margin-left: 10px;
242
+ top: -88px;
243
+ width: 30px;
244
+ height: 30px;
245
+ }
246
+ }
247
+ }
248
+ // +号样式(共享基础样式)
249
+ &.h-buttons-table-height-button23,
250
+ &.h-buttons-table-height-button23-no-transform {
251
+ :deep(.ant-btn-group) {
252
+ display: inline-flex;
253
+ align-items: center;
254
+ height: 100%;
255
+
256
+ .ant-btn {
257
+ display: inline-flex;
258
+ align-items: center;
259
+ justify-content: center;
260
+ border: none;
261
+ padding: 0 !important;
262
+ color: #FFFFFF;
263
+ border-radius: 50%;
264
+ background-color: #1890FF;
265
+ margin-left: 10px;
266
+ width: 30px;
267
+ height: 30px;
268
+ }
269
+ }
270
+ }
271
+ // 仅在有分页的场景上移
272
+ &.h-buttons-table-height-button23 {
273
+ :deep(.ant-btn-group) {
274
+ .ant-btn { transform: translateY(-100%); }
275
+ }
276
+ }
277
+ // 居中+悬停高亮的新样式
278
+ &.h-buttons-plus-center {
279
+ :deep(.ant-btn-group) {
280
+ display: flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ gap: 16px;
284
+
285
+ .ant-btn {
286
+ display: inline-flex;
287
+ align-items: center;
288
+ justify-content: center;
289
+ border: 1px solid #CDCDCD;
290
+ color: #5D5C5C;
291
+ min-width: 110px;
292
+ transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
293
+
294
+ &:hover {
295
+ background-color: #0057FE;
296
+ border-color: #0057FE;
297
+ color: #FFFFFF;
298
+ }
299
+ /* 支持通过 data-type 改变悬停颜色 */
300
+ &[data-type='success']:hover {
301
+ background-color: #34C76E;
302
+ border-color: #34C76E;
303
+ color: #FFFFFF;
304
+ }
305
+ }
306
+ }
307
+ }
308
+ // 按钮布局样式公共部分
309
+ &.h-buttons-button-left,
310
+ &.h-buttons-button-center,
311
+ &.h-buttons-button-right,
312
+ &.h-buttons-button-space-between {
313
+ :deep(.ant-btn-group) {
314
+ width: 100%;
315
+ display: flex;
316
+ flex-wrap: nowrap;
317
+ .ant-btn {
318
+ border: 1px solid #CDCDCD;
319
+ color: #5D5C5C;
320
+ white-space: nowrap;
321
+ overflow: hidden;
322
+ margin-right: 0px;
323
+ text-overflow: ellipsis;
324
+ }
325
+ }
326
+ }
327
+ &.h-buttons-max-width200 {
328
+ :deep(.ant-btn) {
329
+ max-width: 200px !important;
330
+ }
331
+ }
332
+ // button-left样式 - 按钮从左到右排列
333
+ &.h-buttons-button-left {
334
+ :deep(.ant-btn-group) {
335
+ justify-content: flex-start;
336
+ gap: 12px;
337
+ }
338
+ }
339
+ // button-center样式 - 按钮居中排列
340
+ &.h-buttons-button-center {
341
+ :deep(.ant-btn-group) {
342
+ justify-content: center;
343
+ gap: 12px;
344
+ }
345
+ }
346
+ // button-right样式 - 按钮从右到左排列
347
+ &.h-buttons-button-right {
348
+ :deep(.ant-btn-group) {
349
+ justify-content: flex-end;
350
+ gap: 12px;
351
+ }
352
+ }
353
+ // button-space-between样式 - 按钮两端对齐(两个按钮时分布在两端)
354
+ &.h-buttons-button-space-between {
355
+ :deep(.ant-btn-group) {
356
+ justify-content: space-between;
357
+ }
358
+ }
359
+
360
+ // button-icon-tiles样式 - 左侧彩色图标块 + 右侧文字
361
+ &.h-buttons-button-icon-tiles {
362
+ :deep(.ant-btn-group) {
363
+ width: 100%;
364
+ display: flex;
365
+ flex-wrap: wrap; // 允许自动换行
366
+ justify-content: flex-start; // 左对齐
367
+ gap: 0; // 取消统一间距
368
+
369
+ .ant-btn {
370
+ position: relative;
371
+ display: inline-flex;
372
+ align-items: center;
373
+ gap: 10px; // 控制图标与文字间距
374
+ border: 1px solid #E6E8EB;
375
+ font-size: 14px;
376
+ height: 44px;
377
+ padding: 0 10px 0 10px;
378
+ border-radius: 8px;
379
+ min-width: 116px;
380
+ box-shadow: 0 2px 0 rgba(0,0,0,0.02);
381
+ margin-right: 12px; // 用margin控制横向间距,末尾一排自然换行
382
+ }
383
+
384
+ .ant-btn .anticon {
385
+ width: 26px;
386
+ height: 26px;
387
+ display: inline-flex;
388
+ align-items: center;
389
+ justify-content: center;
390
+ border-radius: 6px;
391
+ color: #fff;
392
+ font-size: 14px;
393
+ flex: 0 0 26px; // 固定正方形,防止随文本挤压变形
394
+ box-sizing: border-box;
395
+ }
396
+
397
+ /* 默认蓝色,支持通过 data-type 改变色块(success/warning/error/default)*/
398
+ .ant-btn .anticon { background: #3FA7FF; }
399
+ .ant-btn[data-type='success'] .anticon { background: #34C76E; }
400
+ .ant-btn[data-type='warning'] .anticon { background: #FFA940; }
401
+ .ant-btn[data-type='error'] .anticon { background: #FF7875; }
402
+ .ant-btn[disabled] .anticon { background: #BFBFBF; }
403
+
404
+ /* 图标与文字间距在有图标时更自然 */
405
+ .ant-btn > .anticon + span { margin-left: 10px; }
406
+ }
407
+ }
408
+ // 水印图标与按钮容器布局调整
409
+ &.h-buttons-button-watermark-icon {
410
+ :deep(.watermark-icon) { transform: translate(-50%, -54%) !important; }
411
+ :deep(.x-button) { display: flex !important; }
412
+ :deep(.ant-btn-group) {
413
+ margin: 0 auto;
414
+ display: block;
415
+ }
416
+ }
417
+ &.h-buttons-0padding-button {
418
+ padding: 0px 4px;
419
+ }
420
+ // button25样式 用于会诊申请侧边栏按钮样式
421
+ &.h-buttons-button25 {
422
+ :deep(.x-buttons) {
423
+ .ant-btn-group {
424
+ width: 173px;
425
+ justify-content: space-between;
426
+
427
+ .ant-btn {
428
+ width: 173px;
429
+ }
430
+ }
431
+ }
432
+ }
433
+ &.h-buttons-button_refresh {
434
+ margin-top: 10px;
435
+ }
436
+ // 居中样式 用于门诊收费左侧按钮样式(三个按钮居中样式)
437
+ &.h-buttons-out-button {
438
+ :deep(.x-buttons) {
439
+ margin-top: 2px !important;
440
+ margin-bottom: 10px !important;
441
+ display: flex;
442
+ justify-content: center;
443
+ .ant-btn-group {
444
+ display: flex;
445
+ flex-wrap: nowrap;
446
+ gap: 12px;
447
+ .ant-btn {
448
+ width: 110px;
449
+ height: 32px;
450
+ border-radius: 6px;
451
+ opacity: 1;
452
+ background: #FFFFFF;
453
+ box-sizing: border-box;
454
+ border: 1px solid #9499A0;
455
+ margin-right: 0px;
456
+ /* 允许正常文本渲染,避免省略号导致的“变成点了” */
457
+ font-family: "Source Han Sans";
458
+ font-size: 16px;
459
+ font-weight: normal;
460
+ line-height: normal;
461
+ color: #313131;
462
+ }
463
+ /* 还原子元素默认高度,避免文字被压缩成点 */
464
+ }
465
+ }
466
+ }
467
+ // button15样式 - 垂直排列的深色按钮组
468
+ &.h-buttons-button15 {
469
+ :deep(.x-buttons) {
470
+ margin-top: -22px;
471
+ .ant-btn-group {
472
+ flex-direction: column; /* 按钮垂直排列 */
473
+ display: flex; /* 启用flex布局 */
474
+ gap: 6px; /* 按钮间距 */
475
+ .ant-btn {
476
+ border: none; /* 移除边框 */
477
+ color: #FFFFFF; /* 字体颜色 */
478
+ background-color: #0057FE; /* 背景色 */
479
+ box-sizing: border-box; /* 盒模型 */
480
+ left: 12px; /* 左偏移 */
481
+ width: 280px; /* 宽度 */
482
+ }
483
+ }
484
+ }
485
+ }
486
+ // button2样式
487
+ &.h-buttons-button2 {
488
+ :deep(.x-buttons) {
489
+ margin: -20px 6px -20px 6px;
490
+ .ant-btn-group {
491
+ width: 100%;
492
+ justify-content: space-between;
493
+ display: flex; /* 确保flex布局 */
494
+ flex-wrap: nowrap; /* 防止换行 */
495
+ .ant-btn {
496
+ border-radius: 6px; /* 边框圆角 */
497
+ border: none; /* 移除边框 */
498
+ flex: 0 0 46%; /* flex-grow: 0, flex-shrink: 0, flex-basis: 46% */
499
+ min-width: 0; /* 覆盖可能的默认最小宽度 */
500
+ font-size: 16px; /* 字体大小 */
501
+ height: 32px; /* 高度 */
502
+ color: #FFFFFF; /* 字体颜色 */
503
+ background-color: #1890FF; /* 背景颜色 */
504
+ }
505
+ }
506
+ }
507
+ }
508
+ // 与表单项内联使用时的垂直居中对齐样式
509
+ &.h-buttons-form-inline {
510
+ :deep(.ant-btn-group){
511
+ height: 45px;
512
+ display: flex;
513
+ align-items: center;
514
+ }
515
+ }
516
+ &.h-buttons-width173 {
517
+ :deep(.ant-btn) {
518
+ width: 173px !important;
519
+ }
520
+ }
521
+ // 按钮无边框+无图标+无阴影
522
+ &.h-button-no-style{
523
+ :deep(.ant-btn) {
524
+ border: 0px;
525
+ .anticon{
526
+ display: none;
527
+ }
528
+ }
529
+ :deep(.ant-btn-primary){
530
+ text-shadow: none;
531
+ box-shadow: none;
532
+ }
533
+ }
534
+ // 按钮组边距
535
+ &.h-button-border{
536
+ border: 1px solid #E5E9F0;
537
+ border-radius: 6px;
538
+ }
539
+ // 按钮撑开整个容器
540
+ &.h-buttons-fill-container{
541
+ :deep(.x-buttons) {
542
+ width: 100%;
543
+ .ant-btn-group{
544
+ width: 100%;
545
+ .ant-btn{
546
+ width: 100%;
547
+ margin-right: 0px;
548
+ }
549
+ }
550
+ }
551
+ }
552
+ &.h-buttons-one-button-style {
553
+ margin: 0 !important;
554
+ padding: 0 !important;
555
+ :deep(.x-buttons) {
556
+ margin: 0 !important;
557
+ padding: 0 !important;
558
+ .ant-btn-group {
559
+ width: 100%;
560
+ height: 32px;
561
+ justify-content: space-between;
562
+ display: flex;
563
+ flex-wrap: nowrap;
564
+ .ant-btn {
565
+ width: 100%;
566
+ margin-right: 0px !important;
567
+ min-width: 100% !important;
568
+ border-radius: 6px; /* 边框圆角 */
569
+ font-size: 18px; /* 字体大小 */
570
+ line-height: 26px;
571
+ font-weight: bold;
572
+ letter-spacing: 14px;
573
+ height: 32px; /* 高度 */
574
+ color: #FFFFFF; /* 字体颜色 */
575
+ background: #0057FE;/* 背景颜色 */
576
+ }
577
+ }
578
+ }
579
+ }
580
+ // no-boder-style样式 - 无边框样式
581
+ &.h-buttons-no-boder-style {
582
+ :deep(.ant-btn-group) {
583
+ margin-left: -20px;
584
+ .ant-btn {
585
+ border: none !important;
586
+ background: transparent !important;
587
+ height: 23px;
588
+ opacity: 1;
589
+ font-family: "Source Han Sans";
590
+ font-size: 16px;
591
+ font-weight: normal;
592
+ line-height: normal;
593
+ letter-spacing: 0em;
594
+ color: #313131;
595
+ padding: 0;
596
+ box-shadow: none;
597
+ margin-right: 0;
598
+ margin-left: 0;
599
+
600
+ // 图标样式
601
+ .anticon {
602
+ height: 16px;
603
+ width: 16px;
604
+ opacity: 1;
605
+ background: transparent;
606
+ display: inline-flex;
607
+ align-items: center;
608
+ justify-content: center;
609
+ color: #94979E;
610
+ margin-right: 4px;
611
+ }
612
+
613
+ &:hover {
614
+ background: transparent !important;
615
+ color: #313131;
616
+ }
617
+
618
+ &:focus {
619
+ background: transparent !important;
620
+ color: #313131;
621
+ }
622
+ }
623
+ }
624
+ }
625
+ // useStyle10样式 - 左侧蓝色圆点指示器样式,与HTab useStyle10效果一致
626
+ &.h-buttons-useStyle10 {
627
+ :deep(.ant-btn-group) {
628
+ display: flex;
629
+ flex-wrap: wrap;
630
+ gap: 8px;
631
+ margin-left: 0 !important;
632
+ padding: 0 !important;
633
+
634
+ .ant-btn {
635
+ position: relative;
636
+ background-color: transparent !important;
637
+ border: none !important;
638
+ border-radius: 0 !important;
639
+ color: #313131;
640
+ font-family: "Source Han Sans";
641
+ font-size: 16px;
642
+ font-weight: bold;
643
+ line-height: normal;
644
+ letter-spacing: 0em;
645
+ font-feature-settings: "kern" on;
646
+ font-variation-settings: "opsz" auto;
647
+ width: auto;
648
+ height: 40px;
649
+ padding: 0 12px 6px 18px;
650
+ text-align: center;
651
+ margin-right: 0 !important;
652
+ box-shadow: none !important;
653
+ display: inline-flex;
654
+ align-items: center;
655
+ vertical-align: top;
656
+ outline: none !important;
657
+ background: transparent !important;
658
+ background-image: none !important;
659
+ border-color: transparent !important;
660
+ border-width: 0 !important;
661
+
662
+ &::before {
663
+ content: "" !important;
664
+ position: absolute !important;
665
+ left: 5px !important;
666
+ top: 50% !important;
667
+ transform: translateY(-50%) !important;
668
+ width: 8px !important;
669
+ height: 8px !important;
670
+ background-color: #1890ff !important;
671
+ background-image: none !important;
672
+ border-radius: 50% !important;
673
+ display: block !important;
674
+ z-index: 10 !important;
675
+ pointer-events: none !important;
676
+ opacity: 1 !important;
677
+ mix-blend-mode: normal !important;
678
+ box-shadow: none !important;
679
+ filter: none !important;
680
+ -webkit-filter: none !important;
681
+ }
682
+
683
+ .anticon {
684
+ display: none !important;
685
+ }
686
+ }
687
+
688
+ // 激活状态:通过 h-btn-active 类控制
689
+ .ant-btn.h-btn-active {
690
+ color: #0057FE !important;
691
+ }
692
+ }
693
+ }
694
+ // 自定义图标边框样式
695
+ &.h-buttons-custom-icon-style {
696
+ :deep(.x-buttons) {
697
+ .ant-btn-group {
698
+ width: 100%;
699
+ justify-content: space-between;
700
+ display: flex;
701
+ flex-wrap: nowrap;
702
+
703
+ .ant-btn {
704
+ width: 100%;
705
+ margin-right: 0px !important;
706
+ min-width: 100% !important;
707
+ height: 32px;
708
+ border-radius: 6px;
709
+ opacity: 1;
710
+ background: #FFFFFF;
711
+ box-sizing: border-box;
712
+ border: 1px solid #9499A0;
713
+ font-family: "Source Han Sans";
714
+ font-size: 16px;
715
+ font-weight: normal;
716
+ line-height: normal;
717
+ letter-spacing: 0em;
718
+ color: #313131;
719
+ display: inline-flex;
720
+ align-items: center;
721
+ justify-content: center;
722
+ gap: 8px;
723
+
724
+ .anticon {
725
+ width: 18px;
726
+ height: 18px;
727
+ opacity: 1;
728
+ background: #0057FE;
729
+ border-radius: 50%;
730
+ display: inline-flex;
731
+ align-items: center;
732
+ justify-content: center;
733
+ position: relative;
734
+ flex-shrink: 0;
735
+
736
+ > svg,
737
+ > i {
738
+ display: none !important;
739
+ }
740
+
741
+ &::before {
742
+ content: "+";
743
+ position: absolute;
744
+ color: #FFFFFF;
745
+ font-size: 18px;
746
+ font-weight: bold;
747
+ line-height: 1;
748
+ }
749
+ }
750
+ }
751
+ }
752
+ }
753
+ }
754
+ }
755
+ </style>