vue2-client 1.20.42 → 1.20.44

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 (67) hide show
  1. package/.env.his +19 -19
  2. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260413095325.vue +509 -0
  3. package/.history/src/base-client/components/common/HIS/HForm/HForm_20260413095341.vue +506 -0
  4. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310142713.vue +512 -0
  5. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260310145118.vue +511 -0
  6. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260311094834.vue +696 -0
  7. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260320143028.vue +693 -0
  8. package/.history/src/base-client/components/common/HIS/HFormTable/HFormTable_20260409101450.vue +677 -0
  9. package/.history/src/base-client/components/common/XForm/XFormItem_20260320142959.vue +1586 -0
  10. package/.history/src/base-client/components/common/XForm/XFormItem_20260320143028.vue +1584 -0
  11. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171231.vue +1241 -0
  12. package/.history/src/base-client/components/common/XReportGrid/XReport_20260309171441.vue +1223 -0
  13. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203170042.vue +1473 -0
  14. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203170134.vue +1473 -0
  15. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203170203.vue +1473 -0
  16. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171235.vue +1473 -0
  17. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171318.vue +1471 -0
  18. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171328.vue +1471 -0
  19. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171333.vue +1470 -0
  20. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171338.vue +1470 -0
  21. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171352.vue +1470 -0
  22. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171655.vue +1471 -0
  23. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171715.vue +1472 -0
  24. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171735.vue +1472 -0
  25. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171738.vue +1472 -0
  26. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203171955.vue +1472 -0
  27. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172007.vue +1473 -0
  28. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172037.vue +1473 -0
  29. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172045.vue +1473 -0
  30. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172244.vue +1473 -0
  31. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172258.vue +1469 -0
  32. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172323.vue +1469 -0
  33. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172337.vue +1469 -0
  34. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172359.vue +1469 -0
  35. package/.history/src/base-client/components/his/XHDescriptions/XHDescriptions_20260203172404.vue +1469 -0
  36. package/.history/src/components/STable/index_20260409155138.js +806 -0
  37. package/.history/src/components/STable/index_20260409155218.js +814 -0
  38. package/.history/src/expression/core/Expression_20260305164427.js +1371 -0
  39. package/.history/src/expression/core/Expression_20260305170258.js +1358 -0
  40. package/.history/src/expression/core/Program_20260305111830.js +944 -0
  41. package/.history/src/expression/core/Program_20260305112041.js +931 -0
  42. package/.history/src/logic/LogicRunner_20260304154306.js +170 -0
  43. package/.history/src/logic/LogicRunner_20260304155553.js +112 -0
  44. package/.history/src/logic/LogicRunner_20260305105834.js +112 -0
  45. package/.history/src/logic/LogicRunner_20260305112718.js +129 -0
  46. package/.history/src/logic/LogicRunner_20260305182436.js +133 -0
  47. package/.history/src/logic/LogicRunner_20260306151301.js +213 -0
  48. package/.history/src/logic/LogicRunner_20260306152419.js +213 -0
  49. package/.history/src/logic/plugins/common/DateTools_20260305154159.js +61 -0
  50. package/.history/src/logic/plugins/common/DateTools_20260305154217.js +44 -0
  51. package/.history/src/logic/plugins/common/DateTools_20260305161014.js +44 -0
  52. package/.history/src/logic/plugins/common/HttpTools_20260305164352.js +80 -0
  53. package/.history/src/logic/plugins/common/HttpTools_20260305170258.js +75 -0
  54. package/.history/src/logic/plugins/common/HttpTools_20260305171634.js +75 -0
  55. package/.history/src/logic/plugins/common/HttpTools_20260306152419.js +72 -0
  56. package/.history/src/utils/indexedDB_20260306150918.js +593 -0
  57. package/.history/src/utils/indexedDB_20260306151301.js +586 -0
  58. package/package.json +1 -1
  59. package/src/base-client/components/common/HIS/HForm/HForm.vue +19 -1
  60. package/src/base-client/components/common/HIS/HFormTable/HFormTable.vue +0 -16
  61. package/src/base-client/components/common/XFormTable/XFormTable.vue +2 -2
  62. package/src/base-client/components/common/XMarkdownViewer/XMarkdownViewer.vue +92 -0
  63. package/src/base-client/components/common/XMarkdownViewer/demo.vue +102 -76
  64. package/src/base-client/components/common/XReport/print.js +186 -186
  65. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +36 -91
  66. package/src/services/api/restTools.js +21 -7
  67. package/vue.config.js +5 -0
package/.env.his CHANGED
@@ -1,19 +1,19 @@
1
- VUE_APP_PUBLIC_PATH=/
2
- VUE_APP_NAME=Admin
3
- VUE_APP_ROUTES_KEY=admin.routes
4
- VUE_APP_PERMISSIONS_KEY=admin.permissions
5
- VUE_APP_ROLES_KEY=admin.roles
6
- VUE_APP_USER_KEY=admin.user
7
- VUE_APP_LOGIN_KEY=admin.login
8
- VUE_APP_SETTING_KEY=admin.setting
9
- VUE_APP_TBAS_KEY=admin.tabs
10
- VUE_APP_TBAS_TITLES_KEY=admin.tabs.titles
11
- VUE_APP_DICTIONARY_KEY=admin.dictionary
12
- VUE_APP_BADGE_KEY=admin.badge
13
- VUE_APP_SINGLEVALUE_KEY=admin.singlevalue
14
- VUE_APP_DIVISIONSOHCHINA=admin.divisionsohchina
15
- VUE_APP_WEB_CONFIG_KEY=admin.webconfig
16
- VUE_APP_API_BASE_URL=http://123.60.214.109:8405
17
- VUE_APP_SYSTEM_NAME=af-his
18
- VUE_APP_LOGIN_VERSION=V4
19
-
1
+ VUE_APP_PUBLIC_PATH=/
2
+ VUE_APP_NAME=Admin
3
+ VUE_APP_ROUTES_KEY=admin.routes
4
+ VUE_APP_PERMISSIONS_KEY=admin.permissions
5
+ VUE_APP_ROLES_KEY=admin.roles
6
+ VUE_APP_USER_KEY=admin.user
7
+ VUE_APP_LOGIN_KEY=admin.login
8
+ VUE_APP_SETTING_KEY=admin.setting
9
+ VUE_APP_TBAS_KEY=admin.tabs
10
+ VUE_APP_TBAS_TITLES_KEY=admin.tabs.titles
11
+ VUE_APP_DICTIONARY_KEY=admin.dictionary
12
+ VUE_APP_BADGE_KEY=admin.badge
13
+ VUE_APP_SINGLEVALUE_KEY=admin.singlevalue
14
+ VUE_APP_DIVISIONSOHCHINA=admin.divisionsohchina
15
+ VUE_APP_WEB_CONFIG_KEY=admin.webconfig
16
+ VUE_APP_API_BASE_URL=http://123.60.214.109:8405
17
+ VUE_APP_SYSTEM_NAME=af-his
18
+ VUE_APP_LOGIN_VERSION=V4
19
+
@@ -0,0 +1,509 @@
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 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
+ 'label-justify',
49
+ 'charge-form',
50
+ 'mini-form',
51
+ 'content-right'
52
+ ]
53
+ // 只要属性存在就生效的样式开关
54
+ const existStyleKeys = ['radio-style_1']
55
+ for (const key of booleanStyleKeys) {
56
+ const val = a[key]
57
+ const truthy = val === true || val === '' || val === 'true'
58
+ if (truthy) classes[`h-form-${key}`] = true
59
+ }
60
+ // 检查存在即生效的样式开关
61
+ for (const key of existStyleKeys) {
62
+ if (key in a) classes[`h-form-${key}`] = true
63
+ }
64
+
65
+ return classes
66
+ })
67
+
68
+ defineExpose({
69
+ getXAddNativeFormInstance: () => xAddNativeFormRef.value,
70
+ init: (params) => xAddNativeFormRef.value && xAddNativeFormRef.value.init && xAddNativeFormRef.value.init(params),
71
+ asyncSubmit: () => xAddNativeFormRef.value && xAddNativeFormRef.value.asyncSubmit && xAddNativeFormRef.value.asyncSubmit(),
72
+ validateForm: () => xAddNativeFormRef.value && xAddNativeFormRef.value.validateForm && xAddNativeFormRef.value.validateForm(),
73
+ /** 等待配置结束的异步方法,委托给内部 XAddNativeForm */
74
+ waitConfigEnd: () => xAddNativeFormRef.value?.waitConfigEnd?.() ?? Promise.resolve()
75
+ })
76
+
77
+ </script>
78
+
79
+ <template>
80
+ <div
81
+ class="h-form-wrapper"
82
+ :class="[
83
+ wrapperClassObject
84
+ ]"
85
+ :style="wrapperStyleObject"
86
+ >
87
+
88
+ <x-add-native-form
89
+ ref="xAddNativeFormRef"
90
+ v-bind="$attrs"
91
+ :enable-popup-to-body="enablePopupToBody"
92
+ :enable-horizontal-custom="props.enableHorizontalCustom"
93
+ @configEnd="$emit('configEnd')"
94
+ v-on="$listeners"
95
+ >
96
+ <template v-for="(_, name) in $slots" #[name]="slotData">
97
+ <slot :name="name" v-bind="slotData" />
98
+ </template>
99
+ </x-add-native-form>
100
+ </div>
101
+ </template>
102
+
103
+ <style scoped lang="less">
104
+ // 单选框 padding 变量
105
+ @radio-padding: var(--radio-padding, 9px);
106
+
107
+ .h-form-wrapper {
108
+ // 基础样式
109
+ :deep(.ant-form-item) {
110
+ margin-bottom: 4px;
111
+ }
112
+ &.h-form-mini-form {
113
+ :deep(.ant-form-inline) {
114
+ .ant-row-flex {
115
+ .ant-col {
116
+ flex: auto !important;
117
+ max-width: 250px !important;
118
+ }
119
+ }
120
+ }
121
+ :deep(.ant-form-item){
122
+ margin-right: 0px !important;
123
+ }
124
+ }
125
+
126
+ &.h-form-content-right {
127
+ :deep(.ant-form-inline) {
128
+ .ant-row-flex {
129
+ justify-content: right;
130
+ }
131
+ }
132
+ }
133
+
134
+ // query-conditions 样式
135
+ &.h-form-query-conditions {
136
+ :deep(.ant-card-body) {
137
+ padding: 0px;
138
+ }
139
+
140
+ :deep(.ant-row-flex) {
141
+ .x-form-col-wrapper {
142
+ .ant-form-item {
143
+ display: flex !important;
144
+ width: 100%;
145
+ height: 100%;
146
+ margin-bottom: 0px;
147
+ justify-content: space-between;
148
+
149
+ .ant-form-item-label {
150
+ display: flex;
151
+ align-items: center;
152
+ height: 100%;
153
+
154
+ label {
155
+ height: 23px;
156
+ opacity: 1;
157
+ font-family: Source Han Sans;
158
+ font-size: 16px;
159
+ font-weight: normal;
160
+ line-height: normal;
161
+ letter-spacing: 0em;
162
+ font-feature-settings: "kern" on;
163
+ color: #313131;
164
+ display: block !important; // 保持 block 以支持两端对齐
165
+ width: 100%;
166
+ white-space: nowrap;
167
+ margin: 0;
168
+ text-align: justify;
169
+ text-align-last: justify;
170
+ text-justify: inter-ideograph;
171
+ box-sizing: border-box;
172
+ padding-right: 0 !important; // 移除冒号预留空间
173
+
174
+ // 使用 line-height 实现垂直居中
175
+ line-height: 40px; // 设置与容器高度相同的行高
176
+ }
177
+
178
+ & > label::after {
179
+ display: none !important;
180
+ }
181
+ }
182
+ }
183
+ }
184
+
185
+ .ant-col-24 {
186
+ padding: 0px 4px !important;
187
+ }
188
+ }
189
+ }
190
+ // 单选框样式设计图中切换模式的样式
191
+ &.h-form-radio-style_1{
192
+ :deep(.ant-radio-button-wrapper) {
193
+ padding: 0 @radio-padding;
194
+ }
195
+ :deep(.ant-radio-button-wrapper-checked){
196
+ background-color: #0057FE;
197
+ color: white;
198
+ }
199
+ }
200
+
201
+ &.h-form-simple-inline {
202
+ :deep(.ant-form-item-label){
203
+ display: none !important;
204
+ }
205
+ :deep(.ant-form-item-control-wrapper){
206
+ width: 100%;
207
+ }
208
+ }
209
+
210
+ &.h-form-padding-50 {
211
+ // ant-row-flex 样式
212
+ :deep(.ant-row-flex) {
213
+ padding-left: 50px;
214
+ padding-right: 50px
215
+ }
216
+ }
217
+
218
+ // 单选框样式设计图中切换模式的样式
219
+ &.h-form-radio-style_1{
220
+ :deep(.ant-radio-button-wrapper) {
221
+ padding: 0 @radio-padding;
222
+ }
223
+ :deep(.ant-radio-button-wrapper-checked){
224
+ background-color: #0057FE;
225
+ color: white;
226
+ }
227
+ }
228
+
229
+ // charge-form 样式
230
+ &.h-form-charge-form {
231
+ margin-top: 2px !important;
232
+ // 定义变量
233
+ @font-common: {
234
+ font-family: 'Source Han Sans', sans-serif;
235
+ font-size: 16px;
236
+ font-weight: normal;
237
+ letter-spacing: 0em;
238
+ font-feature-settings: "kern" on;
239
+ };
240
+
241
+ @color-primary: #313131;
242
+ @color-placeholder: #999999;
243
+
244
+ // 定义混合宏
245
+ .input-base() {
246
+ width: 100%;
247
+ height: 30px;
248
+ line-height: 30px;
249
+ vertical-align: top;
250
+ margin: 0;
251
+ text-align: left;
252
+ color: @color-primary;
253
+ opacity: 1;
254
+ @font-common();
255
+ }
256
+
257
+ .placeholder-base() {
258
+ color: @color-placeholder;
259
+ opacity: 1;
260
+ @font-common();
261
+ }
262
+
263
+ .option-group-base() {
264
+ height: 30px;
265
+ line-height: 30px;
266
+ display: flex;
267
+ align-items: center;
268
+
269
+ .ant-radio-wrapper,
270
+ .ant-checkbox-wrapper {
271
+ height: 30px;
272
+ line-height: 30px;
273
+ margin-right: 16px;
274
+ }
275
+ }
276
+
277
+ :deep(.ant-form-item) {
278
+ margin-bottom: 16px;
279
+ margin-top: 0;
280
+ padding: 0;
281
+ display: flex;
282
+ align-items: center;
283
+
284
+ .ant-form-item-label {
285
+ text-align: left;
286
+ margin: 0 11px 0 0 !important;
287
+ width: 64px;
288
+ min-width: 64px;
289
+ max-width: 64px;
290
+ flex-shrink: 0;
291
+
292
+ label {
293
+ height: 23px;
294
+ opacity: 1;
295
+ line-height: 23px;
296
+ color: @color-primary;
297
+ margin: 0;
298
+ padding: 0;
299
+ white-space: nowrap;
300
+ display: block;
301
+ @font-common();
302
+
303
+ // 移除冒号
304
+ &::after {
305
+ content: '';
306
+ }
307
+ }
308
+ }
309
+
310
+ .ant-form-item-control-wrapper {
311
+ margin: 0;
312
+ padding: 0;
313
+ flex: 1;
314
+ min-width: 0;
315
+ display: flex;
316
+ align-items: center;
317
+
318
+ .ant-form-item-control {
319
+ margin: 0;
320
+ padding: 0;
321
+ width: 100%;
322
+ text-align: left;
323
+ line-height: 30px !important;
324
+
325
+ // 输入框样式统一
326
+ .ant-input,
327
+ .ant-input-affix-wrapper,
328
+ .ant-select,
329
+ .ant-input-number,
330
+ .ant-picker,
331
+ .ant-radio-group,
332
+ .ant-checkbox-group {
333
+ .input-base();
334
+ }
335
+
336
+ // 选择器样式
337
+ .ant-select {
338
+ .ant-select-selector {
339
+ .input-base();
340
+ height: 30px;
341
+ line-height: 30px;
342
+
343
+ .ant-select-selection-item {
344
+ .input-base();
345
+ line-height: 30px;
346
+ }
347
+
348
+ .ant-select-selection-placeholder {
349
+ .placeholder-base();
350
+ line-height: 30px;
351
+ color: #313131;
352
+ }
353
+ }
354
+ }
355
+
356
+ // 日期选择器样式
357
+ .ant-picker {
358
+ height: 30px;
359
+
360
+ .ant-picker-input {
361
+ height: 30px;
362
+ line-height: 30px;
363
+ .input-base();
364
+
365
+ input {
366
+ .input-base();
367
+ height: 30px;
368
+ line-height: 30px;
369
+ }
370
+ }
371
+ }
372
+
373
+ // 数字输入框样式
374
+ .ant-input-number {
375
+ height: 30px;
376
+
377
+ .ant-input-number-input {
378
+ .input-base();
379
+ height: 30px;
380
+ line-height: 30px;
381
+ }
382
+ }
383
+
384
+ // 单选框组样式
385
+ .ant-radio-group {
386
+ .option-group-base();
387
+ }
388
+
389
+ // 复选框组样式
390
+ .ant-checkbox-group {
391
+ .option-group-base();
392
+ }
393
+ }
394
+ }
395
+ }
396
+
397
+ // 重置可能的容器边距
398
+ :deep(.ant-row) {
399
+ margin: 0;
400
+ padding: 0;
401
+
402
+ .ant-col {
403
+ margin: 0;
404
+ padding: 0;
405
+ }
406
+ }
407
+
408
+ // 强制重置所有可能的表单项样式
409
+ :deep(.ant-form-item) {
410
+ margin: 0 0 16px 0 !important;
411
+
412
+ // 重置可能的内部边距
413
+ .ant-form-item-control-input,
414
+ .ant-form-item-control-input-content {
415
+ margin: 0 !important;
416
+ padding: 0 !important;
417
+ }
418
+ }
419
+ }
420
+
421
+ // label-text-horizontal 样式 - 只控制label文字从左到右排列
422
+ &.h-form-label-text-horizontal {
423
+ :deep(.ant-form-item-label) {
424
+ text-align: left;
425
+ direction: ltr;
426
+
427
+ // 标签文字水平排列
428
+ .ant-form-item-label-text {
429
+ display: inline-block;
430
+ text-align: left;
431
+ direction: ltr;
432
+ unicode-bidi: normal;
433
+ }
434
+
435
+ // 必填标识水平排列
436
+ .ant-form-item-required::before {
437
+ margin-right: 4px;
438
+ margin-left: 0;
439
+ }
440
+ }
441
+ }
442
+
443
+ // label-text-justify 样式 - 标签文字两端对齐分散占满 必填*可能会有问题
444
+ &.h-form-label-text-justify {
445
+ :deep(.ant-form-item-label) {
446
+ padding-left: 0;
447
+ padding-right: 8px;
448
+ label {
449
+ position: relative;
450
+ display: block;
451
+ width: 100%;
452
+ white-space: nowrap;
453
+ margin: 0;
454
+ text-indent: 0;
455
+ text-align: justify;
456
+ text-align-last: justify;
457
+ text-justify: inter-ideograph;
458
+ box-sizing: border-box;
459
+ padding-right: 12px; // 给绝对定位的冒号留出空间
460
+ }
461
+ // 将冒号绝对定位到最右侧,避免参与两端对齐计算
462
+ label::after {
463
+ position: absolute;
464
+ right: 0;
465
+ }
466
+ }
467
+ }
468
+
469
+ // label-justify 样式 - 两端对齐,应用指定字体样式
470
+ &.h-form-label-justify {
471
+ padding-left: 8px;
472
+
473
+ :deep(.ant-form-item-label) {
474
+ padding-left: 0;
475
+ padding-right: 8px;
476
+ // 限制label容器的宽度,强制两端对齐
477
+ width: 80px !important;
478
+ min-width: 80px;
479
+ max-width: 80px;
480
+ label {
481
+ position: relative;
482
+ display: block;
483
+ width: 100%;
484
+ white-space: nowrap;
485
+ margin: 0;
486
+ text-indent: 0;
487
+ text-align: justify;
488
+ text-align-last: justify;
489
+ text-justify: inter-ideograph;
490
+ box-sizing: border-box;
491
+ padding-right: 12px; // 给绝对定位的冒号留出空间
492
+
493
+ // 应用指定的字体样式
494
+ height: 39px;
495
+ opacity: 1;
496
+ font-family: 'Source Han Sans', sans-serif;
497
+ font-size: 16px;
498
+ font-weight: normal;
499
+ line-height: 39px;
500
+ color: #313131;
501
+ }
502
+ // 去掉冒号
503
+ label::after {
504
+ content: '';
505
+ }
506
+ }
507
+ }
508
+ }
509
+ </style>