vue2-client 1.16.41 → 1.16.43

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,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.16.41",
3
+ "version": "1.16.43",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -85,8 +85,9 @@ defineExpose({
85
85
  }
86
86
  }
87
87
  }
88
- // +号样式
89
- &.h-buttons-table-height-button23 {
88
+ // +号样式(共享基础样式)
89
+ &.h-buttons-table-height-button23,
90
+ &.h-buttons-table-height-button23-no-transform {
90
91
  :deep(.ant-btn-group) {
91
92
  display: inline-flex;
92
93
  align-items: center;
@@ -104,11 +105,15 @@ defineExpose({
104
105
  margin-left: 10px;
105
106
  width: 30px;
106
107
  height: 30px;
107
- /* 自适应上移:按按钮自身高度百分比位移 */
108
- transform: translateY(-100%);
109
108
  }
110
109
  }
111
110
  }
111
+ // 仅在有分页的场景上移
112
+ &.h-buttons-table-height-button23 {
113
+ :deep(.ant-btn-group) {
114
+ .ant-btn { transform: translateY(-100%); }
115
+ }
116
+ }
112
117
  // 居中+悬停高亮的新样式
113
118
  &.h-buttons-plus-center {
114
119
  :deep(.ant-btn-group) {
@@ -1,174 +1,174 @@
1
- <template>
2
- <div class="row">
3
- <div class="content">
4
- <a-skeleton :loading="loading" :paragraph="{ rows: 4 }" />
5
- <div v-show="!loading">
6
- <template v-if="!loadError">
7
- <a-descriptions v-if="realData" :column="isMobile ? 1 : column" size="small" :title="title">
8
- <a-descriptions-item
9
- v-for="(value, key) in realData"
10
- :key="key"
11
- :label="key">
12
- {{ formatText(value) }}
13
- </a-descriptions-item>
14
- </a-descriptions>
15
- </template>
16
- <template v-else>
17
- <a-empty>
18
- <span slot="description"> 页面配置不存在,请联系系统管理员 </span>
19
- </a-empty>
20
- </template>
21
- </div>
22
- </div>
23
- <div class="extra" v-if="extraShow">
24
- <slot name="addonAfter"/>
25
- </div>
26
- </div>
27
- </template>
28
- <script>
29
-
30
- import { mapState } from 'vuex'
31
- import { getRealKeyData } from '@vue2-client/utils/formatter'
32
- import { getConfigByName } from '@vue2-client/services/api/common'
33
-
34
- export default {
35
- name: 'XDescriptions',
36
- components: {
37
- },
38
- props: {
39
- // 标题
40
- title: {
41
- type: String,
42
- required: true
43
- },
44
- // 内容
45
- content: {
46
- type: Object,
47
- required: true
48
- },
49
- // 模型名
50
- model: {
51
- type: String,
52
- required: false,
53
- default: ''
54
- },
55
- // 配置名称
56
- configName: {
57
- type: String,
58
- required: true
59
- },
60
- // 配置所属命名空间
61
- serviceName: {
62
- type: String,
63
- default: undefined
64
- },
65
- env: {
66
- type: String,
67
- default: 'prod'
68
- },
69
- // 每列显示数量
70
- column: {
71
- type: Number,
72
- default: 2
73
- },
74
- // 每列显示数量
75
- getRealData: {
76
- type: Boolean,
77
- default: false
78
- },
79
- // 是否展示插槽
80
- extraShow: {
81
- type: Boolean,
82
- default: true
83
- }
84
- },
85
- created () {
86
- this.initConfig()
87
- },
88
- data () {
89
- return {
90
- // 加载状态
91
- loading: false,
92
- loadError: false,
93
- realData: undefined
94
- }
95
- },
96
- computed: {
97
- ...mapState('setting', { isMobile: 'isMobile' })
98
- },
99
- methods: {
100
- initConfig () {
101
- this.loading = true
102
- this.loadError = false
103
- if (this.configName) {
104
- this.getConfig()
105
- } else {
106
- this.loading = false
107
- this.loadError = true
108
- }
109
- },
110
- getConfig () {
111
- getConfigByName(this.configName, this.serviceName, (res) => {
112
- const mapIndex = {}
113
- const result = {}
114
- if (res.formJson) {
115
- res.formJson.filter(item => {
116
- const model = item.model
117
- return model.indexOf(this.model) > 0
118
- })[0].groupItems.forEach(item => {
119
- mapIndex[item.model.substring(item.model.indexOf('_') + 1)] = item.name
120
- })
121
- for (const key of Object.keys(this.content)) {
122
- const name = mapIndex[key]
123
- if (name) {
124
- result[name] = this.content[key]
125
- } else {
126
- result[key] = this.content[key]
127
- }
128
- }
129
- } else if (res.column) {
130
- // [{label:'标签1',filed:'字段1'}]
131
- let content = {}
132
- if (this.getRealData) {
133
- content = getRealKeyData(this.content)
134
- } else {
135
- content = this.content
136
- }
137
- if (typeof content === 'string') {
138
- content = JSON.parse(content)
139
- }
140
- res.column.forEach(item => {
141
- result[item.label] = content[item.filed]
142
- })
143
- }
144
- this.realData = result
145
- this.loading = false
146
- }, this.env === 'dev')
147
- },
148
- // 文字格式化
149
- formatText (value) {
150
- return value ?? '--'
151
- }
152
- }
153
- }
154
- </script>
155
- <style>
156
- .row {
157
- display: flex;
158
-
159
- .content {
160
- -webkit-box-flex: 1;
161
- flex: auto;
162
- -ms-flex: auto;
163
- }
164
-
165
- .extra {
166
- flex: 0 1 auto;
167
- -webkit-box-flex: 0;
168
- -ms-flex: 0 1 auto;
169
- min-width: 242px;
170
- margin-left: 88px;
171
- text-align: right;
172
- }
173
- }
174
- </style>
1
+ <template>
2
+ <div class="row">
3
+ <div class="content">
4
+ <a-skeleton :loading="loading" :paragraph="{ rows: 4 }" />
5
+ <div v-show="!loading">
6
+ <template v-if="!loadError">
7
+ <a-descriptions v-if="realData" :column="isMobile ? 1 : column" size="small" :title="title">
8
+ <a-descriptions-item
9
+ v-for="(value, key) in realData"
10
+ :key="key"
11
+ :label="key">
12
+ {{ formatText(value) }}
13
+ </a-descriptions-item>
14
+ </a-descriptions>
15
+ </template>
16
+ <template v-else>
17
+ <a-empty>
18
+ <span slot="description"> 页面配置不存在,请联系系统管理员 </span>
19
+ </a-empty>
20
+ </template>
21
+ </div>
22
+ </div>
23
+ <div class="extra" v-if="extraShow">
24
+ <slot name="addonAfter"/>
25
+ </div>
26
+ </div>
27
+ </template>
28
+ <script>
29
+
30
+ import { mapState } from 'vuex'
31
+ import { getRealKeyData } from '@vue2-client/utils/formatter'
32
+ import { getConfigByName } from '@vue2-client/services/api/common'
33
+
34
+ export default {
35
+ name: 'XDescriptions',
36
+ components: {
37
+ },
38
+ props: {
39
+ // 标题
40
+ title: {
41
+ type: String,
42
+ required: true
43
+ },
44
+ // 内容
45
+ content: {
46
+ type: Object,
47
+ required: true
48
+ },
49
+ // 模型名
50
+ model: {
51
+ type: String,
52
+ required: false,
53
+ default: ''
54
+ },
55
+ // 配置名称
56
+ configName: {
57
+ type: String,
58
+ required: true
59
+ },
60
+ // 配置所属命名空间
61
+ serviceName: {
62
+ type: String,
63
+ default: undefined
64
+ },
65
+ env: {
66
+ type: String,
67
+ default: 'prod'
68
+ },
69
+ // 每列显示数量
70
+ column: {
71
+ type: Number,
72
+ default: 2
73
+ },
74
+ // 每列显示数量
75
+ getRealData: {
76
+ type: Boolean,
77
+ default: false
78
+ },
79
+ // 是否展示插槽
80
+ extraShow: {
81
+ type: Boolean,
82
+ default: true
83
+ }
84
+ },
85
+ created () {
86
+ this.initConfig()
87
+ },
88
+ data () {
89
+ return {
90
+ // 加载状态
91
+ loading: false,
92
+ loadError: false,
93
+ realData: undefined
94
+ }
95
+ },
96
+ computed: {
97
+ ...mapState('setting', { isMobile: 'isMobile' })
98
+ },
99
+ methods: {
100
+ initConfig () {
101
+ this.loading = true
102
+ this.loadError = false
103
+ if (this.configName) {
104
+ this.getConfig()
105
+ } else {
106
+ this.loading = false
107
+ this.loadError = true
108
+ }
109
+ },
110
+ getConfig () {
111
+ getConfigByName(this.configName, this.serviceName, (res) => {
112
+ const mapIndex = {}
113
+ const result = {}
114
+ if (res.formJson) {
115
+ res.formJson.filter(item => {
116
+ const model = item.model
117
+ return model.indexOf(this.model) > 0
118
+ })[0].groupItems.forEach(item => {
119
+ mapIndex[item.model.substring(item.model.indexOf('_') + 1)] = item.name
120
+ })
121
+ for (const key of Object.keys(this.content)) {
122
+ const name = mapIndex[key]
123
+ if (name) {
124
+ result[name] = this.content[key]
125
+ } else {
126
+ result[key] = this.content[key]
127
+ }
128
+ }
129
+ } else if (res.column) {
130
+ // [{label:'标签1',filed:'字段1'}]
131
+ let content = {}
132
+ if (this.getRealData) {
133
+ content = getRealKeyData(this.content)
134
+ } else {
135
+ content = this.content
136
+ }
137
+ if (typeof content === 'string') {
138
+ content = JSON.parse(content)
139
+ }
140
+ res.column.forEach(item => {
141
+ result[item.label] = content[item.filed]
142
+ })
143
+ }
144
+ this.realData = result
145
+ this.loading = false
146
+ }, this.env === 'dev')
147
+ },
148
+ // 文字格式化
149
+ formatText (value) {
150
+ return value ?? '--'
151
+ }
152
+ }
153
+ }
154
+ </script>
155
+ <style>
156
+ .row {
157
+ display: flex;
158
+
159
+ .content {
160
+ -webkit-box-flex: 1;
161
+ flex: auto;
162
+ -ms-flex: auto;
163
+ }
164
+
165
+ .extra {
166
+ flex: 0 1 auto;
167
+ -webkit-box-flex: 0;
168
+ -ms-flex: 0 1 auto;
169
+ min-width: 242px;
170
+ margin-left: 88px;
171
+ text-align: right;
172
+ }
173
+ }
174
+ </style>
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <div id="xreport-hosp-demo">
3
+ <a-space style="margin-bottom: 12px;">
4
+ <a-button type="primary" @click="doInit">手动初始化</a-button>
5
+ </a-space>
6
+ <XReport
7
+ ref="reportRef"
8
+ :edit-mode="true"
9
+ :show-save-button="true"
10
+ :show-img-in-cell="false"
11
+ :use-oss-for-img="false"
12
+ server-name="af-his"
13
+ @updateImg="onUpdateImg"/>
14
+ </div>
15
+ </template>
16
+
17
+ <script setup>
18
+ import { ref } from 'vue'
19
+ import XReport from '@vue2-client/base-client/components/common/XReport'
20
+
21
+ const reportRef = ref(null)
22
+
23
+ const payload = {
24
+ arr: [
25
+ { BQ: '病房区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
26
+ { BQ: '感染科', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
27
+ { BQ: '骨科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
28
+ { BQ: '呼吸科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
29
+ { BQ: '急症科病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 },
30
+ { BQ: '内科二病区', RY: 0, CY: 0, CW: 0, SW: 0, SS: 0, ZC: 0, ZR: 0, ZY: 0 }
31
+ ]
32
+ }
33
+
34
+ const doInit = async () => {
35
+ if (!reportRef.value || !reportRef.value.init) return
36
+ await reportRef.value.init({
37
+ configName: 'hospitalizationStatsReport',
38
+ configData: payload
39
+ })
40
+ }
41
+
42
+ const onUpdateImg = data => {
43
+ console.warn('updateImg:', data)
44
+ }
45
+ </script>