vue2-client 1.12.103 → 1.13.1
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.
|
|
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.1",
|
|
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,16 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="patient-info-descriptions">
|
|
3
3
|
<a-descriptions
|
|
4
|
-
:column="
|
|
5
|
-
:size="
|
|
6
|
-
: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
|
|
11
|
-
:key="item.field"
|
|
11
|
+
v-for="(item) in visibleItems"
|
|
12
|
+
:key="item.field"
|
|
13
|
+
:colon="item.colon !== false">
|
|
12
14
|
<template #label>
|
|
13
15
|
<div :class="['label-wrapper', { 'with-avatar': item.showAvatar }]">
|
|
14
16
|
<a-avatar
|
|
@@ -24,6 +26,48 @@
|
|
|
24
26
|
{{ data[item.field] }}
|
|
25
27
|
</div>
|
|
26
28
|
</a-descriptions-item>
|
|
29
|
+
|
|
30
|
+
<!-- 详情按钮 -->
|
|
31
|
+
<a-descriptions-item v-if="hasMoreItems && !showAllItems">
|
|
32
|
+
<a-button
|
|
33
|
+
:type="config?.detailsConfig?.buttonType || 'link'"
|
|
34
|
+
@click="toggleDetails"
|
|
35
|
+
>
|
|
36
|
+
<a-icon type="down" />
|
|
37
|
+
{{ config?.detailsConfig?.buttonText || '详情' }}
|
|
38
|
+
</a-button>
|
|
39
|
+
</a-descriptions-item>
|
|
40
|
+
|
|
41
|
+
<!-- 展开后显示剩余标签 -->
|
|
42
|
+
<template v-if="showAllItems">
|
|
43
|
+
<a-descriptions-item
|
|
44
|
+
v-for="item in hiddenItems"
|
|
45
|
+
:key="item.field"
|
|
46
|
+
:colon="item.colon !== false">
|
|
47
|
+
<template #label>
|
|
48
|
+
<div :class="['label-wrapper', { 'with-avatar': item.showAvatar }]">
|
|
49
|
+
<a-avatar
|
|
50
|
+
v-if="item.showAvatar"
|
|
51
|
+
:size="item.avatar.size"
|
|
52
|
+
:icon="item.avatar.icon"
|
|
53
|
+
:style="{ background: item.avatar.background }"
|
|
54
|
+
/>
|
|
55
|
+
<span class="label-text">{{ item.label }}</span>
|
|
56
|
+
</div>
|
|
57
|
+
</template>
|
|
58
|
+
<div class="content-wrapper">
|
|
59
|
+
{{ data[item.field] }}
|
|
60
|
+
</div>
|
|
61
|
+
</a-descriptions-item>
|
|
62
|
+
|
|
63
|
+
<!-- 收起按钮 -->
|
|
64
|
+
<a-descriptions-item>
|
|
65
|
+
<a-button type="link" @click="toggleDetails">
|
|
66
|
+
<a-icon type="up" />
|
|
67
|
+
收起
|
|
68
|
+
</a-button>
|
|
69
|
+
</a-descriptions-item>
|
|
70
|
+
</template>
|
|
27
71
|
</template>
|
|
28
72
|
</a-descriptions>
|
|
29
73
|
</div>
|
|
@@ -36,7 +80,8 @@ export default {
|
|
|
36
80
|
data () {
|
|
37
81
|
return {
|
|
38
82
|
data: null,
|
|
39
|
-
|
|
83
|
+
config: null,
|
|
84
|
+
showAllItems: false // 控制是否显示所有标签
|
|
40
85
|
}
|
|
41
86
|
},
|
|
42
87
|
props: {
|
|
@@ -51,20 +96,46 @@ export default {
|
|
|
51
96
|
}
|
|
52
97
|
}
|
|
53
98
|
},
|
|
99
|
+
computed: {
|
|
100
|
+
// 获取详情按钮应该显示在第几个标签后
|
|
101
|
+
detailsAfterIndex () {
|
|
102
|
+
return this.config?.detailsConfig?.showAfterIndex || 3
|
|
103
|
+
},
|
|
104
|
+
// 判断是否有更多标签需要显示
|
|
105
|
+
hasMoreItems () {
|
|
106
|
+
return this.config?.items?.length > this.detailsAfterIndex
|
|
107
|
+
},
|
|
108
|
+
// 获取应该显示的标签
|
|
109
|
+
visibleItems () {
|
|
110
|
+
if (!this.config?.items) return []
|
|
111
|
+
if (this.showAllItems) return this.config.items
|
|
112
|
+
return this.config.items.slice(0, this.detailsAfterIndex)
|
|
113
|
+
},
|
|
114
|
+
// 获取隐藏的标签
|
|
115
|
+
hiddenItems () {
|
|
116
|
+
if (!this.config?.items) return []
|
|
117
|
+
return this.config.items.slice(this.detailsAfterIndex)
|
|
118
|
+
}
|
|
119
|
+
},
|
|
54
120
|
created () {
|
|
55
121
|
this.getData(this.queryParamsName)
|
|
56
122
|
},
|
|
57
123
|
methods: {
|
|
58
124
|
async getData (data) {
|
|
59
125
|
this.data = null
|
|
126
|
+
this.showAllItems = false // 重置展开状态
|
|
60
127
|
getConfigByName(data, 'af-his', res => {
|
|
61
|
-
this.
|
|
62
|
-
console.log(this.
|
|
128
|
+
this.config = res
|
|
129
|
+
console.log(this.config)
|
|
63
130
|
const parameter = { ...res.parameter, ...this.parameter }
|
|
64
131
|
runLogic(res.logicName, parameter, 'af-his').then(result => {
|
|
65
132
|
this.data = result
|
|
66
133
|
})
|
|
67
134
|
})
|
|
135
|
+
},
|
|
136
|
+
// 切换详情显示状态
|
|
137
|
+
toggleDetails () {
|
|
138
|
+
this.showAllItems = !this.showAllItems
|
|
68
139
|
}
|
|
69
140
|
},
|
|
70
141
|
watch: {
|
|
@@ -138,14 +209,14 @@ export default {
|
|
|
138
209
|
color: rgba(0, 0, 0, 0.65);
|
|
139
210
|
padding: 0 !important;
|
|
140
211
|
margin: 0 !important;
|
|
141
|
-
font-size: v-bind('
|
|
212
|
+
font-size: v-bind('config?.style?.fontSize');
|
|
142
213
|
display: inline-flex !important;
|
|
143
214
|
align-items: center !important;
|
|
144
215
|
white-space: nowrap !important;
|
|
145
216
|
}
|
|
146
217
|
|
|
147
218
|
:deep(.ant-descriptions-item-content) {
|
|
148
|
-
font-size: v-bind('
|
|
219
|
+
font-size: v-bind('config?.style?.fontSize');
|
|
149
220
|
display: inline-flex !important;
|
|
150
221
|
align-items: center !important;
|
|
151
222
|
padding: 0 !important;
|
|
@@ -176,4 +247,16 @@ export default {
|
|
|
176
247
|
background-color: rgba(0, 0, 0, 0.02);
|
|
177
248
|
border-radius: 4px;
|
|
178
249
|
}
|
|
250
|
+
|
|
251
|
+
/* 添加详情按钮样式 */
|
|
252
|
+
:deep(.ant-btn-link) {
|
|
253
|
+
padding: 0;
|
|
254
|
+
height: auto;
|
|
255
|
+
line-height: 1;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
:deep(.ant-btn-link:hover) {
|
|
259
|
+
color: #1890ff;
|
|
260
|
+
background: transparent;
|
|
261
|
+
}
|
|
179
262
|
</style>
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# XHDescriptions 患者信息描述组件
|
|
2
|
+
|
|
3
|
+
## 组件介绍
|
|
4
|
+
|
|
5
|
+
`XHDescriptions` 是一个基于 Ant Design Vue 的描述列表组件封装,专用于显示患者基本信息。该组件具有以下特点:
|
|
6
|
+
|
|
7
|
+
- 支持响应式布局,在不同屏幕尺寸下自动调整列数
|
|
8
|
+
- 支持折叠/展开功能,控制信息的显示量
|
|
9
|
+
- 支持自定义样式和头像
|
|
10
|
+
|
|
11
|
+
## 配置说明
|
|
12
|
+
|
|
13
|
+
组件通过 JSON 配置文件进行配置,主要包含以下部分:
|
|
14
|
+
|
|
15
|
+
### 1. 布局配置 (layout)
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
"layout": {
|
|
19
|
+
"xl": 8,
|
|
20
|
+
"md": 3,
|
|
21
|
+
"sm": 2,
|
|
22
|
+
"lg": 4,
|
|
23
|
+
"xs": 1,
|
|
24
|
+
"xxl": 8
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- 用于设置在不同屏幕尺寸下的列数
|
|
29
|
+
- 键名对应不同的屏幕尺寸(xs, sm, md, lg, xl, xxl)
|
|
30
|
+
- 值为每行显示的列数
|
|
31
|
+
|
|
32
|
+
### 2. 样式配置 (style)
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
"style": {
|
|
36
|
+
"size": "small",
|
|
37
|
+
"fontSize": "14px",
|
|
38
|
+
"bordered": false
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- `size`: 设置尺寸,可选值为 "default", "middle", "small"
|
|
43
|
+
- `fontSize`: 控制文字大小
|
|
44
|
+
- `bordered`: 是否显示边框
|
|
45
|
+
|
|
46
|
+
### 3. 字段配置 (items)
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
"items": [
|
|
50
|
+
{
|
|
51
|
+
"field": "patientName",
|
|
52
|
+
"style": {
|
|
53
|
+
"minHeight": "24px",
|
|
54
|
+
"width": "120px",
|
|
55
|
+
"minWidth": "100px",
|
|
56
|
+
"height": "24px"
|
|
57
|
+
},
|
|
58
|
+
"label": "患者",
|
|
59
|
+
"avatar": {
|
|
60
|
+
"size": 20,
|
|
61
|
+
"background": "#5D5C5C",
|
|
62
|
+
"icon": "user"
|
|
63
|
+
},
|
|
64
|
+
"showAvatar": true
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
每个字段可配置的属性:
|
|
70
|
+
|
|
71
|
+
- `field`: 字段名,用于从数据源获取值
|
|
72
|
+
- `label`: 显示的标签名
|
|
73
|
+
- `style`: 控制字段的样式(宽度、高度等)
|
|
74
|
+
- `showAvatar`: 是否显示头像
|
|
75
|
+
- `avatar`: 头像配置(仅当 showAvatar 为 true 时有效)
|
|
76
|
+
- `size`: 头像大小
|
|
77
|
+
- `background`: 头像背景色
|
|
78
|
+
- `icon`: 头像图标名称
|
|
79
|
+
|
|
80
|
+
### 4. 详情按钮配置 (detailsConfig)
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
"detailsConfig": {
|
|
84
|
+
"buttonText": "详细",
|
|
85
|
+
"buttonType": "link",
|
|
86
|
+
"showAfterIndex": 3
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
- `buttonText`: 详情按钮显示的文本
|
|
91
|
+
- `buttonType`: 按钮类型,可选值为 "default", "primary", "dashed", "link" 等
|
|
92
|
+
- `showAfterIndex`: 控制在显示多少个字段后显示详情按钮
|
|
93
|
+
|
|
94
|
+
### 5. 其他配置
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
"logicName": "patientBasicInfo",
|
|
98
|
+
"serverName": "af-his",
|
|
99
|
+
"parameter": {}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
- `logicName`: 用于获取数据的逻辑名称
|
|
103
|
+
- `serverName`: 服务名称
|
|
104
|
+
- `parameter`: 可选的参数对象
|
|
105
|
+
|
|
106
|
+
## 使用示例
|
|
107
|
+
|
|
108
|
+
```vue
|
|
109
|
+
<template>
|
|
110
|
+
<XHDescriptions queryParamsName="DescriptionsExampleConfig" />
|
|
111
|
+
</template>
|
|
112
|
+
|
|
113
|
+
<script>
|
|
114
|
+
import XHDescriptions from '@/base-client/components/his/XHDescriptions/XHDescriptions.vue'
|
|
115
|
+
|
|
116
|
+
export default {
|
|
117
|
+
components: {
|
|
118
|
+
XHDescriptions
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
</script>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 特殊说明
|
|
125
|
+
|
|
126
|
+
1. **响应式布局**:
|
|
127
|
+
- 组件会根据屏幕尺寸自动调整列数
|
|
128
|
+
- 可在 `layout` 配置中自定义不同尺寸下的列数
|
|
129
|
+
|
|
130
|
+
2. **折叠/展开功能**:
|
|
131
|
+
- 默认只显示 `showAfterIndex` 指定数量的字段
|
|
132
|
+
- 点击详情按钮可展开显示全部字段
|
|
133
|
+
- 点击收起按钮可恢复默认显示
|
|
134
|
+
|
|
135
|
+
## 配置示例
|
|
136
|
+
|
|
137
|
+
以下是一个完整的配置示例,用于展示患者基本信息:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"layout": {
|
|
142
|
+
"xl": 8,
|
|
143
|
+
"md": 3,
|
|
144
|
+
"sm": 2,
|
|
145
|
+
"lg": 4,
|
|
146
|
+
"xs": 1,
|
|
147
|
+
"xxl": 8
|
|
148
|
+
},
|
|
149
|
+
"style": {
|
|
150
|
+
"size": "small",
|
|
151
|
+
"fontSize": "14px",
|
|
152
|
+
"bordered": false
|
|
153
|
+
},
|
|
154
|
+
"items": [
|
|
155
|
+
{
|
|
156
|
+
"field": "patientName",
|
|
157
|
+
"label": "患者",
|
|
158
|
+
"showAvatar": true,
|
|
159
|
+
"avatar": {
|
|
160
|
+
"size": 20,
|
|
161
|
+
"background": "#5D5C5C",
|
|
162
|
+
"icon": "user"
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"field": "patientType",
|
|
167
|
+
"label": "类别"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"field": "diagnosisNo",
|
|
171
|
+
"label": "诊号"
|
|
172
|
+
}
|
|
173
|
+
// ... 更多字段
|
|
174
|
+
],
|
|
175
|
+
"detailsConfig": {
|
|
176
|
+
"buttonText": "详细",
|
|
177
|
+
"buttonType": "link",
|
|
178
|
+
"showAfterIndex": 3
|
|
179
|
+
},
|
|
180
|
+
"logicName": "patientBasicInfo",
|
|
181
|
+
"serverName": "af-his"
|
|
182
|
+
}
|
|
183
|
+
```
|