vue2-client 1.18.14 → 1.18.16
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 +1 -1
- package/src/base-client/components/his/HChart/HChart.vue +129 -41
- package/src/pages/userInfoDetailManage/ApplyRecordQuery/index.vue +64 -0
- package/src/pages/userInfoDetailManage/SafeCheckPaperV3RecordQuery/index.vue +64 -0
- package/src/pages/userInfoDetailManage/TelephoneV3RecordQuery/index.vue +64 -0
- package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +155 -146
package/package.json
CHANGED
|
@@ -87,6 +87,7 @@ const chartData = ref([])
|
|
|
87
87
|
const loading = ref(false)
|
|
88
88
|
let resizeObserver = null
|
|
89
89
|
const activePointIndex = ref(-1)
|
|
90
|
+
const activeBarIndex = ref(-1)
|
|
90
91
|
const selectedFilterValue = ref('')
|
|
91
92
|
const selectedSideListValue = ref('')
|
|
92
93
|
|
|
@@ -259,36 +260,111 @@ const handleListChange = (value) => {
|
|
|
259
260
|
|
|
260
261
|
// 常用图表预设,统一处理 dataset → ECharts option 的映射
|
|
261
262
|
const presetResolvers = {
|
|
262
|
-
bar: ({ dataset }) =>
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
type: 'shadow'
|
|
263
|
+
bar: ({ dataset = [], config = {}, state = {} }) => {
|
|
264
|
+
const activeIndex = typeof state.activeBarIndex === 'number' ? state.activeBarIndex : -1
|
|
265
|
+
if (!dataset.length) {
|
|
266
|
+
return {
|
|
267
|
+
xAxis: { type: 'category', data: [] },
|
|
268
|
+
yAxis: { type: 'value' },
|
|
269
|
+
series: [{ type: 'bar', data: [] }]
|
|
270
270
|
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
const barColor = config.barColor || '#3362DA'
|
|
274
|
+
const barHighlightColor = config.barHighlightColor || '#4C7CFF'
|
|
275
|
+
const valueSuffix = config.valueSuffix || ''
|
|
276
|
+
|
|
277
|
+
const tooltipFormatter = (params = []) => {
|
|
278
|
+
if (!params.length) return ''
|
|
279
|
+
const point = params.find(item => item.seriesIndex === 0) || params[0]
|
|
280
|
+
const value = typeof point.data === 'object' ? point.data?.value : point.data
|
|
281
|
+
return `${point.axisValue}<br/>${value}${valueSuffix}`
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
return {
|
|
285
|
+
animationDuration: 420,
|
|
286
|
+
animationEasing: 'cubicOut',
|
|
287
|
+
animationDelay: (_, idx) => idx * 40,
|
|
288
|
+
tooltip: {
|
|
289
|
+
trigger: 'axis',
|
|
290
|
+
backgroundColor: '#1F5BFF',
|
|
291
|
+
borderWidth: 0,
|
|
292
|
+
textStyle: { color: '#fff' },
|
|
293
|
+
axisPointer: {
|
|
294
|
+
type: 'shadow',
|
|
295
|
+
shadowStyle: {
|
|
296
|
+
color: 'rgba(51, 98, 218, 0.08)'
|
|
297
|
+
}
|
|
281
298
|
},
|
|
282
|
-
|
|
299
|
+
formatter: tooltipFormatter
|
|
300
|
+
},
|
|
301
|
+
grid: {
|
|
302
|
+
top: 40,
|
|
303
|
+
left: 60,
|
|
304
|
+
right: 40,
|
|
305
|
+
bottom: 40,
|
|
306
|
+
containLabel: true
|
|
307
|
+
},
|
|
308
|
+
xAxis: {
|
|
309
|
+
type: 'category',
|
|
310
|
+
data: dataset.map(item => item.label),
|
|
311
|
+
axisLine: { lineStyle: { color: '#C8D2E8' } },
|
|
312
|
+
axisLabel: { color: '#5C6C8C', fontWeight: 500 },
|
|
313
|
+
axisTick: { show: false },
|
|
314
|
+
splitLine: { show: false }
|
|
315
|
+
},
|
|
316
|
+
yAxis: {
|
|
317
|
+
type: 'value',
|
|
318
|
+
min: 0,
|
|
319
|
+
max: config.yMax ?? 100,
|
|
320
|
+
minInterval: 1,
|
|
321
|
+
axisLine: { show: false },
|
|
322
|
+
axisTick: { show: false },
|
|
323
|
+
axisLabel: {
|
|
324
|
+
color: '#5C6C8C',
|
|
325
|
+
fontWeight: 500,
|
|
326
|
+
formatter: value => `${value}${valueSuffix}`
|
|
327
|
+
},
|
|
328
|
+
splitLine: {
|
|
329
|
+
show: true,
|
|
330
|
+
lineStyle: { type: 'dashed', color: '#E0E6F1' }
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
series: [
|
|
334
|
+
{
|
|
335
|
+
type: 'bar',
|
|
336
|
+
data: dataset.map((item, idx) => ({
|
|
337
|
+
value: item.value,
|
|
338
|
+
barWidth: idx === activeIndex ? 10 : 5
|
|
339
|
+
})),
|
|
283
340
|
itemStyle: {
|
|
284
|
-
color:
|
|
285
|
-
|
|
286
|
-
|
|
341
|
+
color: barColor,
|
|
342
|
+
borderRadius: [6, 6, 0, 0]
|
|
343
|
+
},
|
|
344
|
+
label: {
|
|
345
|
+
show: true,
|
|
346
|
+
position: 'top',
|
|
347
|
+
color: barColor,
|
|
348
|
+
fontWeight: 600,
|
|
349
|
+
formatter: params => {
|
|
350
|
+
const value = typeof params.data === 'object' ? params.data?.value : params.data
|
|
351
|
+
return `${value}${valueSuffix}`
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
emphasis: {
|
|
355
|
+
itemStyle: {
|
|
356
|
+
color: barHighlightColor,
|
|
357
|
+
shadowBlur: 18,
|
|
358
|
+
shadowColor: 'rgba(76, 124, 255, 0.45)'
|
|
359
|
+
},
|
|
360
|
+
label: {
|
|
361
|
+
color: barHighlightColor
|
|
362
|
+
}
|
|
287
363
|
}
|
|
288
364
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
}
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
},
|
|
292
368
|
line: ({ dataset = [], config = {}, state = {} }) => {
|
|
293
369
|
if (!dataset.length) {
|
|
294
370
|
return {
|
|
@@ -598,6 +674,7 @@ const loadChartData = async (config) => {
|
|
|
598
674
|
if (staticDataset) {
|
|
599
675
|
chartData.value = staticDataset
|
|
600
676
|
activePointIndex.value = -1
|
|
677
|
+
activeBarIndex.value = -1
|
|
601
678
|
renderChart()
|
|
602
679
|
emit('dataLoaded', chartData.value)
|
|
603
680
|
return
|
|
@@ -615,12 +692,14 @@ const loadChartData = async (config) => {
|
|
|
615
692
|
}
|
|
616
693
|
chartData.value = transformedData
|
|
617
694
|
activePointIndex.value = -1
|
|
695
|
+
activeBarIndex.value = -1
|
|
618
696
|
renderChart()
|
|
619
697
|
emit('dataLoaded', transformedData)
|
|
620
698
|
} else {
|
|
621
699
|
// 没有数据源,使用空数据
|
|
622
700
|
chartData.value = []
|
|
623
701
|
activePointIndex.value = -1
|
|
702
|
+
activeBarIndex.value = -1
|
|
624
703
|
renderChart()
|
|
625
704
|
}
|
|
626
705
|
} catch (error) {
|
|
@@ -632,13 +711,21 @@ const loadChartData = async (config) => {
|
|
|
632
711
|
// 渲染图表
|
|
633
712
|
const handleChartClick = (params) => {
|
|
634
713
|
const config = chartConfig.value || props.config
|
|
635
|
-
if (config?.
|
|
636
|
-
if (params
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
714
|
+
if (!config || params?.componentType !== 'series') return
|
|
715
|
+
if (config.type === 'line' && params.seriesType === 'line') {
|
|
716
|
+
if (typeof params.dataIndex !== 'number') return
|
|
717
|
+
if (activePointIndex.value === params.dataIndex) return
|
|
718
|
+
activePointIndex.value = params.dataIndex
|
|
719
|
+
renderChart()
|
|
720
|
+
return
|
|
721
|
+
}
|
|
722
|
+
if (config.type === 'bar' && params.seriesType === 'bar') {
|
|
723
|
+
if (typeof params.dataIndex !== 'number') return
|
|
724
|
+
const nextIndex = activeBarIndex.value === params.dataIndex ? -1 : params.dataIndex
|
|
725
|
+
if (activeBarIndex.value === nextIndex) return
|
|
726
|
+
activeBarIndex.value = nextIndex
|
|
727
|
+
renderChart()
|
|
728
|
+
}
|
|
642
729
|
}
|
|
643
730
|
|
|
644
731
|
const renderChart = () => {
|
|
@@ -666,7 +753,10 @@ const renderChart = () => {
|
|
|
666
753
|
const preset = resolver({
|
|
667
754
|
dataset: chartData.value,
|
|
668
755
|
config,
|
|
669
|
-
state: {
|
|
756
|
+
state: {
|
|
757
|
+
activePointIndex: activePointIndex.value,
|
|
758
|
+
activeBarIndex: activeBarIndex.value
|
|
759
|
+
}
|
|
670
760
|
})
|
|
671
761
|
|
|
672
762
|
// 处理颜色配置:如果只有一个颜色,生成渐变数组
|
|
@@ -689,6 +779,7 @@ const renderChart = () => {
|
|
|
689
779
|
if (config.options?.series && preset.series) {
|
|
690
780
|
// 分离需要特殊处理的配置项
|
|
691
781
|
const { xAxis: customXAxis, yAxis: customYAxis, series: customSeries, color: _, ...restOptions } = config.options
|
|
782
|
+
const normalizedCustomSeries = Array.isArray(customSeries) ? customSeries : [customSeries]
|
|
692
783
|
|
|
693
784
|
finalOptions = {
|
|
694
785
|
...finalOptions,
|
|
@@ -713,14 +804,11 @@ const renderChart = () => {
|
|
|
713
804
|
...customYAxis
|
|
714
805
|
}
|
|
715
806
|
}),
|
|
716
|
-
series:
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
data: preset.series[0].data
|
|
722
|
-
}
|
|
723
|
-
]
|
|
807
|
+
series: preset.series.map((seriesItem, idx) => ({
|
|
808
|
+
...seriesItem,
|
|
809
|
+
...(normalizedCustomSeries[idx] || {}),
|
|
810
|
+
data: seriesItem.data
|
|
811
|
+
}))
|
|
724
812
|
}
|
|
725
813
|
} else {
|
|
726
814
|
// 没有自定义 series 的情况
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<a-card :bordered="false" v-if="currUserInfo">
|
|
3
|
+
<x-form-table
|
|
4
|
+
title="报建记录查询"
|
|
5
|
+
:queryParamsName="queryParamsName"
|
|
6
|
+
:fixedQueryForm="fixedQueryForm"
|
|
7
|
+
@action="action"
|
|
8
|
+
service-name="af-revenue"
|
|
9
|
+
ref="xFormTable">
|
|
10
|
+
</x-form-table>
|
|
11
|
+
</a-card>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
import { mapState } from 'vuex'
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
name: 'ApplyRecordQuery',
|
|
19
|
+
components: {
|
|
20
|
+
XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable/XFormTable.vue')
|
|
21
|
+
},
|
|
22
|
+
data () {
|
|
23
|
+
return {
|
|
24
|
+
// 查询配置名称
|
|
25
|
+
queryParamsName: 'ApplyRecordQueryCRUD',
|
|
26
|
+
// 查询表单固定值
|
|
27
|
+
fixedQueryForm: { ab_f_userinfo_id: this.currUserInfo.f_userinfo_id },
|
|
28
|
+
// 是否显示详情抽屉
|
|
29
|
+
detailVisible: false,
|
|
30
|
+
// 当前记录
|
|
31
|
+
record: {}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
props: {
|
|
35
|
+
currUserInfo: {
|
|
36
|
+
type: Object,
|
|
37
|
+
default: () => undefined
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
mounted () {
|
|
41
|
+
this.$refs.xFormTable.refresh(true)
|
|
42
|
+
},
|
|
43
|
+
methods: {
|
|
44
|
+
action (record, id, actionType) {
|
|
45
|
+
this.detailVisible = true
|
|
46
|
+
console.log('触发了详情操作', record, id, actionType)
|
|
47
|
+
},
|
|
48
|
+
onClose () {
|
|
49
|
+
this.detailVisible = false
|
|
50
|
+
// 关闭详情之后重新查询表单
|
|
51
|
+
this.$refs.xFormTable.refreshTable(true)
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
computed: {
|
|
56
|
+
...mapState('account', { currUser: 'user' }),
|
|
57
|
+
...mapState('setting', { isMobile: 'isMobile' })
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
<style scoped>
|
|
63
|
+
|
|
64
|
+
</style>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<a-card :bordered="false" v-if="currUserInfo">
|
|
3
|
+
<x-form-table
|
|
4
|
+
title="安检记录查询"
|
|
5
|
+
:queryParamsName="queryParamsName"
|
|
6
|
+
:fixedQueryForm="fixedQueryForm"
|
|
7
|
+
@action="action"
|
|
8
|
+
service-name="af-revenue"
|
|
9
|
+
ref="xFormTable">
|
|
10
|
+
</x-form-table>
|
|
11
|
+
</a-card>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
import { mapState } from 'vuex'
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
name: 'SafeCheckPaperV3RecordQuery',
|
|
19
|
+
components: {
|
|
20
|
+
XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable/XFormTable.vue')
|
|
21
|
+
},
|
|
22
|
+
data () {
|
|
23
|
+
return {
|
|
24
|
+
// 查询配置名称
|
|
25
|
+
queryParamsName: 'SafeCheckRecordQueryCRUD',
|
|
26
|
+
// 查询表单固定值
|
|
27
|
+
fixedQueryForm: { tcp_f_userinfoid: this.currUserInfo.f_userinfo_id },
|
|
28
|
+
// 是否显示详情抽屉
|
|
29
|
+
detailVisible: false,
|
|
30
|
+
// 当前记录
|
|
31
|
+
record: {}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
props: {
|
|
35
|
+
currUserInfo: {
|
|
36
|
+
type: Object,
|
|
37
|
+
default: () => undefined
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
mounted () {
|
|
41
|
+
this.$refs.xFormTable.refresh(true)
|
|
42
|
+
},
|
|
43
|
+
methods: {
|
|
44
|
+
action (record, id, actionType) {
|
|
45
|
+
this.detailVisible = true
|
|
46
|
+
console.log('触发了详情操作', record, id, actionType)
|
|
47
|
+
},
|
|
48
|
+
onClose () {
|
|
49
|
+
this.detailVisible = false
|
|
50
|
+
// 关闭详情之后重新查询表单
|
|
51
|
+
this.$refs.xFormTable.refreshTable(true)
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
computed: {
|
|
56
|
+
...mapState('account', { currUser: 'user' }),
|
|
57
|
+
...mapState('setting', { isMobile: 'isMobile' })
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
<style scoped>
|
|
63
|
+
|
|
64
|
+
</style>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<a-card :bordered="false" v-if="currUserInfo">
|
|
3
|
+
<x-form-table
|
|
4
|
+
title="工单记录查询"
|
|
5
|
+
:queryParamsName="queryParamsName"
|
|
6
|
+
:fixedQueryForm="fixedQueryForm"
|
|
7
|
+
@action="action"
|
|
8
|
+
service-name="af-revenue"
|
|
9
|
+
ref="xFormTable">
|
|
10
|
+
</x-form-table>
|
|
11
|
+
</a-card>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
import { mapState } from 'vuex'
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
name: 'TelephoneV3RecordQuery',
|
|
19
|
+
components: {
|
|
20
|
+
XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable/XFormTable.vue')
|
|
21
|
+
},
|
|
22
|
+
data () {
|
|
23
|
+
return {
|
|
24
|
+
// 查询配置名称
|
|
25
|
+
queryParamsName: 'TelephoneRecordQueryCRUD',
|
|
26
|
+
// 查询表单固定值
|
|
27
|
+
fixedQueryForm: { ts_f_userinfo_id: this.currUserInfo.f_userinfo_id },
|
|
28
|
+
// 是否显示详情抽屉
|
|
29
|
+
detailVisible: false,
|
|
30
|
+
// 当前记录
|
|
31
|
+
record: {}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
props: {
|
|
35
|
+
currUserInfo: {
|
|
36
|
+
type: Object,
|
|
37
|
+
default: () => undefined
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
mounted () {
|
|
41
|
+
this.$refs.xFormTable.refresh(true)
|
|
42
|
+
},
|
|
43
|
+
methods: {
|
|
44
|
+
action (record, id, actionType) {
|
|
45
|
+
this.detailVisible = true
|
|
46
|
+
console.log('触发了详情操作', record, id, actionType)
|
|
47
|
+
},
|
|
48
|
+
onClose () {
|
|
49
|
+
this.detailVisible = false
|
|
50
|
+
// 关闭详情之后重新查询表单
|
|
51
|
+
this.$refs.xFormTable.refreshTable(true)
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
computed: {
|
|
56
|
+
...mapState('account', { currUser: 'user' }),
|
|
57
|
+
...mapState('setting', { isMobile: 'isMobile' })
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
<style scoped>
|
|
63
|
+
|
|
64
|
+
</style>
|
|
@@ -1,146 +1,155 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<a-tabs :activeKey="activeKey" @change="changeTab">
|
|
3
|
-
<a-tab-pane
|
|
4
|
-
v-for="tab in filteredTabs"
|
|
5
|
-
:key="tab.key"
|
|
6
|
-
:tab="tab.label"
|
|
7
|
-
>
|
|
8
|
-
<component
|
|
9
|
-
:is="tab.component"
|
|
10
|
-
:currUserInfo="userInfo"
|
|
11
|
-
v-if="activeKey === tab.key && userInfo"
|
|
12
|
-
></component>
|
|
13
|
-
</a-tab-pane>
|
|
14
|
-
</a-tabs>
|
|
15
|
-
</template>
|
|
16
|
-
|
|
17
|
-
<script>
|
|
18
|
-
import { mapState } from 'vuex'
|
|
19
|
-
import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'
|
|
20
|
-
import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
|
|
21
|
-
import XDescriptions from '@vue2-client/base-client/components/common/XDescriptions/XDescriptions.vue'
|
|
22
|
-
import UserRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserRecordQuery'
|
|
23
|
-
import MachineRecordQuery from '@vue2-client/pages/userInfoDetailManage/MachineRecordQuery'
|
|
24
|
-
import UserChargeRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserChargeRecordQuery'
|
|
25
|
-
import UserHandRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserHandRecordQuery'
|
|
26
|
-
import FillCardRecordQuery from '@vue2-client/pages/userInfoDetailManage/FillCardRecordQuery'
|
|
27
|
-
import FillGasRecordQuery from '@vue2-client/pages/userInfoDetailManage/FillGasRecordQuery'
|
|
28
|
-
import ChangeMeterRecordQuery from '@vue2-client/pages/userInfoDetailManage/ChangeMeterRecordQuery'
|
|
29
|
-
import InfoChangeRecordQuery from '@vue2-client/pages/userInfoDetailManage/InfoChangeRecordQuery'
|
|
30
|
-
import InstructRecordQuery from '@vue2-client/pages/userInfoDetailManage/InstructRecordQuery'
|
|
31
|
-
import MeterParamRecordQuery from '@vue2-client/pages/userInfoDetailManage/MeterParamRecordQuery'
|
|
32
|
-
import OtherChargeRecordQuery from '@vue2-client/pages/userInfoDetailManage/OtherChargeRecordQuery'
|
|
33
|
-
import TransferRecordQuery from '@vue2-client/pages/userInfoDetailManage/TransferRecordQuery'
|
|
34
|
-
import WatchCollectionRecordQuery from '@vue2-client/pages/userInfoDetailManage/WatchCollectionRecordQuery'
|
|
35
|
-
import UserException from '@vue2-client/pages/userInfoDetailManage/UserException'
|
|
36
|
-
import PriceAdjustments from '@vue2-client/pages/userInfoDetailManage/PriceAdjustments'
|
|
37
|
-
import uploadFilesHistory from '@vue2-client/pages/userInfoDetailManage/uploadFilesHistory'
|
|
38
|
-
import InsuranceDetailQuery from '@vue2-client/pages/userInfoDetailManage/InsuranceDetailQuery'
|
|
39
|
-
import ExceptionRecordQuery from '@vue2-client/pages/userInfoDetailManage/ExceptionRecordQuery'
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
this.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
:
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<a-tabs :activeKey="activeKey" @change="changeTab">
|
|
3
|
+
<a-tab-pane
|
|
4
|
+
v-for="tab in filteredTabs"
|
|
5
|
+
:key="tab.key"
|
|
6
|
+
:tab="tab.label"
|
|
7
|
+
>
|
|
8
|
+
<component
|
|
9
|
+
:is="tab.component"
|
|
10
|
+
:currUserInfo="userInfo"
|
|
11
|
+
v-if="activeKey === tab.key && userInfo"
|
|
12
|
+
></component>
|
|
13
|
+
</a-tab-pane>
|
|
14
|
+
</a-tabs>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
import { mapState } from 'vuex'
|
|
19
|
+
import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'
|
|
20
|
+
import XAddNativeForm from '@vue2-client/base-client/components/common/XAddNativeForm/XAddNativeForm.vue'
|
|
21
|
+
import XDescriptions from '@vue2-client/base-client/components/common/XDescriptions/XDescriptions.vue'
|
|
22
|
+
import UserRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserRecordQuery'
|
|
23
|
+
import MachineRecordQuery from '@vue2-client/pages/userInfoDetailManage/MachineRecordQuery'
|
|
24
|
+
import UserChargeRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserChargeRecordQuery'
|
|
25
|
+
import UserHandRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserHandRecordQuery'
|
|
26
|
+
import FillCardRecordQuery from '@vue2-client/pages/userInfoDetailManage/FillCardRecordQuery'
|
|
27
|
+
import FillGasRecordQuery from '@vue2-client/pages/userInfoDetailManage/FillGasRecordQuery'
|
|
28
|
+
import ChangeMeterRecordQuery from '@vue2-client/pages/userInfoDetailManage/ChangeMeterRecordQuery'
|
|
29
|
+
import InfoChangeRecordQuery from '@vue2-client/pages/userInfoDetailManage/InfoChangeRecordQuery'
|
|
30
|
+
import InstructRecordQuery from '@vue2-client/pages/userInfoDetailManage/InstructRecordQuery'
|
|
31
|
+
import MeterParamRecordQuery from '@vue2-client/pages/userInfoDetailManage/MeterParamRecordQuery'
|
|
32
|
+
import OtherChargeRecordQuery from '@vue2-client/pages/userInfoDetailManage/OtherChargeRecordQuery'
|
|
33
|
+
import TransferRecordQuery from '@vue2-client/pages/userInfoDetailManage/TransferRecordQuery'
|
|
34
|
+
import WatchCollectionRecordQuery from '@vue2-client/pages/userInfoDetailManage/WatchCollectionRecordQuery'
|
|
35
|
+
import UserException from '@vue2-client/pages/userInfoDetailManage/UserException'
|
|
36
|
+
import PriceAdjustments from '@vue2-client/pages/userInfoDetailManage/PriceAdjustments'
|
|
37
|
+
import uploadFilesHistory from '@vue2-client/pages/userInfoDetailManage/uploadFilesHistory'
|
|
38
|
+
import InsuranceDetailQuery from '@vue2-client/pages/userInfoDetailManage/InsuranceDetailQuery'
|
|
39
|
+
import ExceptionRecordQuery from '@vue2-client/pages/userInfoDetailManage/ExceptionRecordQuery'
|
|
40
|
+
import ApplyRecordQuery from '@vue2-client/pages/userInfoDetailManage/ApplyRecordQuery'
|
|
41
|
+
import SafeCheckPaperV3RecordQuery from '@vue2-client/pages/userInfoDetailManage/SafeCheckPaperV3RecordQuery'
|
|
42
|
+
import TelephoneV3RecordQuery from '@vue2-client/pages/userInfoDetailManage/TelephoneV3RecordQuery'
|
|
43
|
+
export default {
|
|
44
|
+
name: 'UserInfoDetailQueryTabs',
|
|
45
|
+
components: {
|
|
46
|
+
XFormTable,
|
|
47
|
+
XDescriptions,
|
|
48
|
+
XAddNativeForm,
|
|
49
|
+
UserRecordQuery,
|
|
50
|
+
MachineRecordQuery,
|
|
51
|
+
UserChargeRecordQuery,
|
|
52
|
+
FillCardRecordQuery,
|
|
53
|
+
FillGasRecordQuery,
|
|
54
|
+
ChangeMeterRecordQuery,
|
|
55
|
+
InfoChangeRecordQuery,
|
|
56
|
+
InstructRecordQuery,
|
|
57
|
+
MeterParamRecordQuery,
|
|
58
|
+
OtherChargeRecordQuery,
|
|
59
|
+
WatchCollectionRecordQuery,
|
|
60
|
+
TransferRecordQuery,
|
|
61
|
+
UserHandRecordQuery,
|
|
62
|
+
UserException,
|
|
63
|
+
PriceAdjustments,
|
|
64
|
+
uploadFilesHistory,
|
|
65
|
+
InsuranceDetailQuery,
|
|
66
|
+
ExceptionRecordQuery,
|
|
67
|
+
ApplyRecordQuery,
|
|
68
|
+
SafeCheckPaperV3RecordQuery,
|
|
69
|
+
TelephoneV3RecordQuery
|
|
70
|
+
},
|
|
71
|
+
props: {
|
|
72
|
+
userInfo: {
|
|
73
|
+
type: Object,
|
|
74
|
+
default: () => undefined
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
data () {
|
|
78
|
+
return {
|
|
79
|
+
activeKey: '1',
|
|
80
|
+
tabs: [
|
|
81
|
+
{ key: '1', label: '流水查询', permission: '流水查询', component: 'UserRecordQuery' },
|
|
82
|
+
{
|
|
83
|
+
key: '2',
|
|
84
|
+
label: '机表流水查询',
|
|
85
|
+
permission: '机表流水查询',
|
|
86
|
+
component: 'MachineRecordQuery',
|
|
87
|
+
condition: () => this.userInfo?.f_meter_type === '机表'
|
|
88
|
+
},
|
|
89
|
+
{ key: '3', label: '收费查询', permission: '收费查询', component: 'UserChargeRecordQuery' },
|
|
90
|
+
{ key: '4', label: '抄表记录', permission: '抄表记录', component: 'UserHandRecordQuery' },
|
|
91
|
+
{
|
|
92
|
+
key: '5',
|
|
93
|
+
label: '补卡查询',
|
|
94
|
+
permission: '补卡查询',
|
|
95
|
+
component: 'FillCardRecordQuery',
|
|
96
|
+
condition: () => this.userInfo?.f_meter_type?.includes('卡表')
|
|
97
|
+
},
|
|
98
|
+
{ key: '6', label: '补气查询', permission: '补气查询', component: 'FillGasRecordQuery' },
|
|
99
|
+
{ key: '7', label: '换表查询', permission: '换表查询', component: 'ChangeMeterRecordQuery' },
|
|
100
|
+
{ key: '8', label: '其他收费', permission: '其他收费', component: 'OtherChargeRecordQuery' },
|
|
101
|
+
{ key: '9', label: '过户查询', permission: '过户查询', component: 'TransferRecordQuery' },
|
|
102
|
+
{ key: '10', label: '档案变更记录', permission: '变更记录', component: 'InfoChangeRecordQuery' },
|
|
103
|
+
{
|
|
104
|
+
key: '11',
|
|
105
|
+
label: '指令查看',
|
|
106
|
+
permission: '指令查看',
|
|
107
|
+
component: 'InstructRecordQuery',
|
|
108
|
+
condition: () => this.userInfo?.f_meter_type === '物联网表'
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
key: '12',
|
|
112
|
+
label: '表具采集',
|
|
113
|
+
permission: '表具采集',
|
|
114
|
+
component: 'WatchCollectionRecordQuery',
|
|
115
|
+
condition: () => this.userInfo?.f_meter_type === '物联网表'
|
|
116
|
+
},
|
|
117
|
+
{ key: '13', label: '流量计参数查看', permission: '流量计参数查看', component: 'MeterParamRecordQuery' },
|
|
118
|
+
{ key: '14', label: '异常报警', permission: '异常报警', component: 'UserException' },
|
|
119
|
+
{ key: '15', label: '价格调整', permission: '价格调整', component: 'PriceAdjustments' },
|
|
120
|
+
{ key: '16', label: '附件查看', permission: '附件查看', component: 'uploadFilesHistory' },
|
|
121
|
+
{ key: '17', label: '保险明细', permission: '保险明细', component: 'InsuranceDetailQuery' },
|
|
122
|
+
{ key: '18', label: '异常查看', permission: '异常查看', component: 'ExceptionRecordQuery', condition: () => this.userInfo?.f_meter_type === '物联网表' },
|
|
123
|
+
{ key: '19', label: '报建查看', permission: '报建查看', component: 'ApplyRecordQuery' },
|
|
124
|
+
{ key: '20', label: '安检查看', permission: '安检查看', component: 'SafeCheckPaperV3RecordQuery' },
|
|
125
|
+
{ key: '21', label: '工单查看', permission: '工单查看', component: 'TelephoneV3RecordQuery' },
|
|
126
|
+
],
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
computed: {
|
|
130
|
+
...mapState('account', { currUser: 'user', login: 'login' }),
|
|
131
|
+
...mapState('setting', { isMobile: 'isMobile' }),
|
|
132
|
+
currUserInfo () {
|
|
133
|
+
return this.userInfo
|
|
134
|
+
},
|
|
135
|
+
filteredTabs () {
|
|
136
|
+
return this.tabs.filter((tab) => {
|
|
137
|
+
const hasPermission = this.login?.r.includes(tab.permission)
|
|
138
|
+
const meetsCondition = tab.condition ? tab.condition() : true
|
|
139
|
+
return hasPermission && meetsCondition
|
|
140
|
+
})
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
methods: {
|
|
144
|
+
changeTab (key) {
|
|
145
|
+
this.activeKey = key
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
}
|
|
149
|
+
</script>
|
|
150
|
+
|
|
151
|
+
<style scoped lang="less">
|
|
152
|
+
:deep(.ant-statistic-content-value) {
|
|
153
|
+
color: @primary-color;
|
|
154
|
+
}
|
|
155
|
+
</style>
|