vue2-client 1.17.37 → 1.17.39

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 (29) hide show
  1. package/package.json +1 -1
  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/AmapMarker/index.js +3 -3
  5. package/src/base-client/components/common/HIS/HButtons/HButtons.vue +491 -491
  6. package/src/base-client/components/common/HIS/HFormGroup/index.js +3 -3
  7. package/src/base-client/components/common/HIS/HTab/HTab.vue +443 -443
  8. package/src/base-client/components/common/XCollapse/XCollapse.vue +830 -833
  9. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  10. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  11. package/src/base-client/components/common/XFormTable/XFormTable.vue +112 -0
  12. package/src/base-client/components/common/XFormTable/demo.vue +1 -1
  13. package/src/base-client/components/common/XTab/XTab.vue +7 -8
  14. package/src/base-client/components/common/XTable/XTableWrapper.vue +0 -5
  15. package/src/base-client/components/common/XTimeline/XTimeline.vue +477 -477
  16. package/src/base-client/components/his/XHDescriptions/XHDescriptions.vue +41 -2
  17. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +705 -705
  18. package/src/base-client/components/his/XList/XList.vue +938 -938
  19. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +354 -354
  20. package/src/base-client/components/his/XTitle/XTitle.vue +314 -314
  21. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +341 -341
  22. package/src/base-client/components/his/threeTestOrders/editor.vue +113 -113
  23. package/src/components/STable/index.js +94 -55
  24. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +1 -1
  25. package/src/pages/userInfoDetailManage/ExceptionRecordQuery/index.vue +45 -45
  26. package/src/router/async/router.map.js +2 -2
  27. package/src/theme/global.less +144 -112
  28. package/src-base-client/components/common/HIS/HForm/HForm.vue +347 -0
  29. /package/{tests/unit/a.log → src-base-client/components/common/XCollapse/XCollapse.vue} +0 -0
@@ -43,118 +43,6 @@ ol {
43
43
  margin-bottom: 16px;
44
44
  }
45
45
 
46
- // 表格行样式类型
47
- .ant-table-tbody {
48
- // 成功样式 - 绿色 (#52c41a)
49
- .ant-table-row-success {
50
- background-color: rgba(82, 196, 26, 0.2);
51
-
52
- &:hover {
53
- background-color: rgba(82, 196, 26, 0.3);
54
-
55
- td {
56
- background-color: transparent;
57
- }
58
- }
59
-
60
- // 选中状态
61
- &.ant-table-row-selected {
62
- background-color: rgba(82, 196, 26, 0.4);
63
-
64
- td {
65
- background-color: transparent;
66
- }
67
- }
68
-
69
- td {
70
- background-color: transparent;
71
- }
72
- }
73
-
74
- // 警告样式 - 黄色 (#faad14)
75
- .ant-table-row-warning {
76
- background-color: rgba(250, 173, 20, 0.1) ;
77
-
78
- &:hover {
79
- background-color: rgba(250, 173, 20, 0.15) ;
80
-
81
- td {
82
- background-color: transparent ;
83
- }
84
- }
85
-
86
- // 选中状态
87
- &.ant-table-row-selected {
88
- background-color: rgba(250, 173, 20, 0.2);
89
-
90
- td {
91
- background-color: transparent;
92
- }
93
- }
94
-
95
- td {
96
- background-color: transparent ;
97
- }
98
- }
99
-
100
- // 错误样式 - 红色 (#f5222f)
101
- .ant-table-row-error {
102
- background-color: rgba(245, 34, 47, 0.1) ;
103
-
104
- &:hover {
105
- background-color: rgba(245, 34, 47, 0.15) ;
106
-
107
- td {
108
- background-color: transparent ;
109
- }
110
- }
111
-
112
- // 选中状态
113
- &.ant-table-row-selected {
114
- background-color: rgba(245, 34, 47, 0.2) ;
115
-
116
- td {
117
- background-color: transparent ;
118
- }
119
- }
120
-
121
- td {
122
- background-color: transparent ;
123
- }
124
- }
125
-
126
- // 魔法样式 - 紫色
127
- .ant-table-row-magic {
128
- background-color: rgba(114, 46, 209, 0.1) ;
129
-
130
- &:hover {
131
- background-color: rgba(114, 46, 209, 0.15) ;
132
-
133
- td {
134
- background-color: transparent ;
135
- }
136
- }
137
-
138
- // 选中状态
139
- &.ant-table-row-selected {
140
- background-color: rgba(114, 46, 209, 0.2) ;
141
-
142
- td {
143
- background-color: transparent ;
144
- }
145
- }
146
-
147
- td {
148
- background-color: transparent ;
149
- }
150
- }
151
-
152
- // 默认选中状态(没有特殊行样式时)
153
- .ant-table-row-selected:not(.ant-table-row-success):not(.ant-table-row-warning):not(.ant-table-row-error):not(.ant-table-row-magic) {
154
- background-color: rgba(24, 144, 255, 0.1) ;
155
- }
156
- }
157
-
158
46
  // 数据列表 操作
159
47
  .table-operator {
160
48
  margin-bottom: 18px;
@@ -259,6 +147,150 @@ ol {
259
147
  display: none;
260
148
  }
261
149
 
150
+ // STable 表格行样式
151
+ .ant-table-tbody {
152
+ // 统一为所有行添加平滑过渡效果
153
+ tr {
154
+ transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
155
+
156
+ td {
157
+ transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
158
+ }
159
+ }
160
+
161
+ // 成功样式 - 绿色
162
+ .row-style-success {
163
+ background-color: rgba(82, 196, 26, 0.1) !important;
164
+
165
+ // 使用 CSS :hover 处理鼠标悬浮(即使快速移动也能正确显示)
166
+ &:hover,
167
+ &.row-clicked {
168
+ background-color: rgba(82, 196, 26, 0.2) !important;
169
+ }
170
+
171
+ td {
172
+ background-color: transparent !important;
173
+ }
174
+
175
+ // 超链接样式 - 使用更深的绿色
176
+ a {
177
+ color: #389e0d !important; // 深绿色
178
+ transition: color 0.2s ease;
179
+
180
+ &:hover {
181
+ color: #237804 !important; // 更深的绿色
182
+ text-decoration: underline;
183
+ }
184
+
185
+ &:active {
186
+ color: #135200 !important; // 最深的绿色
187
+ }
188
+ }
189
+ }
190
+
191
+ // 警告样式 - 黄色
192
+ .row-style-warning,
193
+ .row-style-warn {
194
+ background-color: rgba(250, 173, 20, 0.1) !important;
195
+
196
+ &:hover,
197
+ &.row-clicked {
198
+ background-color: rgba(250, 173, 20, 0.2) !important;
199
+ }
200
+
201
+ td {
202
+ background-color: transparent !important;
203
+ }
204
+
205
+ // 超链接样式 - 使用更深的橙黄色
206
+ a {
207
+ color: #d48806 !important; // 深橙黄色
208
+ transition: color 0.2s ease;
209
+
210
+ &:hover {
211
+ color: #ad6800 !important; // 更深的橙黄色
212
+ text-decoration: underline;
213
+ }
214
+
215
+ &:active {
216
+ color: #874d00 !important; // 最深的橙黄色
217
+ }
218
+ }
219
+ }
220
+
221
+ // 错误/危险样式 - 红色
222
+ .row-style-error,
223
+ .row-style-danger {
224
+ background-color: rgba(245, 34, 47, 0.1) !important;
225
+
226
+ &:hover,
227
+ &.row-clicked {
228
+ background-color: rgba(245, 34, 47, 0.2) !important;
229
+ }
230
+
231
+ td {
232
+ background-color: transparent !important;
233
+ }
234
+
235
+ // 超链接样式 - 使用更深的红色
236
+ a {
237
+ color: #cf1322 !important; // 深红色
238
+ transition: color 0.2s ease;
239
+
240
+ &:hover {
241
+ color: #a8071a !important; // 更深的红色
242
+ text-decoration: underline;
243
+ }
244
+
245
+ &:active {
246
+ color: #820014 !important; // 最深的红色
247
+ }
248
+ }
249
+ }
250
+
251
+ // 魔法样式 - 紫色
252
+ .row-style-magic {
253
+ background-color: rgba(114, 46, 209, 0.1) !important;
254
+
255
+ &:hover,
256
+ &.row-clicked {
257
+ background-color: rgba(114, 46, 209, 0.2) !important;
258
+ }
259
+
260
+ td {
261
+ background-color: transparent !important;
262
+ }
263
+
264
+ // 超链接样式 - 使用更深的紫色
265
+ a {
266
+ color: #531dab !important; // 深紫色
267
+ transition: color 0.2s ease;
268
+
269
+ &:hover {
270
+ color: #391085 !important; // 更深的紫色
271
+ text-decoration: underline;
272
+ }
273
+
274
+ &:active {
275
+ color: #22075e !important; // 最深的紫色
276
+ }
277
+ }
278
+ }
279
+
280
+ // 默认信息样式
281
+ .row-style-info {
282
+ &:hover,
283
+ &.row-clicked {
284
+ // 使用主题色的 20% 透明度
285
+ background-color: fade(@primary-color, 10%) !important;
286
+ }
287
+
288
+ td {
289
+ background-color: transparent !important;
290
+ }
291
+ }
292
+ }
293
+
262
294
  @media (max-width: @screen-xs) {
263
295
  .ant-table {
264
296
  width: 100%;
@@ -0,0 +1,347 @@
1
+ <script setup lang="ts">
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 wrapperClassObject = computed(() => {
9
+ const a = attrs
10
+ const classes = {}
11
+
12
+ // 1) 多个布尔型样式开关(存在且为真则生效)
13
+ const booleanStyleKeys = [
14
+ 'query-conditions',
15
+ 'padding-50',
16
+ 'label-text-horizontal',
17
+ 'label-text-justify',
18
+ 'charge-form'
19
+ ]
20
+ for (const key of booleanStyleKeys) {
21
+ const val = a[key]
22
+ const truthy = val === true || val === '' || val === 'true'
23
+ if (truthy) classes[`h-form-${key}`] = true
24
+ }
25
+ return classes
26
+ })
27
+
28
+ defineExpose({
29
+ getXAddNativeFormInstance: () => xAddNativeFormRef.value,
30
+ init: (params) => xAddNativeFormRef.value && xAddNativeFormRef.value.init && xAddNativeFormRef.value.init(params),
31
+ asyncSubmit: () => xAddNativeFormRef.value && xAddNativeFormRef.value.asyncSubmit && xAddNativeFormRef.value.asyncSubmit(),
32
+ validateForm: () => xAddNativeFormRef.value && xAddNativeFormRef.value.validateForm && xAddNativeFormRef.value.validateForm()
33
+ })
34
+
35
+ </script>
36
+
37
+ <template>
38
+ <div
39
+ class="h-form-wrapper"
40
+ :class="[
41
+ wrapperClassObject
42
+ ]"
43
+ >
44
+
45
+ <x-add-native-form
46
+ ref="xAddNativeFormRef"
47
+ v-bind="$attrs"
48
+ v-on="$listeners"
49
+ >
50
+ <template v-for="(_, name) in $slots" #[name]="slotData">
51
+ <slot :name="name" v-bind="slotData" />
52
+ </template>
53
+ </x-add-native-form>
54
+ </div>
55
+ </template>
56
+
57
+ <style scoped lang="less">
58
+ .h-form-wrapper {
59
+ // 基础样式
60
+ :deep(.ant-form-item) {
61
+ margin-bottom: 4px;
62
+ }
63
+
64
+ // query-conditions 样式
65
+ &.h-form-query-conditions {
66
+ // ant-card-body 样式
67
+ :deep(.ant-card-body) {
68
+ padding: 0px;
69
+ }
70
+
71
+ // ant-row-flex 样式
72
+ :deep(.ant-row-flex) {
73
+ // x-form-col-wrapper 样式
74
+ .x-form-col-wrapper {
75
+ .ant-form-item {
76
+ display: flex;
77
+ width: 100%;
78
+ margin-bottom: 4px;
79
+ justify-content: space-between;
80
+
81
+ .ant-form-item-label {
82
+ padding-left: 4px;
83
+ width: 100%;
84
+ }
85
+
86
+ .ant-form-item-control-wrapper {
87
+ padding-left: -6px;
88
+ }
89
+ }
90
+ }
91
+
92
+ // ant-col-24 样式
93
+ .ant-col-24 {
94
+ padding: 0px 4px !important;
95
+ }
96
+ }
97
+ }
98
+
99
+ &.h-form-padding-50 {
100
+ // ant-row-flex 样式
101
+ :deep(.ant-row-flex) {
102
+ padding-left: 50px;
103
+ padding-right: 50px
104
+ }
105
+ }
106
+
107
+ // charge-form 样式
108
+ &.h-form-charge-form {
109
+ margin-top: 2px !important;
110
+ // 定义变量
111
+ @font-common: {
112
+ font-family: 'Source Han Sans', sans-serif;
113
+ font-size: 16px;
114
+ font-weight: normal;
115
+ letter-spacing: 0em;
116
+ font-variation-settings: "opsz" auto;
117
+ font-feature-settings: "kern" on;
118
+ };
119
+
120
+ @color-primary: #313131;
121
+ @color-placeholder: #999999;
122
+
123
+ // 定义混合宏
124
+ .input-base() {
125
+ width: 100%;
126
+ height: 30px;
127
+ line-height: 30px;
128
+ vertical-align: top;
129
+ margin: 0;
130
+ text-align: left;
131
+ color: @color-primary;
132
+ opacity: 1;
133
+ @font-common();
134
+ }
135
+
136
+ .placeholder-base() {
137
+ color: @color-placeholder;
138
+ opacity: 1;
139
+ @font-common();
140
+ }
141
+
142
+ .option-group-base() {
143
+ height: 30px;
144
+ line-height: 30px;
145
+ display: flex;
146
+ align-items: center;
147
+
148
+ .ant-radio-wrapper,
149
+ .ant-checkbox-wrapper {
150
+ height: 30px;
151
+ line-height: 30px;
152
+ margin-right: 16px;
153
+ }
154
+ }
155
+
156
+ :deep(.ant-form-item) {
157
+ margin-bottom: 16px;
158
+ margin-top: 0;
159
+ padding: 0;
160
+ display: flex;
161
+ align-items: center;
162
+
163
+ .ant-form-item-label {
164
+ text-align: left;
165
+ margin: 0 16px 0 0 !important;
166
+ width: 64px;
167
+ min-width: 64px;
168
+ max-width: 64px;
169
+ flex-shrink: 0;
170
+
171
+ label {
172
+ height: 23px;
173
+ opacity: 1;
174
+ line-height: 23px;
175
+ color: @color-primary;
176
+ margin: 0;
177
+ padding: 0;
178
+ white-space: nowrap;
179
+ display: block;
180
+ @font-common();
181
+
182
+ // 移除冒号
183
+ &::after {
184
+ content: '';
185
+ }
186
+ }
187
+ }
188
+
189
+ .ant-form-item-control-wrapper {
190
+ margin: 0;
191
+ padding: 0;
192
+ flex: 1;
193
+ min-width: 0;
194
+ display: flex;
195
+ align-items: center;
196
+
197
+ .ant-form-item-control {
198
+ margin: 0;
199
+ padding: 0;
200
+ width: 100%;
201
+ text-align: left;
202
+ line-height: 30px !important;
203
+
204
+ // 输入框样式统一
205
+ .ant-input,
206
+ .ant-input-affix-wrapper,
207
+ .ant-select,
208
+ .ant-input-number,
209
+ .ant-picker,
210
+ .ant-radio-group,
211
+ .ant-checkbox-group {
212
+ .input-base();
213
+ }
214
+
215
+ // 选择器样式
216
+ .ant-select {
217
+ .ant-select-selector {
218
+ .input-base();
219
+ height: 30px;
220
+ line-height: 30px;
221
+
222
+ .ant-select-selection-item {
223
+ .input-base();
224
+ line-height: 30px;
225
+ }
226
+
227
+ .ant-select-selection-placeholder {
228
+ .placeholder-base();
229
+ line-height: 30px;
230
+ }
231
+ }
232
+ }
233
+
234
+ // 日期选择器样式
235
+ .ant-picker {
236
+ height: 30px;
237
+
238
+ .ant-picker-input {
239
+ height: 30px;
240
+ line-height: 30px;
241
+ .input-base();
242
+
243
+ input {
244
+ .input-base();
245
+ height: 30px;
246
+ line-height: 30px;
247
+ }
248
+ }
249
+ }
250
+
251
+ // 数字输入框样式
252
+ .ant-input-number {
253
+ height: 30px;
254
+
255
+ .ant-input-number-input {
256
+ .input-base();
257
+ height: 30px;
258
+ line-height: 30px;
259
+ }
260
+ }
261
+
262
+ // 单选框组样式
263
+ .ant-radio-group {
264
+ .option-group-base();
265
+ }
266
+
267
+ // 复选框组样式
268
+ .ant-checkbox-group {
269
+ .option-group-base();
270
+ }
271
+ }
272
+ }
273
+ }
274
+
275
+ // 重置可能的容器边距
276
+ :deep(.ant-row) {
277
+ margin: 0;
278
+ padding: 0;
279
+
280
+ .ant-col {
281
+ margin: 0;
282
+ padding: 0;
283
+ }
284
+ }
285
+
286
+ // 强制重置所有可能的表单项样式
287
+ :deep(.ant-form-item) {
288
+ margin: 0 0 16px 0 !important;
289
+
290
+ // 重置可能的内部边距
291
+ .ant-form-item-control-input,
292
+ .ant-form-item-control-input-content {
293
+ margin: 0 !important;
294
+ padding: 0 !important;
295
+ }
296
+ }
297
+ }
298
+
299
+ // label-text-horizontal 样式 - 只控制label文字从左到右排列
300
+ &.h-form-label-text-horizontal {
301
+ :deep(.ant-form-item-label) {
302
+ text-align: left;
303
+ direction: ltr;
304
+
305
+ // 标签文字水平排列
306
+ .ant-form-item-label-text {
307
+ display: inline-block;
308
+ text-align: left;
309
+ direction: ltr;
310
+ unicode-bidi: normal;
311
+ }
312
+
313
+ // 必填标识水平排列
314
+ .ant-form-item-required::before {
315
+ margin-right: 4px;
316
+ margin-left: 0;
317
+ }
318
+ }
319
+ }
320
+
321
+ // label-text-justify 样式 - 标签文字两端对齐分散占满 必填*可能会有问题
322
+ &.h-form-label-text-justify {
323
+ :deep(.ant-form-item-label) {
324
+ padding-left: 0;
325
+ padding-right: 8px;
326
+ label {
327
+ position: relative;
328
+ display: block;
329
+ width: 100%;
330
+ white-space: nowrap;
331
+ margin: 0;
332
+ text-indent: 0;
333
+ text-align: justify;
334
+ text-align-last: justify;
335
+ text-justify: inter-ideograph;
336
+ box-sizing: border-box;
337
+ padding-right: 12px; // 给绝对定位的冒号留出空间
338
+ }
339
+ // 将冒号绝对定位到最右侧,避免参与两端对齐计算
340
+ label::after {
341
+ position: absolute;
342
+ right: 0;
343
+ }
344
+ }
345
+ }
346
+ }
347
+ </style>