vue2-client 1.18.32 → 1.18.33

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 (105) hide show
  1. package/.eslintrc.js +90 -90
  2. package/Components.md +60 -60
  3. package/docs/index.md +30 -30
  4. package/index.js +31 -31
  5. package/jest-transform-stub.js +8 -8
  6. package/jest.setup.js +7 -7
  7. package/package.json +1 -1
  8. package/src/assets/img/querySlotDemo.svg +15 -15
  9. package/src/assets/svg/female.svg +1 -1
  10. package/src/assets/svg/male.svg +1 -1
  11. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  12. package/src/base-client/components/common/CitySelect/index.js +3 -3
  13. package/src/base-client/components/common/CitySelect/index.md +109 -109
  14. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  15. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  16. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  17. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  18. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  19. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  20. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  21. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  22. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  23. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  24. package/src/base-client/components/common/HIS/HFormGroup/index.js +3 -3
  25. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  26. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  27. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  28. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  29. package/src/base-client/components/common/Tree/index.js +2 -2
  30. package/src/base-client/components/common/Upload/index.js +3 -3
  31. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  32. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  33. package/src/base-client/components/common/XCollapse/XCollapse.vue +830 -830
  34. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  35. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  36. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  37. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  38. package/src/base-client/components/common/XDescriptions/index.md +322 -322
  39. package/src/base-client/components/common/XForm/index.md +178 -178
  40. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +6 -3
  41. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  42. package/src/base-client/components/common/XStepView/index.js +3 -3
  43. package/src/base-client/components/common/XStepView/index.md +31 -31
  44. package/src/base-client/components/common/XTable/XTable.vue +1715 -1715
  45. package/src/base-client/components/common/XTable/index.md +255 -255
  46. package/src/base-client/components/common/XTimeline/XTimeline.vue +477 -477
  47. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +705 -705
  48. package/src/base-client/components/his/XList/XList.vue +938 -938
  49. package/src/base-client/components/his/XSimpleTable/XSimpleTable.vue +443 -44
  50. package/src/base-client/components/his/XTimeSelect/XTimeSelect.vue +354 -354
  51. package/src/base-client/components/his/XTitle/XTitle.vue +314 -314
  52. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +341 -341
  53. package/src/base-client/components/his/threeTestOrders/editor.vue +113 -113
  54. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  55. package/src/base-client/plugins/Config.js +19 -19
  56. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  57. package/src/components/Charts/Bar.vue +62 -62
  58. package/src/components/Charts/ChartCard.vue +134 -134
  59. package/src/components/Charts/Liquid.vue +67 -67
  60. package/src/components/Charts/MiniArea.vue +39 -39
  61. package/src/components/Charts/MiniBar.vue +39 -39
  62. package/src/components/Charts/MiniProgress.vue +75 -75
  63. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  64. package/src/components/Charts/Radar.vue +68 -68
  65. package/src/components/Charts/RankList.vue +77 -77
  66. package/src/components/Charts/TagCloud.vue +113 -113
  67. package/src/components/Charts/TransferBar.vue +64 -64
  68. package/src/components/Charts/Trend.vue +82 -82
  69. package/src/components/Charts/chart.less +12 -12
  70. package/src/components/Charts/smooth.area.less +13 -13
  71. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  72. package/src/components/NumberInfo/index.js +3 -3
  73. package/src/components/NumberInfo/index.less +54 -54
  74. package/src/components/NumberInfo/index.md +43 -43
  75. package/src/components/card/ChartCard.vue +79 -79
  76. package/src/components/chart/Bar.vue +60 -60
  77. package/src/components/chart/MiniArea.vue +67 -67
  78. package/src/components/chart/MiniBar.vue +59 -59
  79. package/src/components/chart/MiniProgress.vue +57 -57
  80. package/src/components/chart/Radar.vue +80 -80
  81. package/src/components/chart/RankingList.vue +60 -60
  82. package/src/components/chart/Trend.vue +79 -79
  83. package/src/components/chart/index.less +9 -9
  84. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  85. package/src/components/input/IInput.vue +66 -66
  86. package/src/components/menu/SideMenu.vue +75 -75
  87. package/src/components/menu/menu.js +273 -273
  88. package/src/components/tool/AStepItem.vue +60 -60
  89. package/src/layouts/CommonLayout.vue +56 -56
  90. package/src/layouts/header/HeaderNotice.vue +177 -177
  91. package/src/lib.js +1 -1
  92. package/src/mock/extend/index.js +84 -84
  93. package/src/mock/goods/index.js +108 -108
  94. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  95. package/src/pages/system/dictionary/index.vue +44 -44
  96. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  97. package/src/pages/system/monitor/operLog/index.vue +37 -37
  98. package/src/pages/userInfoDetailManage/ExceptionRecordQuery/index.vue +45 -45
  99. package/src/services/api/cas.js +79 -79
  100. package/src/store/modules/setting.js +119 -119
  101. package/src/utils/authority-utils.js +85 -85
  102. package/src/utils/errorCode.js +6 -6
  103. package/src-base-client/components/common/HIS/HForm/HForm.vue +347 -0
  104. package/src-base-client/components/common/XCollapse/XCollapse.vue +0 -0
  105. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,322 +1,322 @@
1
- # XDescriptionsGroup
2
-
3
- 动态Descriptions分组控件,根据JSON配置动态生成Descriptions,支持多种字段函数控制显示、样式和格式化。
4
-
5
- ## 何时使用
6
-
7
- 当需要一个动态生成的、支持条件显示、自定义样式和数据格式化的Descriptions时
8
-
9
- ## 引用方式
10
-
11
- ```javascript
12
- import XDescriptionsGroup from '@vue2-client/base-client/components/common/XDescriptions/XDescriptionsGroup'
13
-
14
- export default {
15
- components: {
16
- XDescriptionsGroup
17
- }
18
- }
19
- ```
20
-
21
- ## API
22
-
23
- | 参数 | 说明 | 类型 | 默认值 |
24
- |-----------------|-------------|--------|------|
25
- | data | 业务数据 | Object | {} |
26
- | configName | 配置文件名 | String | '' |
27
- | serviceName | 配置所属命名空间 | String | process.env.VUE_APP_SYSTEM_NAME |
28
-
29
- ## 配置格式
30
-
31
- ### 配置结构
32
-
33
- ```javascript
34
- [
35
- {
36
- "name": "分组名称",
37
- "type": "normal", // 分组类型:normal/array(可选,默认normal)
38
- "key": "dataKey", // 数据key(数组类型时必需)
39
- "fields": [
40
- {
41
- "key": "字段key",
42
- "name": "字段显示名称",
43
- "span": 2, // 列宽(可选,默认1)
44
- "showIf": "(data, field) => ...", // 条件显示函数(可选)
45
- "styleFunc": "(value, data, field) => ...", // 样式函数(可选)
46
- "formatFunc": "(value, data, field) => ...", // 格式化函数(可选)
47
- "requireFunc": "(data, field) => ..." // 必填标记函数(可选)
48
- }
49
- ]
50
- }
51
- ]
52
- ```
53
-
54
- ### 全局配置说明
55
-
56
- #### column - 列数控制
57
-
58
- - **作用**: 控制每行显示的列数
59
- - **类型**: `Number`
60
- - **默认值**: `3`
61
- - **示例**: `"column": 2` 表示每行显示 2 列
62
-
63
- #### getRealData - 数据处理方式
64
-
65
- - **作用**: 是否使用 `getRealKeyData` 方法处理数据
66
- - **类型**: `Boolean`
67
- - **默认值**: `false`
68
- - **示例**: `"getRealData": true` 启用数据处理
69
-
70
- #### tabMode - 显示模式
71
-
72
- - **作用**: 控制组件的显示模式
73
- - **类型**: `String`
74
- - **可选值**: `'left' | 'top' | 'none'`
75
- - **默认值**: `'left'`
76
- - **示例**: `"tabMode": "top"` 使用顶部横向导航
77
-
78
- ### 分组类型说明
79
-
80
- #### normal - 普通分组(默认)
81
-
82
- ```javascript
83
- [
84
- {
85
- "name": "基本信息",
86
- "type": "normal",
87
- "fields": [
88
- {
89
- "key": "f_name",
90
- "name": "设备名称"
91
- }
92
- ]
93
- }
94
- ]
95
- ```
96
-
97
- #### array - 数组分组
98
-
99
- 用于处理数组类型数据,会为每个数组项生成一个子描述:
100
-
101
- ```javascript
102
- [
103
- {
104
- "name": "设备列表",
105
- "type": "array",
106
- "key": "devices",
107
- "fields": [
108
- {
109
- "key": "f_name",
110
- "name": "设备名称"
111
- },
112
- {
113
- "key": "f_status",
114
- "name": "设备状态"
115
- }
116
- ]
117
- }
118
- ]
119
- ```
120
-
121
- ### 字段属性说明
122
-
123
- #### span - 列宽控制
124
-
125
- - **作用**: 控制字段占用的列数
126
- - **类型**: `Number`
127
- - **默认值**: `1`
128
- - **示例**: `"span": 2` 表示该字段占用 2 列宽度
129
-
130
- ### 字段函数说明
131
-
132
- #### 1. showIf - 条件显示函数
133
-
134
- - **作用**: 控制字段是否显示
135
- - **参数**: `(data, field)`
136
- - **返回值**: `boolean`
137
- - **示例**: `"showIf": "(data, field) => data.amount > 1000"`
138
-
139
- #### 2. styleFunc - 样式函数
140
-
141
- - **作用**: 设置字段内容的样式
142
- - **参数**: `(value, data, field)`
143
- - **返回值**: `Object` 样式对象,如 `{color: 'red'}`
144
- - **示例**: `"styleFunc": "(value, data, field) => ({ color: value > 0 ? 'green' : 'red' })"`
145
-
146
- #### 3. formatFunc - 格式化函数
147
-
148
- - **作用**: 自定义字段值的显示格式
149
- - **参数**: `(value, data, field)`
150
- - **返回值**: `String` 格式化后的字符串
151
- - **示例**: `"formatFunc": "(value, data, field) => '¥' + value.toLocaleString()"`
152
-
153
- #### 4. requireFunc - 必填标记函数
154
-
155
- - **作用**: 在字段标题后显示红色星号
156
- - **参数**: `(data, field)`
157
- - **返回值**: `boolean`
158
- - **示例**: `"requireFunc": "(data, field) => data.type === 'important'"`
159
-
160
- ## 完整配置示例
161
-
162
- ### 普通分组配置示例
163
-
164
- ```javascript
165
- // 配置文件:deviceInfo.json
166
- [
167
- {
168
- "name": "基本信息",
169
- "fields": [
170
- {
171
- "key": "f_name",
172
- "name": "设备名称",
173
- "span": 2,
174
- "requireFunc": "true"
175
- },
176
- {
177
- "key": "f_status",
178
- "name": "状态",
179
- "showIf": "(data, field) => data.f_status",
180
- "styleFunc": "(value, data, field) => ({ color: value === '正常' ? 'green' : 'red' })"
181
- }
182
- ]
183
- },
184
- {
185
- "name": "财务信息",
186
- "fields": [
187
- {
188
- "key": "f_amount",
189
- "name": "金额",
190
- "span": 2,
191
- "showIf": "(data, field) => data.f_amount > 0",
192
- "styleFunc": "(value, data, field) => ({ color: value > 5000 ? 'red' : 'green', fontWeight: 'bold' })",
193
- "formatFunc": "(value, data, field) => '¥' + Number(value).toLocaleString()",
194
- "requireFunc": "(data, field) => data.f_amount > 1000"
195
- },
196
- {
197
- "key": "f_phone",
198
- "name": "联系电话",
199
- "formatFunc": "(value, data, field) => value ? value.replace(/(\\d{3})\\d{4}(\\d{4})/, '$1****$2') : '--'"
200
- }
201
- ]
202
- }
203
- ]
204
- ```
205
-
206
- ### 数组分组配置示例
207
-
208
- ```javascript
209
- // 配置文件:deviceList.json
210
- [
211
- {
212
- "name": "设备列表",
213
- "type": "array",
214
- "key": "devices",
215
- "fields": [
216
- {
217
- "key": "f_name",
218
- "name": "设备名称",
219
- "styleFunc": "(value, data, field) => ({ fontWeight: 'bold' })"
220
- },
221
- {
222
- "key": "f_status",
223
- "name": "状态",
224
- "styleFunc": "(value, data, field) => ({ color: value === '在线' ? 'green' : 'gray' })"
225
- },
226
- {
227
- "key": "f_amount",
228
- "name": "金额",
229
- "formatFunc": "(value, data, field) => value ? '¥' + value : '--'"
230
- }
231
- ]
232
- }
233
- ]
234
- ```
235
-
236
- ## 使用示例
237
-
238
- ### 基础使用
239
-
240
- ```vue
241
- <template>
242
- <x-descriptions-group
243
- :data="deviceData"
244
- configName="deviceInfo">
245
- </x-descriptions-group>
246
- </template>
247
-
248
- <script>
249
- import XDescriptionsGroup from '@vue2-client/base-client/components/common/XDescriptions/XDescriptionsGroup'
250
-
251
- export default {
252
- components: {
253
- XDescriptionsGroup
254
- },
255
- data () {
256
- return {
257
- deviceData: {
258
- f_name: '智能水表001',
259
- f_status: '正常',
260
- f_amount: 15000,
261
- f_phone: '13812345678'
262
- }
263
- }
264
- }
265
- }
266
- </script>
267
- ```
268
-
269
- ### 高级用法 - 动态配置
270
-
271
- ```vue
272
- <template>
273
- <x-descriptions-group
274
- :data="formData"
275
- :configName="configName"
276
- serviceName="customService">
277
- </x-descriptions-group>
278
- </template>
279
-
280
- <script>
281
- export default {
282
- data () {
283
- return {
284
- configName: 'dynamicForm',
285
- formData: {
286
- // 根据业务需求动态构建数据
287
- }
288
- }
289
- },
290
- created() {
291
- // 根据用户权限动态选择配置
292
- this.configName = this.isAdmin ? 'adminForm' : 'userForm'
293
- }
294
- }
295
- </script>
296
- ```
297
-
298
- ## 注意事项
299
-
300
- 1. **函数格式**: 所有函数字符串必须使用箭头函数格式,如 `"(data, field) => data.amount > 1000"`
301
- 2. **错误处理**: 函数执行错误时会输出警告日志,不会影响组件正常渲染
302
- 3. **性能考虑**: 函数会在每次渲染时执行,避免在函数中编写耗时操作
303
- 4. **样式应用**: styleFunc 通过内联样式应用到字段内容上,优先级低于CSS类
304
- 5. **兼容性**: 保持向后兼容,不配置函数的字段按原样显示
305
-
306
- ## 支持的显示模式
307
-
308
- 组件支持三种 tab 显示模式,通过配置文件设置:
309
-
310
- - `left`: 左侧垂直导航(默认)
311
- - `top`: 顶部横向导航
312
- - `none`: 无导航,直接显示所有内容
313
-
314
- 配置示例:
315
-
316
- ```javascript
317
- {
318
- "tabMode": "top",
319
- "column": 2,
320
- "groups": [...]
321
- }
322
- ```
1
+ # XDescriptionsGroup
2
+
3
+ 动态Descriptions分组控件,根据JSON配置动态生成Descriptions,支持多种字段函数控制显示、样式和格式化。
4
+
5
+ ## 何时使用
6
+
7
+ 当需要一个动态生成的、支持条件显示、自定义样式和数据格式化的Descriptions时
8
+
9
+ ## 引用方式
10
+
11
+ ```javascript
12
+ import XDescriptionsGroup from '@vue2-client/base-client/components/common/XDescriptions/XDescriptionsGroup'
13
+
14
+ export default {
15
+ components: {
16
+ XDescriptionsGroup
17
+ }
18
+ }
19
+ ```
20
+
21
+ ## API
22
+
23
+ | 参数 | 说明 | 类型 | 默认值 |
24
+ |-----------------|-------------|--------|------|
25
+ | data | 业务数据 | Object | {} |
26
+ | configName | 配置文件名 | String | '' |
27
+ | serviceName | 配置所属命名空间 | String | process.env.VUE_APP_SYSTEM_NAME |
28
+
29
+ ## 配置格式
30
+
31
+ ### 配置结构
32
+
33
+ ```javascript
34
+ [
35
+ {
36
+ "name": "分组名称",
37
+ "type": "normal", // 分组类型:normal/array(可选,默认normal)
38
+ "key": "dataKey", // 数据key(数组类型时必需)
39
+ "fields": [
40
+ {
41
+ "key": "字段key",
42
+ "name": "字段显示名称",
43
+ "span": 2, // 列宽(可选,默认1)
44
+ "showIf": "(data, field) => ...", // 条件显示函数(可选)
45
+ "styleFunc": "(value, data, field) => ...", // 样式函数(可选)
46
+ "formatFunc": "(value, data, field) => ...", // 格式化函数(可选)
47
+ "requireFunc": "(data, field) => ..." // 必填标记函数(可选)
48
+ }
49
+ ]
50
+ }
51
+ ]
52
+ ```
53
+
54
+ ### 全局配置说明
55
+
56
+ #### column - 列数控制
57
+
58
+ - **作用**: 控制每行显示的列数
59
+ - **类型**: `Number`
60
+ - **默认值**: `3`
61
+ - **示例**: `"column": 2` 表示每行显示 2 列
62
+
63
+ #### getRealData - 数据处理方式
64
+
65
+ - **作用**: 是否使用 `getRealKeyData` 方法处理数据
66
+ - **类型**: `Boolean`
67
+ - **默认值**: `false`
68
+ - **示例**: `"getRealData": true` 启用数据处理
69
+
70
+ #### tabMode - 显示模式
71
+
72
+ - **作用**: 控制组件的显示模式
73
+ - **类型**: `String`
74
+ - **可选值**: `'left' | 'top' | 'none'`
75
+ - **默认值**: `'left'`
76
+ - **示例**: `"tabMode": "top"` 使用顶部横向导航
77
+
78
+ ### 分组类型说明
79
+
80
+ #### normal - 普通分组(默认)
81
+
82
+ ```javascript
83
+ [
84
+ {
85
+ "name": "基本信息",
86
+ "type": "normal",
87
+ "fields": [
88
+ {
89
+ "key": "f_name",
90
+ "name": "设备名称"
91
+ }
92
+ ]
93
+ }
94
+ ]
95
+ ```
96
+
97
+ #### array - 数组分组
98
+
99
+ 用于处理数组类型数据,会为每个数组项生成一个子描述:
100
+
101
+ ```javascript
102
+ [
103
+ {
104
+ "name": "设备列表",
105
+ "type": "array",
106
+ "key": "devices",
107
+ "fields": [
108
+ {
109
+ "key": "f_name",
110
+ "name": "设备名称"
111
+ },
112
+ {
113
+ "key": "f_status",
114
+ "name": "设备状态"
115
+ }
116
+ ]
117
+ }
118
+ ]
119
+ ```
120
+
121
+ ### 字段属性说明
122
+
123
+ #### span - 列宽控制
124
+
125
+ - **作用**: 控制字段占用的列数
126
+ - **类型**: `Number`
127
+ - **默认值**: `1`
128
+ - **示例**: `"span": 2` 表示该字段占用 2 列宽度
129
+
130
+ ### 字段函数说明
131
+
132
+ #### 1. showIf - 条件显示函数
133
+
134
+ - **作用**: 控制字段是否显示
135
+ - **参数**: `(data, field)`
136
+ - **返回值**: `boolean`
137
+ - **示例**: `"showIf": "(data, field) => data.amount > 1000"`
138
+
139
+ #### 2. styleFunc - 样式函数
140
+
141
+ - **作用**: 设置字段内容的样式
142
+ - **参数**: `(value, data, field)`
143
+ - **返回值**: `Object` 样式对象,如 `{color: 'red'}`
144
+ - **示例**: `"styleFunc": "(value, data, field) => ({ color: value > 0 ? 'green' : 'red' })"`
145
+
146
+ #### 3. formatFunc - 格式化函数
147
+
148
+ - **作用**: 自定义字段值的显示格式
149
+ - **参数**: `(value, data, field)`
150
+ - **返回值**: `String` 格式化后的字符串
151
+ - **示例**: `"formatFunc": "(value, data, field) => '¥' + value.toLocaleString()"`
152
+
153
+ #### 4. requireFunc - 必填标记函数
154
+
155
+ - **作用**: 在字段标题后显示红色星号
156
+ - **参数**: `(data, field)`
157
+ - **返回值**: `boolean`
158
+ - **示例**: `"requireFunc": "(data, field) => data.type === 'important'"`
159
+
160
+ ## 完整配置示例
161
+
162
+ ### 普通分组配置示例
163
+
164
+ ```javascript
165
+ // 配置文件:deviceInfo.json
166
+ [
167
+ {
168
+ "name": "基本信息",
169
+ "fields": [
170
+ {
171
+ "key": "f_name",
172
+ "name": "设备名称",
173
+ "span": 2,
174
+ "requireFunc": "true"
175
+ },
176
+ {
177
+ "key": "f_status",
178
+ "name": "状态",
179
+ "showIf": "(data, field) => data.f_status",
180
+ "styleFunc": "(value, data, field) => ({ color: value === '正常' ? 'green' : 'red' })"
181
+ }
182
+ ]
183
+ },
184
+ {
185
+ "name": "财务信息",
186
+ "fields": [
187
+ {
188
+ "key": "f_amount",
189
+ "name": "金额",
190
+ "span": 2,
191
+ "showIf": "(data, field) => data.f_amount > 0",
192
+ "styleFunc": "(value, data, field) => ({ color: value > 5000 ? 'red' : 'green', fontWeight: 'bold' })",
193
+ "formatFunc": "(value, data, field) => '¥' + Number(value).toLocaleString()",
194
+ "requireFunc": "(data, field) => data.f_amount > 1000"
195
+ },
196
+ {
197
+ "key": "f_phone",
198
+ "name": "联系电话",
199
+ "formatFunc": "(value, data, field) => value ? value.replace(/(\\d{3})\\d{4}(\\d{4})/, '$1****$2') : '--'"
200
+ }
201
+ ]
202
+ }
203
+ ]
204
+ ```
205
+
206
+ ### 数组分组配置示例
207
+
208
+ ```javascript
209
+ // 配置文件:deviceList.json
210
+ [
211
+ {
212
+ "name": "设备列表",
213
+ "type": "array",
214
+ "key": "devices",
215
+ "fields": [
216
+ {
217
+ "key": "f_name",
218
+ "name": "设备名称",
219
+ "styleFunc": "(value, data, field) => ({ fontWeight: 'bold' })"
220
+ },
221
+ {
222
+ "key": "f_status",
223
+ "name": "状态",
224
+ "styleFunc": "(value, data, field) => ({ color: value === '在线' ? 'green' : 'gray' })"
225
+ },
226
+ {
227
+ "key": "f_amount",
228
+ "name": "金额",
229
+ "formatFunc": "(value, data, field) => value ? '¥' + value : '--'"
230
+ }
231
+ ]
232
+ }
233
+ ]
234
+ ```
235
+
236
+ ## 使用示例
237
+
238
+ ### 基础使用
239
+
240
+ ```vue
241
+ <template>
242
+ <x-descriptions-group
243
+ :data="deviceData"
244
+ configName="deviceInfo">
245
+ </x-descriptions-group>
246
+ </template>
247
+
248
+ <script>
249
+ import XDescriptionsGroup from '@vue2-client/base-client/components/common/XDescriptions/XDescriptionsGroup'
250
+
251
+ export default {
252
+ components: {
253
+ XDescriptionsGroup
254
+ },
255
+ data () {
256
+ return {
257
+ deviceData: {
258
+ f_name: '智能水表001',
259
+ f_status: '正常',
260
+ f_amount: 15000,
261
+ f_phone: '13812345678'
262
+ }
263
+ }
264
+ }
265
+ }
266
+ </script>
267
+ ```
268
+
269
+ ### 高级用法 - 动态配置
270
+
271
+ ```vue
272
+ <template>
273
+ <x-descriptions-group
274
+ :data="formData"
275
+ :configName="configName"
276
+ serviceName="customService">
277
+ </x-descriptions-group>
278
+ </template>
279
+
280
+ <script>
281
+ export default {
282
+ data () {
283
+ return {
284
+ configName: 'dynamicForm',
285
+ formData: {
286
+ // 根据业务需求动态构建数据
287
+ }
288
+ }
289
+ },
290
+ created() {
291
+ // 根据用户权限动态选择配置
292
+ this.configName = this.isAdmin ? 'adminForm' : 'userForm'
293
+ }
294
+ }
295
+ </script>
296
+ ```
297
+
298
+ ## 注意事项
299
+
300
+ 1. **函数格式**: 所有函数字符串必须使用箭头函数格式,如 `"(data, field) => data.amount > 1000"`
301
+ 2. **错误处理**: 函数执行错误时会输出警告日志,不会影响组件正常渲染
302
+ 3. **性能考虑**: 函数会在每次渲染时执行,避免在函数中编写耗时操作
303
+ 4. **样式应用**: styleFunc 通过内联样式应用到字段内容上,优先级低于CSS类
304
+ 5. **兼容性**: 保持向后兼容,不配置函数的字段按原样显示
305
+
306
+ ## 支持的显示模式
307
+
308
+ 组件支持三种 tab 显示模式,通过配置文件设置:
309
+
310
+ - `left`: 左侧垂直导航(默认)
311
+ - `top`: 顶部横向导航
312
+ - `none`: 无导航,直接显示所有内容
313
+
314
+ 配置示例:
315
+
316
+ ```javascript
317
+ {
318
+ "tabMode": "top",
319
+ "column": 2,
320
+ "groups": [...]
321
+ }
322
+ ```