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,1046 @@
1
+ <script setup>
2
+ import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
3
+ import { ref, computed, useAttrs } from 'vue'
4
+
5
+ const xAddNativeFormRef = ref()
6
+
7
+ const attrs = useAttrs()
8
+ const props = defineProps({
9
+ // 是否启用 horizontal 模式的自定义配置
10
+ enableHorizontalCustom: {
11
+ type: Boolean,
12
+ default: false
13
+ }
14
+ })
15
+ // 从 radio-style_1 属性值中获取 padding
16
+ const radioPadding = computed(() => {
17
+ const val = attrs['radio-style_1']
18
+ if (val !== undefined && val !== '' && val !== null) {
19
+ const num = Number(val)
20
+ return isNaN(num) ? 9 : num
21
+ }
22
+ return 9
23
+ })
24
+
25
+ // 包装器样式对象
26
+ const wrapperStyleObject = computed(() => {
27
+ return {
28
+ '--radio-padding': `${radioPadding.value}px`
29
+ }
30
+ })
31
+
32
+ // 启动时间选择框弹出到body
33
+ const enablePopupToBody = computed(() => {
34
+ const a = attrs
35
+ return a.enablePopupToBody === 'true' || a.enablePopupToBody === true
36
+ })
37
+ const wrapperClassObject = computed(() => {
38
+ const a = attrs
39
+ const classes = {}
40
+
41
+ // 1) 多个布尔型样式开关(存在且为真则生效)
42
+ const booleanStyleKeys = [
43
+ 'query-conditions',
44
+ 'padding-50',
45
+ 'label-text-horizontal',
46
+ 'label-text-justify',
47
+ 'simple-inline',
48
+ 'simple-inline-show-label',
49
+ 'label-justify',
50
+ 'charge-form',
51
+ 'mini-form',
52
+ 'content-right',
53
+ 'label-font-style',
54
+ 'small-input-style'
55
+ ]
56
+ // 只要属性存在就生效的样式开关
57
+ const existStyleKeys = ['radio-style_1']
58
+ for (const key of booleanStyleKeys) {
59
+ const val = a[key]
60
+ const truthy = val === true || val === '' || val === 'true'
61
+ if (truthy) classes[`h-form-${key}`] = true
62
+ }
63
+ // 检查存在即生效的样式开关
64
+ for (const key of existStyleKeys) {
65
+ if (key in a) classes[`h-form-${key}`] = true
66
+ }
67
+
68
+ return classes
69
+ })
70
+
71
+ defineExpose({
72
+ getXAddNativeFormInstance: () => xAddNativeFormRef.value,
73
+ init: (params) => xAddNativeFormRef.value && xAddNativeFormRef.value.init && xAddNativeFormRef.value.init(params),
74
+ asyncSubmit: () => xAddNativeFormRef.value && xAddNativeFormRef.value.asyncSubmit && xAddNativeFormRef.value.asyncSubmit(),
75
+ validateForm: () => xAddNativeFormRef.value && xAddNativeFormRef.value.validateForm && xAddNativeFormRef.value.validateForm(),
76
+ /** 等待配置结束的异步方法,委托给内部 XAddNativeForm */
77
+ waitConfigEnd: () => xAddNativeFormRef.value?.waitConfigEnd?.() ?? Promise.resolve()
78
+ })
79
+
80
+ </script>
81
+
82
+ <template>
83
+ <div
84
+ class="h-form-wrapper"
85
+ :class="[
86
+ wrapperClassObject
87
+ ]"
88
+ :style="wrapperStyleObject"
89
+ >
90
+
91
+ <x-add-native-form
92
+ ref="xAddNativeFormRef"
93
+ v-bind="$attrs"
94
+ :enable-popup-to-body="enablePopupToBody"
95
+ :enable-horizontal-custom="props.enableHorizontalCustom"
96
+ @configEnd="$emit('configEnd')"
97
+ v-on="$listeners"
98
+ >
99
+ <template v-for="(_, name) in $slots" #[name]="slotData">
100
+ <slot :name="name" v-bind="slotData" />
101
+ </template>
102
+ </x-add-native-form>
103
+ </div>
104
+ </template>
105
+
106
+ <style scoped lang="less">
107
+ // 单选框 padding 变量
108
+ @radio-padding: var(--radio-padding, 9px);
109
+
110
+ .h-form-wrapper {
111
+ // 基础样式
112
+ :deep(.ant-form-item) {
113
+ margin-bottom: 4px;
114
+ }
115
+
116
+ &.h-form-mini-form {
117
+ :deep(.ant-form-inline) {
118
+ .ant-row-flex {
119
+ .ant-col {
120
+ flex: auto !important;
121
+ max-width: 250px !important;
122
+ }
123
+ }
124
+ }
125
+
126
+ :deep(.ant-form-item) {
127
+ margin-right: 0px !important;
128
+ }
129
+ }
130
+
131
+ &.h-form-content-right {
132
+ :deep(.ant-form-inline) {
133
+ .ant-row-flex {
134
+ justify-content: right;
135
+ }
136
+ }
137
+ }
138
+
139
+ // query-conditions 样式
140
+ &.h-form-query-conditions {
141
+ :deep(.ant-card-body) {
142
+ padding: 0px;
143
+ }
144
+
145
+ :deep(.ant-row-flex) {
146
+ .x-form-col-wrapper {
147
+ .ant-form-item {
148
+ display: flex !important;
149
+ width: 100%;
150
+ height: 100%;
151
+ margin-bottom: 0px;
152
+ justify-content: space-between;
153
+
154
+ .ant-form-item-label {
155
+ display: flex;
156
+ align-items: center;
157
+ height: 100%;
158
+
159
+ label {
160
+ height: auto;
161
+ font-family: Source Han Sans;
162
+ font-size: 16px;
163
+ font-weight: normal;
164
+ line-height: normal;
165
+ color: #313131;
166
+ display: block !important; // 保持 block 以支持两端对齐
167
+ width: 100%;
168
+ white-space: nowrap;
169
+ margin: 0;
170
+ text-align: justify;
171
+ text-align-last: justify;
172
+ text-justify: inter-ideograph;
173
+ box-sizing: border-box;
174
+ padding-right: 0 !important; // 移除冒号预留空间
175
+
176
+ // 使用 line-height 实现垂直居中
177
+ line-height: 40px; // 设置与容器高度相同的行高
178
+ }
179
+
180
+ & > label::after {
181
+ display: none !important;
182
+ }
183
+ }
184
+ }
185
+ }
186
+
187
+ .ant-col-24 {
188
+ padding: 0px 4px !important;
189
+ }
190
+ }
191
+ }
192
+
193
+ // 单选框样式设计图中切换模式的样式
194
+ &.h-form-radio-style_1 {
195
+ :deep(.ant-radio-button-wrapper) {
196
+ padding: 0 @radio-padding;
197
+ }
198
+
199
+ :deep(.ant-radio-button-wrapper-checked) {
200
+ background-color: #0057FE;
201
+ color: white;
202
+ }
203
+ }
204
+
205
+ &.h-form-simple-inline {
206
+ :deep(.ant-form-item-label) {
207
+ display: none !important;
208
+ }
209
+
210
+ :deep(.ant-form-item-control-wrapper) {
211
+ width: 100%;
212
+ }
213
+ }
214
+
215
+ &.h-form-padding-50 {
216
+ // ant-row-flex 样式
217
+ :deep(.ant-row-flex) {
218
+ padding-left: 50px;
219
+ padding-right: 50px
220
+ }
221
+ }
222
+
223
+ // 单选框样式设计图中切换模式的样式
224
+ &.h-form-radio-style_1 {
225
+ :deep(.ant-radio-button-wrapper) {
226
+ padding: 0 @radio-padding;
227
+ }
228
+
229
+ :deep(.ant-radio-button-wrapper-checked) {
230
+ background-color: #0057FE;
231
+ color: white;
232
+ }
233
+ }
234
+
235
+ // charge-form 样式
236
+ &.h-form-charge-form {
237
+ margin-top: 2px !important;
238
+ // 定义变量
239
+ @font-common: {
240
+ font-family: 'Source Han Sans', sans-serif;
241
+ font-size: 16px;
242
+ font-weight: normal;
243
+ letter-spacing: 0em;
244
+ font-feature-settings: "kern" on;
245
+ };
246
+
247
+ @color-primary: #313131;
248
+ @color-placeholder: #999999;
249
+
250
+ // 定义混合宏
251
+ .input-base() {
252
+ width: 100%;
253
+ height: 30px;
254
+ line-height: 30px;
255
+ vertical-align: top;
256
+ margin: 0;
257
+ text-align: left;
258
+ color: @color-primary;
259
+ opacity: 1;
260
+ @font-common();
261
+ }
262
+
263
+ .placeholder-base() {
264
+ color: @color-placeholder;
265
+ opacity: 1;
266
+ @font-common();
267
+ }
268
+
269
+ .option-group-base() {
270
+ height: 30px;
271
+ line-height: 30px;
272
+ display: flex;
273
+ align-items: center;
274
+
275
+ .ant-radio-wrapper,
276
+ .ant-checkbox-wrapper {
277
+ height: 30px;
278
+ line-height: 30px;
279
+ margin-right: 16px;
280
+ }
281
+ }
282
+
283
+ :deep(.ant-form-item) {
284
+ margin-bottom: 16px;
285
+ margin-top: 0;
286
+ padding: 0;
287
+ display: flex;
288
+ align-items: center;
289
+
290
+ .ant-form-item-label {
291
+ text-align: left;
292
+ margin: 0 11px 0 0 !important;
293
+ width: 64px;
294
+ min-width: 64px;
295
+ max-width: 64px;
296
+ flex-shrink: 0;
297
+
298
+ label {
299
+ height: 23px;
300
+ opacity: 1;
301
+ line-height: 23px;
302
+ color: @color-primary;
303
+ margin: 0;
304
+ padding: 0;
305
+ white-space: nowrap;
306
+ display: block;
307
+ @font-common();
308
+
309
+ // 移除冒号
310
+ &::after {
311
+ content: '';
312
+ }
313
+ }
314
+ }
315
+
316
+ .ant-form-item-control-wrapper {
317
+ margin: 0;
318
+ padding: 0;
319
+ flex: 1;
320
+ min-width: 0;
321
+ display: flex;
322
+ align-items: center;
323
+
324
+ .ant-form-item-control {
325
+ margin: 0;
326
+ padding: 0;
327
+ width: 100%;
328
+ text-align: left;
329
+ line-height: 30px !important;
330
+
331
+ // 输入框样式统一
332
+ .ant-input,
333
+ .ant-input-affix-wrapper,
334
+ .ant-select,
335
+ .ant-input-number,
336
+ .ant-picker,
337
+ .ant-radio-group,
338
+ .ant-checkbox-group {
339
+ .input-base();
340
+ }
341
+
342
+ // 选择器样式
343
+ .ant-select {
344
+ .ant-select-selector {
345
+ .input-base();
346
+ height: 30px;
347
+ line-height: 30px;
348
+
349
+ .ant-select-selection-item {
350
+ .input-base();
351
+ line-height: 30px;
352
+ }
353
+
354
+ .ant-select-selection-placeholder {
355
+ .placeholder-base();
356
+ line-height: 30px;
357
+ color: #313131;
358
+ }
359
+ }
360
+ }
361
+
362
+ // 日期选择器样式
363
+ .ant-picker {
364
+ height: 30px;
365
+
366
+ .ant-picker-input {
367
+ height: 30px;
368
+ line-height: 30px;
369
+ .input-base();
370
+
371
+ input {
372
+ .input-base();
373
+ height: 30px;
374
+ line-height: 30px;
375
+ }
376
+ }
377
+ }
378
+
379
+ // 数字输入框样式
380
+ .ant-input-number {
381
+ height: 30px;
382
+
383
+ .ant-input-number-input {
384
+ .input-base();
385
+ height: 30px;
386
+ line-height: 30px;
387
+ }
388
+ }
389
+
390
+ // 单选框组样式
391
+ .ant-radio-group {
392
+ .option-group-base();
393
+ }
394
+
395
+ // 复选框组样式
396
+ .ant-checkbox-group {
397
+ .option-group-base();
398
+ }
399
+ }
400
+ }
401
+ }
402
+
403
+ // 重置可能的容器边距
404
+ :deep(.ant-row) {
405
+ margin: 0;
406
+ padding: 0;
407
+
408
+ .ant-col {
409
+ margin: 0;
410
+ padding: 0;
411
+ }
412
+ }
413
+
414
+ // 强制重置所有可能的表单项样式
415
+ :deep(.ant-form-item) {
416
+ margin: 0 0 16px 0 !important;
417
+
418
+ // 重置可能的内部边距
419
+ .ant-form-item-control-input,
420
+ .ant-form-item-control-input-content {
421
+ margin: 0 !important;
422
+ padding: 0 !important;
423
+ }
424
+ }
425
+ }
426
+
427
+ // label-text-horizontal 样式 - 只控制label文字从左到右排列
428
+ &.h-form-label-text-horizontal {
429
+ :deep(.ant-form-item-label) {
430
+ text-align: left;
431
+ direction: ltr;
432
+
433
+ // 标签文字水平排列
434
+ .ant-form-item-label-text {
435
+ display: inline-block;
436
+ text-align: left;
437
+ direction: ltr;
438
+ unicode-bidi: normal;
439
+ }
440
+
441
+ // 必填标识水平排列
442
+ .ant-form-item-required::before {
443
+ margin-right: 4px;
444
+ margin-left: 0;
445
+ }
446
+ }
447
+ }
448
+
449
+ // label-text-justify 样式 - 标签文字两端对齐分散占满 必填*可能会有问题
450
+ &.h-form-label-text-justify {
451
+ :deep(.ant-form-item-label) {
452
+ padding-left: 0;
453
+ padding-right: 8px;
454
+
455
+ label {
456
+ position: relative;
457
+ display: block;
458
+ width: 100%;
459
+ white-space: nowrap;
460
+ margin: 0;
461
+ text-indent: 0;
462
+ text-align: justify;
463
+ text-align-last: justify;
464
+ text-justify: inter-ideograph;
465
+ box-sizing: border-box;
466
+ padding-right: 12px; // 给绝对定位的冒号留出空间
467
+ }
468
+
469
+ // 将冒号绝对定位到最右侧,避免参与两端对齐计算
470
+ label::after {
471
+ position: absolute;
472
+ right: 0;
473
+ }
474
+ }
475
+ }
476
+
477
+ // label-justify 样式 - 两端对齐,应用指定字体样式
478
+ &.h-form-label-justify {
479
+ padding-left: 8px;
480
+
481
+ :deep(.ant-form-item-label) {
482
+ padding-left: 0;
483
+ padding-right: 8px;
484
+ // 限制label容器的宽度,强制两端对齐
485
+ width: 80px !important;
486
+ min-width: 80px;
487
+ max-width: 80px;
488
+
489
+ label {
490
+ position: relative;
491
+ display: block;
492
+ width: 100%;
493
+ white-space: nowrap;
494
+ margin: 0;
495
+ text-indent: 0;
496
+ text-align: justify;
497
+ text-align-last: justify;
498
+ text-justify: inter-ideograph;
499
+ box-sizing: border-box;
500
+ padding-right: 12px; // 给绝对定位的冒号留出空间
501
+
502
+ // 应用指定的字体样式
503
+ height: 39px;
504
+ opacity: 1;
505
+ font-family: 'Source Han Sans', sans-serif;
506
+ font-size: 16px;
507
+ font-weight: normal;
508
+ line-height: 39px;
509
+ color: #313131;
510
+ }
511
+
512
+ // 去掉冒号
513
+ label::after {
514
+ content: '';
515
+ }
516
+ }
517
+ }
518
+
519
+ // label-font-style 样式 - 独立的label字体样式
520
+ &.h-form-label-font-style {
521
+ :deep(.ant-form-item-label) {
522
+ label {
523
+ height: 23px;
524
+ opacity: 1;
525
+ font-family: Source Han Sans;
526
+ font-size: 16px;
527
+ font-weight: normal;
528
+ line-height: normal;
529
+ letter-spacing: 0em;
530
+ font-feature-settings: "kern" on;
531
+ color: #313131;
532
+ }
533
+ }
534
+ }
535
+
536
+ &.h-form-simple-inline-show-label {
537
+ // ========== 公共字体样式变量 ==========
538
+ @common-font: {
539
+ font-family: Source Han Sans !important;
540
+ font-size: 16px !important;
541
+ font-weight: normal !important;
542
+ letter-spacing: 0em !important;
543
+ font-feature-settings: "kern" on !important;
544
+ };
545
+
546
+ @common-text-color: #313131;
547
+ @common-placeholder-color: #999;
548
+ @common-border-color: #E5E9F0;
549
+ @common-focus-color: #0057FE;
550
+
551
+ // ========== 表单项基础布局 ==========
552
+ :deep(.ant-form-item) {
553
+ display: flex !important;
554
+ flex-direction: row !important;
555
+ align-items: flex-start !important;
556
+ margin: 0 !important;
557
+ padding: 0 !important;
558
+ margin-bottom: 0 !important;
559
+ }
560
+
561
+ // 修复 ant-row 伪元素
562
+ :deep(.ant-row) {
563
+ &::before,
564
+ &::after {
565
+ display: table !important;
566
+ content: '' !important;
567
+ }
568
+ }
569
+
570
+ // ========== Label 样式 ==========
571
+ :deep(.ant-form-item-label) {
572
+ display: flex !important;
573
+ align-items: flex-start !important;
574
+ padding: 0 8px 0 0 !important;
575
+ width: 90px !important;
576
+ min-width: 90px !important;
577
+ max-width: 90px !important;
578
+ flex-shrink: 0 !important;
579
+ flex: none !important;
580
+
581
+ label {
582
+ position: relative !important;
583
+ display: block !important;
584
+ width: 100% !important;
585
+ height: 39px !important;
586
+ margin: 0 !important;
587
+ padding: 0 !important;
588
+ opacity: 1 !important;
589
+ @common-font();
590
+ line-height: 39px !important;
591
+ color: @common-text-color !important;
592
+ text-align: justify !important;
593
+ text-align-last: justify !important;
594
+ text-justify: inter-ideograph !important;
595
+ text-indent: 12px !important;
596
+ box-sizing: border-box !important;
597
+
598
+ &::after {
599
+ display: none !important;
600
+ content: none !important;
601
+ }
602
+
603
+ &:not(.ant-form-item-required)::before {
604
+ display: none !important;
605
+ content: none !important;
606
+ }
607
+ }
608
+ }
609
+
610
+ // 必填项星号
611
+ :deep(.ant-form-item-required) {
612
+ &::before {
613
+ display: block !important;
614
+ visibility: visible !important;
615
+ content: '*' !important;
616
+ position: absolute !important;
617
+ left: -8px !important;
618
+ top: 40% !important;
619
+ transform: translateY(-50%) !important;
620
+ color: #ff4d4f !important;
621
+ font-size: 14px !important;
622
+ font-family: SimSun, sans-serif !important;
623
+ z-index: 1 !important;
624
+ line-height: 1 !important;
625
+ }
626
+ }
627
+
628
+ // ========== 控件容器 ==========
629
+ :deep(.ant-form-item-control-wrapper) {
630
+ flex: 1 !important;
631
+ min-width: 0 !important;
632
+ width: auto !important;
633
+
634
+ .ant-form-item-control {
635
+ width: 100% !important;
636
+
637
+ .ant-form-item-children {
638
+ display: block !important;
639
+ width: 100% !important;
640
+ padding-right: 41px;
641
+ padding-left: 6px;
642
+ }
643
+ }
644
+ }
645
+
646
+ // ========== 公共输入框样式 Mixin ==========
647
+ .input-common() {
648
+ border-radius: 6px !important;
649
+ box-sizing: border-box !important;
650
+ border: 1px solid @common-border-color !important;
651
+ @common-font();
652
+ color: @common-text-color !important;
653
+
654
+ &:hover,
655
+ &:focus {
656
+ border-color: @common-focus-color !important;
657
+ box-shadow: none !important;
658
+ }
659
+
660
+ &[readonly] {
661
+ background-color: #f5f5f5;
662
+ cursor: not-allowed;
663
+ }
664
+ }
665
+
666
+ // ========== 普通输入框(不包括文本域) ==========
667
+ :deep(.ant-input:not(textarea)) {
668
+ .input-common();
669
+ height: 39px !important;
670
+ line-height: 37px !important;
671
+ padding: 0 11px !important;
672
+
673
+ &::placeholder {
674
+ line-height: 37px !important;
675
+ color: @common-placeholder-color !important;
676
+ }
677
+ }
678
+
679
+ // ========== 文本域样式 ==========
680
+ :deep(textarea.ant-input) {
681
+ .input-common();
682
+ min-height: 80px !important;
683
+ padding: 8px 11px !important;
684
+ line-height: 22px !important;
685
+ resize: vertical !important;
686
+
687
+ &::placeholder {
688
+ color: @common-placeholder-color !important;
689
+ line-height: 22px !important;
690
+ }
691
+ }
692
+
693
+ // ========== 下拉框样式 ==========
694
+ :deep(.ant-select) {
695
+ .ant-select-selection {
696
+ border-radius: 6px !important;
697
+ border: 1px solid @common-border-color !important;
698
+ height: 39px !important;
699
+
700
+ &:hover {
701
+ border-color: @common-focus-color !important;
702
+ }
703
+ }
704
+
705
+ .ant-select-selection__rendered {
706
+ height: 39px !important;
707
+ line-height: 39px !important;
708
+ margin: 0 !important;
709
+ padding: 0 11px !important;
710
+ }
711
+
712
+ .ant-select-selection__placeholder {
713
+ @common-font();
714
+ color: @common-placeholder-color !important;
715
+ line-height: 37px !important;
716
+ height: 37px !important;
717
+ top: 0 !important;
718
+ margin-top: 0 !important;
719
+ padding-left: 11px;
720
+ }
721
+
722
+ .ant-select-selection-selected-value {
723
+ @common-font();
724
+ color: @common-text-color !important;
725
+ line-height: 37px !important;
726
+ padding: 0 !important;
727
+ }
728
+
729
+ .ant-select-arrow {
730
+ right: 11px !important;
731
+ top: 50% !important;
732
+ transform: translateY(-50%) !important;
733
+
734
+ .ant-select-arrow-icon {
735
+ color: @common-placeholder-color !important;
736
+ }
737
+ }
738
+ }
739
+
740
+ :deep(.ant-select-focused) {
741
+ .ant-select-selection {
742
+ border-color: @common-focus-color !important;
743
+ box-shadow: none !important;
744
+ }
745
+ }
746
+
747
+ // ========== 单选框样式 ==========
748
+ :deep(.ant-radio-group) {
749
+ display: flex !important;
750
+ align-items: center !important;
751
+ height: 39px !important;
752
+ line-height: 39px !important;
753
+ }
754
+
755
+ :deep(.ant-radio-wrapper) {
756
+ @common-font();
757
+ line-height: 39px !important;
758
+ color: @common-text-color !important;
759
+ margin-right: 16px !important;
760
+ height: 39px !important;
761
+ display: inline-flex !important;
762
+ align-items: center !important;
763
+
764
+ // 单选框后面的文字
765
+ span:not(.ant-radio) {
766
+ @common-font();
767
+ line-height: 39px !important;
768
+ color: @common-text-color !important;
769
+ padding: 0 !important;
770
+ }
771
+ }
772
+
773
+ // 单选框圆圈
774
+ :deep(.ant-radio) {
775
+ margin-right: 4px !important;
776
+
777
+ .ant-radio-inner {
778
+ width: 16px !important;
779
+ height: 16px !important;
780
+ background: #FFFFFF !important;
781
+ border: 1px solid #CDCFD4 !important;
782
+ border-radius: 50% !important;
783
+ position: relative !important;
784
+
785
+ &::after {
786
+ width: 10px !important;
787
+ height: 10px !important;
788
+ background: @common-focus-color !important;
789
+ border-radius: 50% !important;
790
+ position: absolute !important;
791
+ top: 50% !important;
792
+ left: 50% !important;
793
+ transform: translate(-50%, -50%) !important;
794
+ margin: 0 !important;
795
+ }
796
+ }
797
+
798
+ // 选中状态
799
+ &.ant-radio-checked .ant-radio-inner {
800
+ border-color: @common-focus-color !important;
801
+ background: #FFFFFF !important;
802
+ }
803
+
804
+ // hover 状态
805
+ &:hover .ant-radio-inner {
806
+ border-color: @common-focus-color !important;
807
+ }
808
+ }
809
+ }
810
+
811
+ // small-input-style 小输入框文字样式(32px高度,234px宽度)
812
+ &.h-form-small-input-style {
813
+ // 输入框基础样式
814
+ :deep(.ant-input) {
815
+ width: 234px;
816
+ height: 32px;
817
+ border-radius: 6px;
818
+ opacity: 1;
819
+ box-sizing: border-box;
820
+ border: 1px solid #E5E9F0;
821
+
822
+ &::placeholder {
823
+ height: 23px;
824
+ opacity: 1;
825
+ font-family: Source Han Sans;
826
+ font-size: 16px;
827
+ font-weight: normal;
828
+ line-height: 32px;
829
+ letter-spacing: 0em;
830
+ font-feature-settings: "kern" on;
831
+ color: #A7A7A7;
832
+ }
833
+ }
834
+
835
+ :deep(.ant-input-affix-wrapper) {
836
+ width: 234px;
837
+ height: 32px;
838
+ border-radius: 6px;
839
+ opacity: 1;
840
+ box-sizing: border-box;
841
+ border: 1px solid #E5E9F0;
842
+
843
+ &::placeholder {
844
+ height: 23px;
845
+ opacity: 1;
846
+ font-family: Source Han Sans;
847
+ font-size: 16px;
848
+ font-weight: normal;
849
+ line-height: 32px;
850
+ letter-spacing: 0em;
851
+
852
+ font-feature-settings: "kern" on;
853
+ color: #A7A7A7;
854
+ }
855
+
856
+ .ant-input {
857
+ font-family: Source Han Sans;
858
+ font-size: 16px;
859
+ font-weight: normal;
860
+ line-height: 32px;
861
+ letter-spacing: 0em;
862
+
863
+ font-feature-settings: "kern" on;
864
+ color: #313131;
865
+ }
866
+ }
867
+
868
+ // 输入框文字样式
869
+ :deep(.ant-input) {
870
+ font-family: Source Han Sans;
871
+ font-size: 16px;
872
+ font-weight: normal;
873
+ line-height: 32px;
874
+ letter-spacing: 0em;
875
+
876
+ font-feature-settings: "kern" on;
877
+ color: #313131;
878
+ }
879
+
880
+ // 下拉框样式
881
+ :deep(.ant-select) {
882
+ width: 234px;
883
+
884
+ .ant-select-selector {
885
+ width: 234px !important;
886
+ height: 32px !important;
887
+ padding: 0 11px !important;
888
+ border-radius: 6px !important;
889
+ border: 1px solid #E5E9F0 !important;
890
+ background: #fff !important;
891
+ }
892
+
893
+ .ant-select-selection-placeholder,
894
+ .ant-select-selection__placeholder,
895
+ .ant-select-search__field__placeholder {
896
+ position: absolute !important;
897
+ top: 0 !important;
898
+ right: 11px !important;
899
+ max-width: 100% !important;
900
+ height: 32px !important;
901
+ margin-top: 0 !important;
902
+ overflow: hidden !important;
903
+ color: #A7A7A7 !important;
904
+ line-height: 30px !important;
905
+ white-space: nowrap !important;
906
+ text-overflow: ellipsis !important;
907
+ font-family: Source Han Sans !important;
908
+ font-size: 16px !important;
909
+ font-weight: normal !important;
910
+ letter-spacing: 0em !important;
911
+ font-feature-settings: "kern" on !important;
912
+ }
913
+
914
+ .ant-select-selection-selected-value {
915
+ opacity: 1;
916
+ font-family: Source Han Sans;
917
+ font-size: 16px;
918
+ font-weight: normal;
919
+ line-height: 32px;
920
+ letter-spacing: 0em;
921
+
922
+ font-feature-settings: "kern" on;
923
+ color: #313131;
924
+ }
925
+ }
926
+
927
+ // 单选按钮组样式
928
+ :deep(.ant-radio-group) {
929
+ display: inline-flex;
930
+ flex-wrap: wrap;
931
+ gap: 0;
932
+ }
933
+
934
+ :deep(.ant-radio-button-wrapper) {
935
+ height: 32px;
936
+ line-height: 32px;
937
+ padding: 0 7px;
938
+ font-family: Source Han Sans;
939
+ font-size: 16px;
940
+ font-weight: normal;
941
+ letter-spacing: 0em;
942
+
943
+ font-feature-settings: "kern" on;
944
+ color: #313131;
945
+ background: #fff;
946
+ border: 1px solid #E5E9F0;
947
+ border-radius: 0;
948
+
949
+ &:first-child {
950
+ border-radius: 6px 0 0 6px;
951
+ }
952
+
953
+ &:last-child {
954
+ border-radius: 0 6px 6px 0;
955
+ }
956
+
957
+ &:not(:first-child)::before {
958
+ display: none;
959
+ }
960
+
961
+ .ant-radio-button {
962
+ display: none;
963
+ }
964
+
965
+ .ant-radio-button-input {
966
+ display: none;
967
+ }
968
+
969
+ & > span:not(.ant-radio-button) {
970
+ font-family: Source Han Sans;
971
+ font-size: 16px;
972
+ font-weight: normal;
973
+ line-height: 32px;
974
+ letter-spacing: 0em;
975
+ color: #313131;
976
+
977
+ font-feature-settings: "kern" on;
978
+ }
979
+ }
980
+
981
+ :deep(.ant-radio-button-wrapper-checked) {
982
+ background: #0057FE;
983
+ border-color: #0057FE;
984
+
985
+ & > span:not(.ant-radio-button) {
986
+ color: #fff;
987
+ }
988
+ }
989
+
990
+ // 单选框样式
991
+ :deep(.ant-radio-wrapper) {
992
+ height: 40px;
993
+ line-height: 40px;
994
+ font-family: Source Han Sans;
995
+ font-size: 16px;
996
+ font-weight: normal;
997
+ letter-spacing: 0em;
998
+ font-variation-settings: "opsz" auto;
999
+ font-feature-settings: "kern" on;
1000
+ color: #313131;
1001
+
1002
+ .ant-radio {
1003
+ width: 16px;
1004
+ height: 16px;
1005
+ opacity: 1;
1006
+
1007
+ .ant-radio-inner {
1008
+ width: 16px;
1009
+ height: 16px;
1010
+ background: #FFFFFF;
1011
+ box-sizing: border-box;
1012
+ border: 1px solid #CDCFD4;
1013
+ border-radius: 50%;
1014
+
1015
+ &::after {
1016
+ width: 8px;
1017
+ height: 8px;
1018
+ background: #0057FE;
1019
+ border-radius: 50%;
1020
+ top: 50%;
1021
+ left: 50%;
1022
+ transform: translate(-50%, -50%);
1023
+ }
1024
+ }
1025
+ }
1026
+
1027
+ .ant-radio-checked {
1028
+ .ant-radio-inner {
1029
+ border-color: #0057FE;
1030
+ }
1031
+ }
1032
+
1033
+ span:not(.ant-radio) {
1034
+ font-family: Source Han Sans;
1035
+ font-size: 16px;
1036
+ font-weight: normal;
1037
+ line-height: 40px;
1038
+ letter-spacing: 0em;
1039
+ color: #313131;
1040
+
1041
+ font-feature-settings: "kern" on;
1042
+ }
1043
+ }
1044
+ }
1045
+ }
1046
+ </style>