vue2-client 1.12.103 → 1.13.2

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.
package/package.json CHANGED
@@ -1,107 +1,107 @@
1
- {
2
- "name": "vue2-client",
3
- "version": "1.12.103",
4
- "private": false,
5
- "scripts": {
6
- "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
7
- "serve:gaslink": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode gaslink",
8
- "serve:revenue": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode revenue",
9
- "serve:liuli": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode liuli",
10
- "serve:scada": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode scada",
11
- "serve:iot": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode iot",
12
- "serve:his": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode his",
13
- "mac-serve": "vue-cli-service serve --no-eslint --mode his",
14
- "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
15
- "test:unit": "vue-cli-service test:unit",
16
- "lint": "vue-cli-service lint",
17
- "build:preview": "vue-cli-service build --mode preview",
18
- "lint:nofix": "vue-cli-service lint --no-fix",
19
- "test": "jest"
20
- },
21
- "dependencies": {
22
- "@afwenming123/vue-easy-tree": "^1.0.1",
23
- "@afwenming123/vue-plugin-hiprint": "^0.0.70",
24
- "@amap/amap-jsapi-loader": "^1.0.1",
25
- "@antv/data-set": "^0.11.8",
26
- "@antv/g2plot": "^2.4.31",
27
- "@hufe921/canvas-editor": "^0.9.49",
28
- "@microsoft/fetch-event-source": "^2.0.1",
29
- "@vue/babel-preset-jsx": "^1.4.0",
30
- "animate.css": "^4.1.1",
31
- "ant-design-vue": "^1.7.8",
32
- "axios": "^0.27.2",
33
- "clipboard": "^2.0.11",
34
- "core-js": "^3.33.0",
35
- "crypto-js": "^4.1.1",
36
- "date-fns": "^2.29.3",
37
- "default-passive-events": "^2.0.0",
38
- "dotenv": "^16.3.1",
39
- "echarts": "^5.5.0",
40
- "enquire.js": "^2.1.6",
41
- "file-saver": "^2.0.5",
42
- "highlight.js": "^11.7.0",
43
- "html2canvas": "^1.4.1",
44
- "js-base64": "^3.7.5",
45
- "js-cookie": "^2.2.1",
46
- "jsencrypt": "^3.3.2",
47
- "jspdf": "^2.5.1",
48
- "lodash.clonedeep": "^4.5.0",
49
- "lodash.debounce": "^4",
50
- "lodash.get": "^4.4.2",
51
- "marked": "^4",
52
- "mockjs": "^1.1.0",
53
- "nprogress": "^0.2.0",
54
- "qs": "^6.11.2",
55
- "regenerator-runtime": "^0.14.0",
56
- "videojs-contrib-hls": "^5.15.0",
57
- "viser-vue": "^2.4.8",
58
- "vue": "^2.7.14",
59
- "vue-codemirror": "4.0.6",
60
- "vue-draggable-resizable": "^2",
61
- "vue-i18n": "^8.28.2",
62
- "vue-json-viewer": "^2.2.22",
63
- "vue-router": "^3.6.5",
64
- "vue-video-player": "^5.0.2",
65
- "vue-virtual-scroller": "^1.1.2",
66
- "vuedraggable": "^2.24.3",
67
- "vuex": "^3.6.2",
68
- "xlsx": "0.18.5"
69
- },
70
- "devDependencies": {
71
- "@ant-design/colors": "^7.0.0",
72
- "@babel/core": "^7.22.20",
73
- "@babel/eslint-parser": "^7.22.15",
74
- "@babel/preset-env": "^7.22.20",
75
- "@vue/cli-plugin-babel": "^5.0.8",
76
- "@vue/cli-plugin-eslint": "^5.0.8",
77
- "@vue/cli-service": "^5.0.8",
78
- "@vue/eslint-config-standard": "^8.0.1",
79
- "@vue/test-utils": "^1.3.6",
80
- "babel-plugin-transform-remove-console": "^6.9.4",
81
- "compression-webpack-plugin": "^10.0.0",
82
- "css-minimizer-webpack-plugin": "^5.0.1",
83
- "deepmerge": "^4.3.1",
84
- "eslint": "^8.51.0",
85
- "eslint-plugin-vue": "^9.17.0",
86
- "fast-deep-equal": "^3.1.3",
87
- "ignore-loader": "^0.1.2",
88
- "jest": "^29.7.0",
89
- "jest-environment-jsdom": "^29.7.0",
90
- "jest-transform-stub": "^2.0.0",
91
- "less-loader": "^6.2.0",
92
- "script-loader": "^0.7.2",
93
- "style-resources-loader": "^1.5.0",
94
- "vue-cli-plugin-style-resources-loader": "^0.1.5",
95
- "vue-jest": "^4.0.1",
96
- "vue-template-compiler": "^2.7.14",
97
- "webpack": "^5.88.2",
98
- "webpack-theme-color-replacer": "^1.4.7",
99
- "whatwg-fetch": "^3.6.19"
100
- },
101
- "browserslist": [
102
- "> 1%",
103
- "last 2 versions",
104
- "not dead",
105
- "not ie 11"
106
- ]
107
- }
1
+ {
2
+ "name": "vue2-client",
3
+ "version": "1.13.2",
4
+ "private": false,
5
+ "scripts": {
6
+ "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
7
+ "serve:gaslink": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode gaslink",
8
+ "serve:revenue": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode revenue",
9
+ "serve:liuli": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode liuli",
10
+ "serve:scada": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode scada",
11
+ "serve:iot": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode iot",
12
+ "serve:his": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint --mode his",
13
+ "mac-serve": "vue-cli-service serve --no-eslint --mode his",
14
+ "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
15
+ "test:unit": "vue-cli-service test:unit",
16
+ "lint": "vue-cli-service lint",
17
+ "build:preview": "vue-cli-service build --mode preview",
18
+ "lint:nofix": "vue-cli-service lint --no-fix",
19
+ "test": "jest"
20
+ },
21
+ "dependencies": {
22
+ "@afwenming123/vue-easy-tree": "^1.0.1",
23
+ "@afwenming123/vue-plugin-hiprint": "^0.0.70",
24
+ "@amap/amap-jsapi-loader": "^1.0.1",
25
+ "@antv/data-set": "^0.11.8",
26
+ "@antv/g2plot": "^2.4.31",
27
+ "@hufe921/canvas-editor": "^0.9.49",
28
+ "@microsoft/fetch-event-source": "^2.0.1",
29
+ "@vue/babel-preset-jsx": "^1.4.0",
30
+ "animate.css": "^4.1.1",
31
+ "ant-design-vue": "^1.7.8",
32
+ "axios": "^0.27.2",
33
+ "clipboard": "^2.0.11",
34
+ "core-js": "^3.33.0",
35
+ "crypto-js": "^4.1.1",
36
+ "date-fns": "^2.29.3",
37
+ "default-passive-events": "^2.0.0",
38
+ "dotenv": "^16.3.1",
39
+ "echarts": "^5.5.0",
40
+ "enquire.js": "^2.1.6",
41
+ "file-saver": "^2.0.5",
42
+ "highlight.js": "^11.7.0",
43
+ "html2canvas": "^1.4.1",
44
+ "js-base64": "^3.7.5",
45
+ "js-cookie": "^2.2.1",
46
+ "jsencrypt": "^3.3.2",
47
+ "jspdf": "^2.5.1",
48
+ "lodash.clonedeep": "^4.5.0",
49
+ "lodash.debounce": "^4",
50
+ "lodash.get": "^4.4.2",
51
+ "marked": "^4",
52
+ "mockjs": "^1.1.0",
53
+ "nprogress": "^0.2.0",
54
+ "qs": "^6.11.2",
55
+ "regenerator-runtime": "^0.14.0",
56
+ "videojs-contrib-hls": "^5.15.0",
57
+ "viser-vue": "^2.4.8",
58
+ "vue": "^2.7.14",
59
+ "vue-codemirror": "4.0.6",
60
+ "vue-draggable-resizable": "^2",
61
+ "vue-i18n": "^8.28.2",
62
+ "vue-json-viewer": "^2.2.22",
63
+ "vue-router": "^3.6.5",
64
+ "vue-video-player": "^5.0.2",
65
+ "vue-virtual-scroller": "^1.1.2",
66
+ "vuedraggable": "^2.24.3",
67
+ "vuex": "^3.6.2",
68
+ "xlsx": "0.18.5"
69
+ },
70
+ "devDependencies": {
71
+ "@ant-design/colors": "^7.0.0",
72
+ "@babel/core": "^7.22.20",
73
+ "@babel/eslint-parser": "^7.22.15",
74
+ "@babel/preset-env": "^7.22.20",
75
+ "@vue/cli-plugin-babel": "^5.0.8",
76
+ "@vue/cli-plugin-eslint": "^5.0.8",
77
+ "@vue/cli-service": "^5.0.8",
78
+ "@vue/eslint-config-standard": "^8.0.1",
79
+ "@vue/test-utils": "^1.3.6",
80
+ "babel-plugin-transform-remove-console": "^6.9.4",
81
+ "compression-webpack-plugin": "^10.0.0",
82
+ "css-minimizer-webpack-plugin": "^5.0.1",
83
+ "deepmerge": "^4.3.1",
84
+ "eslint": "^8.51.0",
85
+ "eslint-plugin-vue": "^9.17.0",
86
+ "fast-deep-equal": "^3.1.3",
87
+ "ignore-loader": "^0.1.2",
88
+ "jest": "^29.7.0",
89
+ "jest-environment-jsdom": "^29.7.0",
90
+ "jest-transform-stub": "^2.0.0",
91
+ "less-loader": "^6.2.0",
92
+ "script-loader": "^0.7.2",
93
+ "style-resources-loader": "^1.5.0",
94
+ "vue-cli-plugin-style-resources-loader": "^0.1.5",
95
+ "vue-jest": "^4.0.1",
96
+ "vue-template-compiler": "^2.7.14",
97
+ "webpack": "^5.88.2",
98
+ "webpack-theme-color-replacer": "^1.4.7",
99
+ "whatwg-fetch": "^3.6.19"
100
+ },
101
+ "browserslist": [
102
+ "> 1%",
103
+ "last 2 versions",
104
+ "not dead",
105
+ "not ie 11"
106
+ ]
107
+ }
@@ -1,14 +1,17 @@
1
1
  <template>
2
2
  <div class="patient-info-descriptions">
3
3
  <a-descriptions
4
- :column="configurationParameters?.layout"
5
- :size="configurationParameters?.style?.size"
6
- :bordered="configurationParameters?.style?.bordered"
4
+ :column="config?.layout"
5
+ :size="config?.style?.size"
6
+ :bordered="config?.style?.bordered"
7
7
  layout="horizontal">
8
8
  <template v-if="data">
9
+ <!-- 显示前N个标签 -->
9
10
  <a-descriptions-item
10
- v-for="item in configurationParameters?.items"
11
- :key="item.field">
11
+ v-for="(item) in visibleItems"
12
+ :key="item.field"
13
+ :colon="item.colon !== false"
14
+ v-if="data[item.field] !== null && data[item.field] !== undefined">
12
15
  <template #label>
13
16
  <div :class="['label-wrapper', { 'with-avatar': item.showAvatar }]">
14
17
  <a-avatar
@@ -24,6 +27,49 @@
24
27
  {{ data[item.field] }}
25
28
  </div>
26
29
  </a-descriptions-item>
30
+
31
+ <!-- 详情按钮 -->
32
+ <a-descriptions-item v-if="hasMoreItems && !showAllItems">
33
+ <a-button
34
+ :type="config?.detailsConfig?.buttonType || 'link'"
35
+ @click="toggleDetails"
36
+ >
37
+ <a-icon type="down" />
38
+ {{ config?.detailsConfig?.buttonText || '详情' }}
39
+ </a-button>
40
+ </a-descriptions-item>
41
+
42
+ <!-- 展开后显示剩余标签 -->
43
+ <template v-if="showAllItems">
44
+ <a-descriptions-item
45
+ v-for="item in hiddenItems"
46
+ :key="item.field"
47
+ :colon="item.colon !== false"
48
+ v-if="data[item.field] !== null && data[item.field] !== undefined">
49
+ <template #label>
50
+ <div :class="['label-wrapper', { 'with-avatar': item.showAvatar }]">
51
+ <a-avatar
52
+ v-if="item.showAvatar"
53
+ :size="item.avatar.size"
54
+ :icon="item.avatar.icon"
55
+ :style="{ background: item.avatar.background }"
56
+ />
57
+ <span class="label-text">{{ item.label }}</span>
58
+ </div>
59
+ </template>
60
+ <div class="content-wrapper">
61
+ {{ data[item.field] }}
62
+ </div>
63
+ </a-descriptions-item>
64
+
65
+ <!-- 收起按钮 -->
66
+ <a-descriptions-item>
67
+ <a-button type="link" @click="toggleDetails">
68
+ <a-icon type="up" />
69
+ 收起
70
+ </a-button>
71
+ </a-descriptions-item>
72
+ </template>
27
73
  </template>
28
74
  </a-descriptions>
29
75
  </div>
@@ -36,7 +82,8 @@ export default {
36
82
  data () {
37
83
  return {
38
84
  data: null,
39
- configurationParameters: null
85
+ config: null,
86
+ showAllItems: false // 控制是否显示所有标签
40
87
  }
41
88
  },
42
89
  props: {
@@ -51,20 +98,70 @@ export default {
51
98
  }
52
99
  }
53
100
  },
101
+ computed: {
102
+ // 获取详情按钮应该显示在第几个标签后
103
+ detailsAfterIndex () {
104
+ // 只有明确配置了detailsConfig且设置了showAfterIndex时才使用配置值
105
+ // 否则返回一个很大的值,使所有字段都显示
106
+ return this.config?.detailsConfig?.showAfterIndex || 999
107
+ },
108
+ // 判断是否有更多标签需要显示
109
+ hasMoreItems () {
110
+ // 只有明确配置了detailsConfig时才显示详情按钮
111
+ if (!this.config?.detailsConfig) return false
112
+ // 如果没有数据或没有配置项,不显示详情按钮
113
+ if (!this.data || !this.config?.items || !Array.isArray(this.config.items)) return false
114
+ // 获取隐藏项索引
115
+ const hiddenStartIndex = this.detailsAfterIndex || 0
116
+ if (hiddenStartIndex >= this.config.items.length) return false
117
+ // 检查隐藏的项中是否有非空值
118
+ for (let i = hiddenStartIndex; i < this.config.items.length; i++) {
119
+ const item = this.config.items[i]
120
+ if (item && item.field && this.data[item.field] !== null && this.data[item.field] !== undefined) {
121
+ return true
122
+ }
123
+ }
124
+ return false
125
+ },
126
+ // 获取应该显示的标签
127
+ visibleItems () {
128
+ if (!this.config?.items) return []
129
+ // 如果没有配置detailsConfig或者已经展开,则显示所有项
130
+ if (!this.config?.detailsConfig || this.showAllItems) return this.config.items
131
+ return this.config.items.slice(0, this.detailsAfterIndex)
132
+ },
133
+ // 获取隐藏的标签
134
+ hiddenItems () {
135
+ if (!this.config?.items) return []
136
+ if (!this.config?.detailsConfig) return [] // 如果没有配置detailsConfig,没有隐藏的项
137
+ return this.config.items.slice(this.detailsAfterIndex)
138
+ },
139
+ // 获取有效的visible项目数量(排除null值)
140
+ validVisibleItemsCount () {
141
+ if (!this.config?.items || !this.data) return 0
142
+ const items = this.visibleItems
143
+ return items.filter(item => this.data[item.field] !== null && this.data[item.field] !== undefined).length
144
+ }
145
+ },
54
146
  created () {
55
147
  this.getData(this.queryParamsName)
56
148
  },
57
149
  methods: {
58
150
  async getData (data) {
59
151
  this.data = null
152
+ this.showAllItems = false // 重置展开状态
60
153
  getConfigByName(data, 'af-his', res => {
61
- this.configurationParameters = res
62
- console.log(this.configurationParameters)
154
+ this.config = res
155
+ console.log(this.config)
63
156
  const parameter = { ...res.parameter, ...this.parameter }
64
157
  runLogic(res.logicName, parameter, 'af-his').then(result => {
65
158
  this.data = result
66
159
  })
67
160
  })
161
+ },
162
+ // 切换详情显示状态
163
+ toggleDetails () {
164
+ this.showAllItems = !this.showAllItems
68
165
  }
69
166
  },
70
167
  watch: {
@@ -138,14 +235,14 @@ export default {
138
235
  color: rgba(0, 0, 0, 0.65);
139
236
  padding: 0 !important;
140
237
  margin: 0 !important;
141
- font-size: v-bind('configurationParameters?.style?.fontSize');
238
+ font-size: v-bind('config?.style?.fontSize');
142
239
  display: inline-flex !important;
143
240
  align-items: center !important;
144
241
  white-space: nowrap !important;
145
242
  }
146
243
 
147
244
  :deep(.ant-descriptions-item-content) {
148
- font-size: v-bind('configurationParameters?.style?.fontSize');
245
+ font-size: v-bind('config?.style?.fontSize');
149
246
  display: inline-flex !important;
150
247
  align-items: center !important;
151
248
  padding: 0 !important;
@@ -176,4 +273,16 @@ export default {
176
273
  background-color: rgba(0, 0, 0, 0.02);
177
274
  border-radius: 4px;
178
275
  }
276
+
277
+ /* 添加详情按钮样式 */
278
+ :deep(.ant-btn-link) {
279
+ padding: 0;
280
+ height: auto;
281
+ line-height: 1;
282
+ }
283
+
284
+ :deep(.ant-btn-link:hover) {
285
+ color: #1890ff;
286
+ background: transparent;
287
+ }
179
288
  </style>
@@ -0,0 +1,232 @@
1
+ # XHDescriptions 患者信息描述组件
2
+
3
+ ## 组件介绍
4
+
5
+ `XHDescriptions` 是一个基于 Ant Design Vue 的描述列表组件封装,专用于显示患者基本信息。该组件具有以下特点:
6
+
7
+ - 支持响应式布局,在不同屏幕尺寸下自动调整列数
8
+ - 支持折叠/展开功能,控制信息的显示量
9
+ - 支持自定义样式和头像
10
+ - 自动隐藏值为 null 或 undefined 的字段
11
+
12
+ ## 配置说明
13
+
14
+ 组件通过 JSON 配置文件进行配置,主要包含以下部分:
15
+
16
+ ### 1. 布局配置 (layout)
17
+
18
+ ```json
19
+ "layout": {
20
+ "xl": 8,
21
+ "md": 3,
22
+ "sm": 2,
23
+ "lg": 4,
24
+ "xs": 1,
25
+ "xxl": 8
26
+ }
27
+ ```
28
+
29
+ - 用于设置在不同屏幕尺寸下的列数
30
+ - 键名对应不同的屏幕尺寸(xs, sm, md, lg, xl, xxl)
31
+ - 值为每行显示的列数
32
+
33
+ ### 2. 样式配置 (style)
34
+
35
+ ```json
36
+ "style": {
37
+ "size": "small",
38
+ "fontSize": "14px",
39
+ "bordered": false
40
+ }
41
+ ```
42
+
43
+ - `size`: 设置尺寸,可选值为 "default", "middle", "small"
44
+ - `fontSize`: 控制文字大小
45
+ - `bordered`: 是否显示边框
46
+
47
+ ### 3. 字段配置 (items)
48
+
49
+ ```json
50
+ "items": [
51
+ {
52
+ "field": "patientName",
53
+ "style": {
54
+ "minHeight": "24px",
55
+ "width": "120px",
56
+ "minWidth": "100px",
57
+ "height": "24px"
58
+ },
59
+ "label": "患者",
60
+ "avatar": {
61
+ "size": 20,
62
+ "background": "#5D5C5C",
63
+ "icon": "user"
64
+ },
65
+ "showAvatar": true
66
+ }
67
+ ]
68
+ ```
69
+
70
+ 每个字段可配置的属性:
71
+
72
+ - `field`: 字段名,用于从数据源获取值
73
+ - `label`: 显示的标签名
74
+ - `style`: 控制字段的样式(宽度、高度等)
75
+ - `showAvatar`: 是否显示头像
76
+ - `avatar`: 头像配置(仅当 showAvatar 为 true 时有效)
77
+ - `size`: 头像大小
78
+ - `background`: 头像背景色
79
+ - `icon`: 头像图标名称
80
+
81
+ ### 4. 详情按钮配置 (detailsConfig)
82
+
83
+ ```json
84
+ "detailsConfig": {
85
+ "buttonText": "详细",
86
+ "buttonType": "link",
87
+ "showAfterIndex": 3
88
+ }
89
+ ```
90
+
91
+ - `buttonText`: 详情按钮显示的文本
92
+ - `buttonType`: 按钮类型,可选值为 "default", "primary", "dashed", "link" 等
93
+ - `showAfterIndex`: 控制在显示多少个字段后显示详情按钮
94
+ - **重要说明**:
95
+ - 只有明确配置了 `detailsConfig` 对象时,才会启用折叠功能
96
+ - 如果没有配置 `detailsConfig`,将直接显示所有字段,不会出现详情按钮
97
+ - 如果配置了 `detailsConfig` 但字段总数少于或等于 `showAfterIndex`,则不会显示详情按钮
98
+
99
+ ### 5. 其他配置
100
+
101
+ ```json
102
+ "logicName": "patientBasicInfo",
103
+ "serverName": "af-his",
104
+ "parameter": {}
105
+ ```
106
+
107
+ - `logicName`: 用于获取数据的逻辑名称
108
+ - `serverName`: 服务名称
109
+ - `parameter`: 可选的参数对象
110
+
111
+ ## 使用示例
112
+
113
+ ```vue
114
+ <template>
115
+ <XHDescriptions queryParamsName="DescriptionsExampleConfig" />
116
+ </template>
117
+
118
+ <script>
119
+ import XHDescriptions from '@/base-client/components/his/XHDescriptions/XHDescriptions.vue'
120
+
121
+ export default {
122
+ components: {
123
+ XHDescriptions
124
+ }
125
+ }
126
+ </script>
127
+ ```
128
+
129
+ ## 特殊说明
130
+
131
+ 1. **响应式布局**:
132
+ - 组件会根据屏幕尺寸自动调整列数
133
+ - 可在 `layout` 配置中自定义不同尺寸下的列数
134
+
135
+ 2. **折叠/展开功能**:
136
+ - 折叠功能只在明确配置了 `detailsConfig` 对象时启用
137
+ - 没有配置 `detailsConfig` 时,会直接显示所有字段,不会出现详情按钮
138
+ - 配置了 `detailsConfig` 后,只显示 `showAfterIndex` 指定数量的字段,超出部分需点击详情按钮查看
139
+ - 点击详情按钮后会展开显示全部字段,可通过收起按钮恢复
140
+
141
+ 3. **空值处理**:
142
+ - 当字段值为 `null` 或 `undefined` 时,该字段不会显示
143
+ - 折叠功能会忽略值为 `null` 的字段,只有有值的隐藏字段才会触发显示详情按钮
144
+ - 这个特性可以用于根据数据动态控制字段的显示,无需修改配置
145
+
146
+ ## 配置示例
147
+
148
+ ### 启用折叠功能示例
149
+
150
+ 以下配置将启用折叠功能,只显示前3个字段,其余字段需点击"详细"按钮查看:
151
+
152
+ ```json
153
+ {
154
+ "layout": {
155
+ "xl": 8,
156
+ "md": 3,
157
+ "sm": 2,
158
+ "lg": 4,
159
+ "xs": 1,
160
+ "xxl": 8
161
+ },
162
+ "style": {
163
+ "size": "small",
164
+ "fontSize": "14px",
165
+ "bordered": false
166
+ },
167
+ "items": [
168
+ {
169
+ "field": "patientName",
170
+ "label": "患者",
171
+ "showAvatar": true,
172
+ "avatar": {
173
+ "size": 20,
174
+ "background": "#5D5C5C",
175
+ "icon": "user"
176
+ }
177
+ },
178
+ {
179
+ "field": "patientType",
180
+ "label": "类别"
181
+ },
182
+ {
183
+ "field": "diagnosisNo",
184
+ "label": "诊号"
185
+ },
186
+ {
187
+ "field": "gender",
188
+ "label": "性别"
189
+ },
190
+ {
191
+ "field": "age",
192
+ "label": "年龄"
193
+ }
194
+ // ... 更多字段
195
+ ],
196
+ "detailsConfig": {
197
+ "buttonText": "详细",
198
+ "buttonType": "link",
199
+ "showAfterIndex": 3 // 设置为3表示只显示前3个字段,其余字段点击"详细"后显示
200
+ },
201
+ "logicName": "patientBasicInfo",
202
+ "serverName": "af-his"
203
+ }
204
+ ```
205
+
206
+ ### 禁用折叠功能示例
207
+
208
+ 如果不希望使用折叠功能,希望一次性显示所有字段,只需要移除 `detailsConfig` 对象:
209
+
210
+ ```json
211
+ {
212
+ "layout": {
213
+ "xl": 8,
214
+ "md": 3,
215
+ "sm": 2,
216
+ "lg": 4,
217
+ "xs": 1,
218
+ "xxl": 8
219
+ },
220
+ "style": {
221
+ "size": "small",
222
+ "fontSize": "14px",
223
+ "bordered": false
224
+ },
225
+ "items": [
226
+ // 字段配置...
227
+ ],
228
+ "logicName": "patientBasicInfo",
229
+ "serverName": "af-his"
230
+ // 没有 detailsConfig,将直接显示所有字段
231
+ }
232
+ ```