vue2-client 1.15.110 → 1.15.111

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 (37) hide show
  1. package/.history/src/base-client/components/his/XChart/XChart_20250812134005.vue +160 -0
  2. package/.history/src/base-client/components/his/XChart/XChart_20250812134010.vue +160 -0
  3. package/.history/src/base-client/components/his/XChart/XChart_20250812134019.vue +160 -0
  4. package/.history/src/base-client/components/his/XChart/XChart_20250812134037.vue +160 -0
  5. package/.history/src/base-client/components/his/XChart/XChart_20250812134112.vue +160 -0
  6. package/.history/src/base-client/components/his/XChart/XChart_20250812134114.vue +160 -0
  7. package/.history/src/base-client/components/his/XChart/XChart_20250812134828.vue +148 -0
  8. package/.history/src/base-client/components/his/XChart/XChart_20250812134838.vue +155 -0
  9. package/.history/src/base-client/components/his/XChart/XChart_20250812134846.vue +155 -0
  10. package/.history/src/base-client/components/his/XChart/XChart_20250812134917.vue +155 -0
  11. package/.history/src/base-client/components/his/XChart/XChart_20250812151145.vue +149 -0
  12. package/.history/src/base-client/components/his/XChart/XChart_20250812151810.vue +153 -0
  13. package/.history/src/base-client/components/his/XChart/XChart_20250812151822.vue +153 -0
  14. package/.history/src/base-client/components/his/XChart/XChart_20250812151910.vue +153 -0
  15. package/.history/src/base-client/components/his/XChart/XChart_20250812152858.vue +258 -0
  16. package/.history/src/base-client/components/his/XChart/XChart_20250812152902.vue +258 -0
  17. package/.history/src/base-client/components/his/XChart/XChart_20250812152907.vue +258 -0
  18. package/.history/src/base-client/components/his/XChart/XChart_20250812152919.vue +258 -0
  19. package/.history/src/base-client/components/his/XChart/XChart_20250812153141.vue +269 -0
  20. package/.history/src/base-client/components/his/XChart/XChart_20250812153149.vue +276 -0
  21. package/.history/src/base-client/components/his/XChart/XChart_20250812153153.vue +276 -0
  22. package/.history/src/base-client/components/his/XChart/XChart_20250812153155.vue +276 -0
  23. package/.history/src/base-client/components/his/XChart/XChart_20250812153157.vue +276 -0
  24. package/.history/src/base-client/components/his/XChart/XChart_20250812153158.vue +276 -0
  25. package/.history/src/base-client/components/his/XChart/XChart_20250812153200.vue +276 -0
  26. package/.history/src/base-client/components/his/XChart/XChart_20250812153210.vue +276 -0
  27. package/.history/src/base-client/components/his/XChart/XChart_20250812153918.vue +275 -0
  28. package/.history/src/base-client/components/his/XChart/XChart_20250812154157.vue +280 -0
  29. package/.history/src/base-client/components/his/XChart/XChart_20250812154212.vue +280 -0
  30. package/.history/src/base-client/components/his/XChart/XChart_20250812154250.vue +280 -0
  31. package/.history/src/base-client/components/his/XChart/XChart_20250812154252.vue +280 -0
  32. package/.history/src/base-client/components/his/XChart/XChart_20250812154444.vue +280 -0
  33. package/package.json +1 -1
  34. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +4 -3
  35. package/src/base-client/components/his/XChart/XChart.vue +280 -0
  36. package/src/base-client/components/his/XChart/dome.vue +19 -0
  37. package/src/router/async/router.map.js +1 -1
@@ -0,0 +1,280 @@
1
+ <template>
2
+ <div ref="main" :style="{width: config.width, height: config.height}">
3
+ </div>
4
+ </template>
5
+
6
+ <script>
7
+ import * as echarts from 'echarts'
8
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
9
+
10
+ export default {
11
+ name: 'XChart',
12
+ props: {
13
+ // 配置名
14
+ queryParamsName: {
15
+ type: String,
16
+ default: ''
17
+ },
18
+ // 服务名
19
+ serviceName: {
20
+ type: String,
21
+ default: 'af-his'
22
+ }
23
+ },
24
+ data () {
25
+ return {
26
+ data: [],
27
+ // 配置项
28
+ config: {},
29
+ // 标准值
30
+ standardValue: 0,
31
+ // 标准差
32
+ sd: 0
33
+ }
34
+ },
35
+ mounted () {},
36
+ methods: {
37
+ initDome (queryParamsName, parameter) {
38
+ getConfigByName(queryParamsName, 'af-his', async (res) => {
39
+ this.config = res
40
+ console.log('res', res)
41
+ runLogic(res.data, parameter, 'af-his').then(result => {
42
+ this.standardValue = result[0][this.config.standardValue]
43
+ this.sd = result[0].sd
44
+ const listData = result.map(item => [item.x, item.y])
45
+ this.data = listData
46
+ this.renderChart()
47
+ })
48
+ })
49
+ },
50
+ // 渲染图表
51
+ renderChart () {
52
+ const chartDom = this.$refs.main
53
+ const myChart = echarts.init(chartDom)
54
+
55
+ // 计算控制线
56
+ const centerLine = this.standardValue
57
+ const sd1Upper = centerLine + this.sd
58
+ const sd1Lower = centerLine - this.sd
59
+ const sd2Upper = centerLine + 2 * this.sd
60
+ const sd2Lower = centerLine - 2 * this.sd
61
+ const sd3Upper = centerLine + 3 * this.sd
62
+ const sd3Lower = centerLine - 3 * this.sd
63
+
64
+ // 计算y轴范围,让靶值居中
65
+ const dataMin = Math.min(...this.data.map(item => item[1]))
66
+ const dataMax = Math.max(...this.data.map(item => item[1]))
67
+ const range = Math.max(dataMax - centerLine, centerLine - dataMin, this.sd * 4)
68
+ const yMin = centerLine - range
69
+ const yMax = centerLine + range
70
+
71
+ const option = {
72
+ title: {
73
+ text: this.config.title,
74
+ subtext: this.config.subtext,
75
+ left: 'center',
76
+ textStyle: {
77
+ fontSize: 16,
78
+ fontWeight: 'bold'
79
+ },
80
+ subtextStyle: {
81
+ fontSize: 12,
82
+ color: '#666'
83
+ }
84
+ },
85
+ legend: {
86
+ bottom: 10,
87
+ data: ['测量值', '中心线', '±1SD', '±2SD', '±3SD']
88
+ },
89
+ tooltip: {
90
+ trigger: 'axis',
91
+ axisPointer: {
92
+ type: 'cross'
93
+ },
94
+ formatter: function (params) {
95
+ let result = `第${params[0].data[0]}次测量<br/>`
96
+ params.forEach(param => {
97
+ if (param.seriesName === '测量值') {
98
+ result += `${param.seriesName}: ${param.data[1]}<br/>`
99
+ }
100
+ })
101
+ return result
102
+ }
103
+ },
104
+ grid: {
105
+ left: '10%',
106
+ right: '10%',
107
+ top: '15%',
108
+ bottom: '15%'
109
+ },
110
+ xAxis: {
111
+ type: 'category',
112
+ name: '测量次数',
113
+ nameLocation: 'middle',
114
+ nameGap: 30,
115
+ axisLine: {
116
+ lineStyle: {
117
+ color: '#333'
118
+ }
119
+ },
120
+ axisTick: {
121
+ show: true
122
+ },
123
+ splitLine: {
124
+ show: false
125
+ }
126
+ },
127
+ yAxis: {
128
+ type: 'value',
129
+ name: this.config.formatter,
130
+ nameLocation: 'middle',
131
+ nameGap: 50,
132
+ nameTextStyle: {
133
+ color: '#333',
134
+ fontSize: 12
135
+ },
136
+ show: true,
137
+ axisLine: {
138
+ show: true,
139
+ lineStyle: {
140
+ color: '#333'
141
+ }
142
+ },
143
+ axisTick: {
144
+ show: true
145
+ },
146
+ axisLabel: {
147
+ show: true,
148
+ rotate: 0
149
+ },
150
+ min: yMin,
151
+ max: yMax,
152
+ splitLine: {
153
+ show: true,
154
+ lineStyle: {
155
+ type: 'dashed',
156
+ color: '#ddd'
157
+ }
158
+ }
159
+ },
160
+ series: [
161
+ {
162
+ type: 'line',
163
+ data: this.data,
164
+ symbol: 'circle',
165
+ symbolSize: 8,
166
+ lineStyle: {
167
+ color: '#1890ff',
168
+ width: 2
169
+ },
170
+ itemStyle: {
171
+ color: '#1890ff',
172
+ borderColor: '#fff',
173
+ borderWidth: 2
174
+ },
175
+ markLine: {
176
+ silent: true,
177
+ symbol: 'none',
178
+ lineStyle: {
179
+ color: '#52c41a',
180
+ width: 2,
181
+ type: 'solid'
182
+ },
183
+ data: [
184
+ {
185
+ yAxis: centerLine,
186
+ label: {
187
+ formatter: `中心线: ${centerLine}`,
188
+ position: 'insideEndTop'
189
+ }
190
+ },
191
+ {
192
+ yAxis: sd1Upper,
193
+ lineStyle: {
194
+ color: '#faad14',
195
+ type: 'dashed'
196
+ },
197
+ label: {
198
+ formatter: `+1SD: ${sd1Upper.toFixed(2)}`,
199
+ position: 'insideEndTop'
200
+ }
201
+ },
202
+ {
203
+ yAxis: sd1Lower,
204
+ lineStyle: {
205
+ color: '#faad14',
206
+ type: 'dashed'
207
+ },
208
+ label: {
209
+ formatter: `-1SD: ${sd1Lower.toFixed(2)}`,
210
+ position: 'insideEndBottom'
211
+ }
212
+ },
213
+ {
214
+ yAxis: sd2Upper,
215
+ lineStyle: {
216
+ color: '#ff7a45',
217
+ type: 'dashed'
218
+ },
219
+ label: {
220
+ formatter: `+2SD: ${sd2Upper.toFixed(2)}`,
221
+ position: 'insideEndTop'
222
+ }
223
+ },
224
+ {
225
+ yAxis: sd2Lower,
226
+ lineStyle: {
227
+ color: '#ff7a45',
228
+ type: 'dashed'
229
+ },
230
+ label: {
231
+ formatter: `-2SD: ${sd2Lower.toFixed(2)}`,
232
+ position: 'insideEndBottom'
233
+ }
234
+ },
235
+ {
236
+ yAxis: sd3Upper,
237
+ lineStyle: {
238
+ color: '#ff4d4f',
239
+ type: 'dashed'
240
+ },
241
+ label: {
242
+ formatter: `+3SD: ${sd3Upper.toFixed(2)}`,
243
+ position: 'insideEndTop'
244
+ }
245
+ },
246
+ {
247
+ yAxis: sd3Lower,
248
+ lineStyle: {
249
+ color: '#ff4d4f',
250
+ type: 'dashed'
251
+ },
252
+ label: {
253
+ formatter: `-3SD: ${sd3Lower.toFixed(2)}`,
254
+ position: 'insideEndBottom'
255
+ }
256
+ }
257
+ ]
258
+ }
259
+ }
260
+ ]
261
+ }
262
+ option && myChart.setOption(option)
263
+ }
264
+ },
265
+ watch: {
266
+ queryParamsName: {
267
+ deep: true,
268
+ immediate: true,
269
+ handler (val) {
270
+ console.log('queryParamsName', val)
271
+ this.initDome(val, {})
272
+ }
273
+ }
274
+ }
275
+ }
276
+ </script>
277
+
278
+ <style scoped lang="less">
279
+
280
+ </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.15.110",
3
+ "version": "1.15.111",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -25,7 +25,7 @@
25
25
  </template>
26
26
  <template v-else-if="cell.type === 'slot'">
27
27
  <template
28
- v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse','x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select' ,'x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule','x-charge','x-questionnaire','x-import-excel-button'].includes(cell.slotType)">
28
+ v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse','x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select' ,'x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule','x-charge','x-questionnaire','x-import-excel-button','x-chart'].includes(cell.slotType)">
29
29
  <component
30
30
  :is="getComponentName(cell.slotConfig, cell.serviceName, cell.slotType)"
31
31
  :key="cellIndex"
@@ -63,7 +63,7 @@
63
63
  </template>
64
64
  <template v-else-if="cell.type === 'slot'">
65
65
  <template
66
- v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse', 'x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select','x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule','x-charge','x-questionnaire','x-import-excel-button'].includes(cell.slotType)">
66
+ v-if="['x-form-table','x-add-native-form','x-tree-pro', 'x-his-editor', 'x-tab', 'x-form-group', 'x-report', 'x-buttons', 'x-label-select', 'x-conversation', 'x-check-list', 'x-cardSet', 'x-collapse', 'x-h-descriptions', 'x-sidebar', 'x-list','x-input','x-time-line', 'x-radio','x-calendar', 'x-time-select','x-checkbox', 'x-title', 'x-select', 'x-tree-rows', 'x-three-test-orders', 'x-shift-schedule','x-charge','x-questionnaire','x-import-excel-button','x-chart'].includes(cell.slotType)">
67
67
  <component
68
68
  :is="getComponentName(cell.slotConfig, cell.serviceName, cell.slotType)"
69
69
  :key="cellIndex"
@@ -128,7 +128,8 @@ export default {
128
128
  XShiftSchedule: () => import('@vue2-client/base-client/components/his/XShiftSchedule/XShiftSchedule.vue'),
129
129
  XCharge: () => import('@vue2-client/base-client/components/his/XCharge/XCharge.vue'),
130
130
  XQuestionnaire: () => import('@vue2-client/base-client/components/his/XQuestionnaire/XQuestionnaire.vue'),
131
- XImportExcelButton: () => import('@vue2-client/base-client/components/his/XImportExcelButton/XImportExcelButton.vue')
131
+ XImportExcelButton: () => import('@vue2-client/base-client/components/his/XImportExcelButton/XImportExcelButton.vue'),
132
+ XChart: () => import('@vue2-client/base-client/components/his/XChart/XChart.vue')
132
133
  },
133
134
  props: {
134
135
  // 每一行的配置
@@ -0,0 +1,280 @@
1
+ <template>
2
+ <div ref="main" :style="{width: config.width, height: config.height}">
3
+ </div>
4
+ </template>
5
+
6
+ <script>
7
+ import * as echarts from 'echarts'
8
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
9
+
10
+ export default {
11
+ name: 'XChart',
12
+ props: {
13
+ // 配置名
14
+ queryParamsName: {
15
+ type: String,
16
+ default: ''
17
+ },
18
+ // 服务名
19
+ serviceName: {
20
+ type: String,
21
+ default: 'af-his'
22
+ }
23
+ },
24
+ data () {
25
+ return {
26
+ data: [],
27
+ // 配置项
28
+ config: {},
29
+ // 标准值
30
+ standardValue: 0,
31
+ // 标准差
32
+ sd: 0
33
+ }
34
+ },
35
+ mounted () {},
36
+ methods: {
37
+ initDome (queryParamsName, parameter) {
38
+ getConfigByName(queryParamsName, 'af-his', async (res) => {
39
+ this.config = res
40
+ console.log('res', res)
41
+ runLogic(res.data, parameter, 'af-his').then(result => {
42
+ this.standardValue = result[0][this.config.standardValue]
43
+ this.sd = result[0].sd
44
+ const listData = result.map(item => [item.x, item.y])
45
+ this.data = listData
46
+ this.renderChart()
47
+ })
48
+ })
49
+ },
50
+ // 渲染图表
51
+ renderChart () {
52
+ const chartDom = this.$refs.main
53
+ const myChart = echarts.init(chartDom)
54
+
55
+ // 计算控制线
56
+ const centerLine = this.standardValue
57
+ const sd1Upper = centerLine + this.sd
58
+ const sd1Lower = centerLine - this.sd
59
+ const sd2Upper = centerLine + 2 * this.sd
60
+ const sd2Lower = centerLine - 2 * this.sd
61
+ const sd3Upper = centerLine + 3 * this.sd
62
+ const sd3Lower = centerLine - 3 * this.sd
63
+
64
+ // 计算y轴范围,让靶值居中
65
+ const dataMin = Math.min(...this.data.map(item => item[1]))
66
+ const dataMax = Math.max(...this.data.map(item => item[1]))
67
+ const range = Math.max(dataMax - centerLine, centerLine - dataMin, this.sd * 4)
68
+ const yMin = centerLine - range
69
+ const yMax = centerLine + range
70
+
71
+ const option = {
72
+ title: {
73
+ text: this.config.title,
74
+ subtext: this.config.subtext,
75
+ left: 'center',
76
+ textStyle: {
77
+ fontSize: 16,
78
+ fontWeight: 'bold'
79
+ },
80
+ subtextStyle: {
81
+ fontSize: 12,
82
+ color: '#666'
83
+ }
84
+ },
85
+ legend: {
86
+ bottom: 10,
87
+ data: ['测量值', '中心线', '±1SD', '±2SD', '±3SD']
88
+ },
89
+ tooltip: {
90
+ trigger: 'axis',
91
+ axisPointer: {
92
+ type: 'cross'
93
+ },
94
+ formatter: function (params) {
95
+ let result = `第${params[0].data[0]}次测量<br/>`
96
+ params.forEach(param => {
97
+ if (param.seriesName === '测量值') {
98
+ result += `${param.seriesName}: ${param.data[1]}<br/>`
99
+ }
100
+ })
101
+ return result
102
+ }
103
+ },
104
+ grid: {
105
+ left: '10%',
106
+ right: '10%',
107
+ top: '15%',
108
+ bottom: '15%'
109
+ },
110
+ xAxis: {
111
+ type: 'category',
112
+ name: '测量次数',
113
+ nameLocation: 'middle',
114
+ nameGap: 30,
115
+ axisLine: {
116
+ lineStyle: {
117
+ color: '#333'
118
+ }
119
+ },
120
+ axisTick: {
121
+ show: true
122
+ },
123
+ splitLine: {
124
+ show: false
125
+ }
126
+ },
127
+ yAxis: {
128
+ type: 'value',
129
+ name: this.config.formatter,
130
+ nameLocation: 'middle',
131
+ nameGap: 50,
132
+ nameTextStyle: {
133
+ color: '#333',
134
+ fontSize: 12
135
+ },
136
+ show: true,
137
+ axisLine: {
138
+ show: true,
139
+ lineStyle: {
140
+ color: '#333'
141
+ }
142
+ },
143
+ axisTick: {
144
+ show: true
145
+ },
146
+ axisLabel: {
147
+ show: true,
148
+ rotate: 0
149
+ },
150
+ min: yMin,
151
+ max: yMax,
152
+ splitLine: {
153
+ show: true,
154
+ lineStyle: {
155
+ type: 'dashed',
156
+ color: '#ddd'
157
+ }
158
+ }
159
+ },
160
+ series: [
161
+ {
162
+ type: 'line',
163
+ data: this.data,
164
+ symbol: 'circle',
165
+ symbolSize: 8,
166
+ lineStyle: {
167
+ color: '#1890ff',
168
+ width: 2
169
+ },
170
+ itemStyle: {
171
+ color: '#1890ff',
172
+ borderColor: '#fff',
173
+ borderWidth: 2
174
+ },
175
+ markLine: {
176
+ silent: true,
177
+ symbol: 'none',
178
+ lineStyle: {
179
+ color: '#52c41a',
180
+ width: 2,
181
+ type: 'solid'
182
+ },
183
+ data: [
184
+ {
185
+ yAxis: centerLine,
186
+ label: {
187
+ formatter: `中心线: ${centerLine}`,
188
+ position: 'insideEndTop'
189
+ }
190
+ },
191
+ {
192
+ yAxis: sd1Upper,
193
+ lineStyle: {
194
+ color: '#faad14',
195
+ type: 'dashed'
196
+ },
197
+ label: {
198
+ formatter: `+1SD: ${sd1Upper.toFixed(2)}`,
199
+ position: 'insideEndTop'
200
+ }
201
+ },
202
+ {
203
+ yAxis: sd1Lower,
204
+ lineStyle: {
205
+ color: '#faad14',
206
+ type: 'dashed'
207
+ },
208
+ label: {
209
+ formatter: `-1SD: ${sd1Lower.toFixed(2)}`,
210
+ position: 'insideEndBottom'
211
+ }
212
+ },
213
+ {
214
+ yAxis: sd2Upper,
215
+ lineStyle: {
216
+ color: '#ff7a45',
217
+ type: 'dashed'
218
+ },
219
+ label: {
220
+ formatter: `+2SD: ${sd2Upper.toFixed(2)}`,
221
+ position: 'insideEndTop'
222
+ }
223
+ },
224
+ {
225
+ yAxis: sd2Lower,
226
+ lineStyle: {
227
+ color: '#ff7a45',
228
+ type: 'dashed'
229
+ },
230
+ label: {
231
+ formatter: `-2SD: ${sd2Lower.toFixed(2)}`,
232
+ position: 'insideEndBottom'
233
+ }
234
+ },
235
+ {
236
+ yAxis: sd3Upper,
237
+ lineStyle: {
238
+ color: '#ff4d4f',
239
+ type: 'dashed'
240
+ },
241
+ label: {
242
+ formatter: `+3SD: ${sd3Upper.toFixed(2)}`,
243
+ position: 'insideEndTop'
244
+ }
245
+ },
246
+ {
247
+ yAxis: sd3Lower,
248
+ lineStyle: {
249
+ color: '#ff4d4f',
250
+ type: 'dashed'
251
+ },
252
+ label: {
253
+ formatter: `-3SD: ${sd3Lower.toFixed(2)}`,
254
+ position: 'insideEndBottom'
255
+ }
256
+ }
257
+ ]
258
+ }
259
+ }
260
+ ]
261
+ }
262
+ option && myChart.setOption(option)
263
+ }
264
+ },
265
+ watch: {
266
+ queryParamsName: {
267
+ deep: true,
268
+ immediate: true,
269
+ handler (val) {
270
+ console.log('queryParamsName', val)
271
+ this.initDome(val, {})
272
+ }
273
+ }
274
+ }
275
+ }
276
+ </script>
277
+
278
+ <style scoped lang="less">
279
+
280
+ </style>
@@ -0,0 +1,19 @@
1
+ <template>
2
+ <XChart :queryParamsName="queryParamsName"></XChart>
3
+ </template>
4
+
5
+ <script>
6
+ import XChart from './XChart.vue'
7
+
8
+ export default {
9
+ name: 'Dome',
10
+ components: {
11
+ XChart
12
+ },
13
+ data () {
14
+ return {
15
+ queryParamsName: 'qualityInspectionReportConfig'
16
+ }
17
+ }
18
+ }
19
+ </script>
@@ -66,7 +66,7 @@ path: 'example',
66
66
  // component: () => import('@vue2-client/base-client/components/common/XRate/demo.vue'),
67
67
  // component: () => import('@vue2-client/base-client/components/common/XForm/demo.vue'),
68
68
  // component: () => import('@vue2-client/base-client/components/his/XTimeSelect/XTimeSelectDemo.vue'),
69
- component: () => import('@vue2-client/base-client/components/his/XShiftSchedule/dome.vue'),
69
+ component: () => import('@vue2-client/base-client/components/his/XChart/dome.vue'),
70
70
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
71
71
  // component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
72
72
  // component: () => import('@vue2-client/pages/XPageViewExample/index.vue'),