vue2-client 1.22.4 → 1.22.6

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 (107) hide show
  1. package/.claude/settings.local.json +30 -30
  2. package/.eslintrc.js +74 -74
  3. package/.idea/MarsCodeWorkspaceAppSettings.xml +1 -2
  4. package/.idea/google-java-format.xml +6 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +18 -0
  6. package/.idea/jsLinters/eslint.xml +6 -0
  7. package/.idea/modules.xml +1 -1
  8. package/.idea/vue2-client.iml +12 -0
  9. package/.vscode/settings.json +28 -0
  10. package/Components.md +60 -60
  11. package/index.js +31 -31
  12. package/jest-transform-stub.js +8 -8
  13. package/jest.setup.js +7 -7
  14. package/package.json +1 -1
  15. package/src/assets/img/querySlotDemo.svg +15 -15
  16. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  17. package/src/base-client/components/common/CitySelect/index.js +3 -3
  18. package/src/base-client/components/common/CitySelect/index.md +109 -109
  19. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  20. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  21. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  22. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  23. package/src/base-client/components/common/Tree/index.js +2 -2
  24. package/src/base-client/components/common/Upload/index.js +3 -3
  25. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  26. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  27. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  28. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  29. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  30. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  31. package/src/base-client/components/common/XDescriptions/index.md +382 -382
  32. package/src/base-client/components/common/XForm/index.md +178 -178
  33. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  34. package/src/base-client/components/common/XStepView/index.js +3 -3
  35. package/src/base-client/components/common/XStepView/index.md +31 -31
  36. package/src/base-client/components/common/XTable/index.md +255 -255
  37. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  38. package/src/base-client/plugins/Config.js +19 -19
  39. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  40. package/src/components/Charts/Bar.vue +62 -62
  41. package/src/components/Charts/ChartCard.vue +134 -134
  42. package/src/components/Charts/Liquid.vue +67 -67
  43. package/src/components/Charts/MiniArea.vue +39 -39
  44. package/src/components/Charts/MiniBar.vue +39 -39
  45. package/src/components/Charts/MiniProgress.vue +75 -75
  46. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  47. package/src/components/Charts/Radar.vue +68 -68
  48. package/src/components/Charts/RankList.vue +77 -77
  49. package/src/components/Charts/TagCloud.vue +113 -113
  50. package/src/components/Charts/TransferBar.vue +64 -64
  51. package/src/components/Charts/Trend.vue +82 -82
  52. package/src/components/Charts/chart.less +12 -12
  53. package/src/components/Charts/smooth.area.less +13 -13
  54. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  55. package/src/components/NumberInfo/index.js +3 -3
  56. package/src/components/NumberInfo/index.less +54 -54
  57. package/src/components/NumberInfo/index.md +43 -43
  58. package/src/components/STable/index.js +953 -953
  59. package/src/components/card/ChartCard.vue +79 -79
  60. package/src/components/chart/Bar.vue +60 -60
  61. package/src/components/chart/MiniArea.vue +67 -67
  62. package/src/components/chart/MiniBar.vue +59 -59
  63. package/src/components/chart/MiniProgress.vue +57 -57
  64. package/src/components/chart/Radar.vue +80 -80
  65. package/src/components/chart/RankingList.vue +60 -60
  66. package/src/components/chart/Trend.vue +79 -79
  67. package/src/components/chart/index.less +9 -9
  68. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  69. package/src/components/input/IInput.vue +66 -66
  70. package/src/components/menu/SideMenu.vue +75 -75
  71. package/src/components/menu/menu.js +273 -273
  72. package/src/components/tool/AStepItem.vue +60 -60
  73. package/src/layouts/CommonLayout.vue +56 -56
  74. package/src/lib.js +1 -1
  75. package/src/mock/extend/index.js +84 -84
  76. package/src/mock/goods/index.js +108 -108
  77. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  78. package/src/pages/login/Login.vue +9 -7
  79. package/src/pages/login/LoginV3.vue +9 -7
  80. package/src/pages/system/dictionary/index.vue +44 -44
  81. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  82. package/src/pages/system/monitor/operLog/index.vue +37 -37
  83. package/src/pages/userInfoDetailManage/ApplySystemQuery/index.vue +18 -15
  84. package/src/pages/userInfoDetailManage/ArchiveMaintainQuery/index.vue +9 -23
  85. package/src/pages/userInfoDetailManage/CallSystemQuery/index.vue +9 -23
  86. package/src/pages/userInfoDetailManage/HandplanSystemQuery/index.vue +32 -18
  87. package/src/pages/userInfoDetailManage/RevenueSystemQuery/index.vue +18 -45
  88. package/src/pages/userInfoDetailManage/SafeCheckSystemQuery/index.vue +9 -23
  89. package/src/pages/userInfoDetailManage/WorkOrderSystemQuery/index.vue +9 -22
  90. package/src/pages/userInfoDetailManage/index.vue +14 -2
  91. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +289 -297
  92. package/src/services/api/cas.js +79 -79
  93. package/src/store/modules/setting.js +119 -119
  94. package/src/utils/errorCode.js +6 -6
  95. package/src/utils/login.js +8 -19
  96. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  97. package/.idea/.name +0 -1
  98. package/.idea/af-vue2-client.iml +0 -9
  99. package/.idea/deployment.xml +0 -14
  100. package/.idea/gradle.xml +0 -7
  101. package/.idea/libraries/contour_plot.xml +0 -9
  102. package/.idea/material_theme_project_new.xml +0 -18
  103. package/.idea/misc.xml +0 -88
  104. package/src/pages/userInfoDetailManage/ApplySystemQuery/applySystemConfig.js +0 -4
  105. package/src/pages/userInfoDetailManage/HandplanSystemQuery/handplanSystemConfig.js +0 -6
  106. package/src/pages/userInfoDetailManage/RevenueSystemQuery/revenueSystemConfig.js +0 -4
  107. package/src/pages/userInfoDetailManage/queryTabConfig.js +0 -353
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div v-if="currUserInfo" class="user-detail-apply">
3
3
  <h4 class="user-detail-apply-title">
4
- 报建系统记录
4
+ {{ panelTitle }}
5
5
  <span v-if="activeSubLabel" class="user-detail-apply-curr">{{ activeSubLabel }}</span>
6
6
  </h4>
7
7
  <a-tabs
@@ -10,14 +10,14 @@
10
10
  :tab-bar-gutter="8"
11
11
  @change="changeSubTab"
12
12
  >
13
- <a-tab-pane v-for="sub in filteredSubTabs" :key="sub.key">
13
+ <a-tab-pane v-for="sub in subTabs" :key="sub.key">
14
14
  <span slot="tab" class="user-detail-apply-sub-tab">
15
15
  <a-icon :type="sub.icon" />
16
16
  {{ sub.label }}
17
17
  </span>
18
18
  <template v-if="activeSubKey === sub.key">
19
19
  <component
20
- :is="sub.component"
20
+ :is="resolveComponent(sub.component)"
21
21
  :currUserInfo="currUserInfo"
22
22
  />
23
23
  </template>
@@ -27,19 +27,23 @@
27
27
  </template>
28
28
 
29
29
  <script>
30
- import { mapState } from 'vuex'
31
- import { filterApplySubTabs } from '@vue2-client/pages/userInfoDetailManage/ApplySystemQuery/applySystemConfig'
32
- import ApplyRecordQuery from '@vue2-client/pages/userInfoDetailManage/ApplyRecordQuery'
33
-
34
30
  export default {
35
31
  name: 'ApplySystemQuery',
36
- components: {
37
- ApplyRecordQuery
32
+ inject: {
33
+ resolveUserDetailPanel: { default: null }
38
34
  },
39
35
  props: {
40
36
  currUserInfo: {
41
37
  type: Object,
42
38
  default: () => undefined
39
+ },
40
+ panelTitle: {
41
+ type: String,
42
+ default: ''
43
+ },
44
+ subTabs: {
45
+ type: Array,
46
+ default: () => []
43
47
  }
44
48
  },
45
49
  data () {
@@ -48,7 +52,7 @@ export default {
48
52
  }
49
53
  },
50
54
  watch: {
51
- filteredSubTabs: {
55
+ subTabs: {
52
56
  immediate: true,
53
57
  handler (tabs) {
54
58
  if (!tabs.length) {
@@ -62,16 +66,15 @@ export default {
62
66
  }
63
67
  },
64
68
  computed: {
65
- ...mapState('account', { login: 'login' }),
66
- filteredSubTabs () {
67
- return filterApplySubTabs(this.login)
68
- },
69
69
  activeSubLabel () {
70
- const tab = this.filteredSubTabs.find(item => item.key === this.activeSubKey)
70
+ const tab = this.subTabs.find(item => item.key === this.activeSubKey)
71
71
  return tab?.label || ''
72
72
  }
73
73
  },
74
74
  methods: {
75
+ resolveComponent (component) {
76
+ return this.resolveUserDetailPanel ? this.resolveUserDetailPanel(component) : component
77
+ },
75
78
  changeSubTab (key) {
76
79
  this.activeSubKey = key
77
80
  }
@@ -1,15 +1,13 @@
1
1
  <template>
2
2
  <user-detail-sub-tab-panel
3
- title="档案维护记录"
3
+ :title="panelTitle"
4
4
  :currUserInfo="currUserInfo"
5
5
  :sub-tabs="subTabs"
6
6
  :panel-components="panelComponents"
7
- :filter-sub-tabs="filterSubTabs"
8
7
  />
9
8
  </template>
10
9
 
11
10
  <script>
12
- import { mapState } from 'vuex'
13
11
  import UserDetailSubTabPanel from '@vue2-client/pages/userInfoDetailManage/UserDetailSubTabPanel'
14
12
  import InfoChangeRecordQuery from '@vue2-client/pages/userInfoDetailManage/InfoChangeRecordQuery'
15
13
  import UserPriceChangeQuery from '@vue2-client/pages/userInfoDetailManage/UserPriceChangeQuery'
@@ -25,32 +23,20 @@ export default {
25
23
  currUserInfo: {
26
24
  type: Object,
27
25
  default: () => undefined
28
- }
29
- },
30
- data () {
31
- return {
32
- subTabs: [
33
- { key: 'priceChange', label: '调价记录查询', icon: 'rise', component: 'UserPriceChangeQuery' },
34
- { key: 'archiveChange', label: '档案变更记录', icon: 'form', component: 'InfoChangeRecordQuery', permission: '变更记录' }
35
- ]
26
+ },
27
+ panelTitle: {
28
+ type: String,
29
+ default: ''
30
+ },
31
+ subTabs: {
32
+ type: Array,
33
+ default: () => []
36
34
  }
37
35
  },
38
36
  computed: {
39
- ...mapState('account', { login: 'login' }),
40
37
  panelComponents () {
41
38
  return { InfoChangeRecordQuery, UserPriceChangeQuery }
42
39
  }
43
- },
44
- methods: {
45
- filterSubTabs (tabs) {
46
- const roles = this.login?.r || []
47
- return tabs.map(tab => {
48
- if (tab.component && tab.permission && !roles.includes(tab.permission)) {
49
- return { ...tab, component: null }
50
- }
51
- return tab
52
- })
53
- }
54
40
  }
55
41
  }
56
42
  </script>
@@ -1,15 +1,13 @@
1
1
  <template>
2
2
  <user-detail-sub-tab-panel
3
- title="呼叫系统"
3
+ :title="panelTitle"
4
4
  :currUserInfo="currUserInfo"
5
5
  :sub-tabs="subTabs"
6
6
  :panel-components="panelComponents"
7
- :filter-sub-tabs="filterSubTabs"
8
7
  />
9
8
  </template>
10
9
 
11
10
  <script>
12
- import { mapState } from 'vuex'
13
11
  import UserDetailSubTabPanel from '@vue2-client/pages/userInfoDetailManage/UserDetailSubTabPanel'
14
12
  import CallRecordQuery from '@vue2-client/pages/userInfoDetailManage/CallRecordQuery'
15
13
  import VisitHistoryQuery from '@vue2-client/pages/userInfoDetailManage/VisitHistoryQuery'
@@ -25,35 +23,23 @@ export default {
25
23
  currUserInfo: {
26
24
  type: Object,
27
25
  default: () => undefined
28
- }
29
- },
30
- data () {
31
- return {
32
- subTabs: [
33
- { key: 'phoneRec', label: '电话记录', icon: 'phone', component: 'CallRecordQuery' },
34
- { key: 'returnRec', label: '回访记录', icon: 'customer-service', component: 'VisitHistoryQuery' }
35
- ]
26
+ },
27
+ panelTitle: {
28
+ type: String,
29
+ default: ''
30
+ },
31
+ subTabs: {
32
+ type: Array,
33
+ default: () => []
36
34
  }
37
35
  },
38
36
  computed: {
39
- ...mapState('account', { login: 'login' }),
40
37
  panelComponents () {
41
38
  return {
42
39
  CallRecordQuery,
43
40
  VisitHistoryQuery
44
41
  }
45
42
  }
46
- },
47
- methods: {
48
- filterSubTabs (tabs) {
49
- const roles = this.login?.r || []
50
- return tabs.map(tab => {
51
- if (tab.component && tab.permission && !roles.includes(tab.permission)) {
52
- return { ...tab, component: null }
53
- }
54
- return tab
55
- })
56
- }
57
43
  }
58
44
  }
59
45
  </script>
@@ -2,7 +2,7 @@
2
2
  <div v-if="currUserInfo" class="user-detail-handplan">
3
3
  <div class="user-detail-handplan-hdr">
4
4
  <h4 class="user-detail-handplan-title">
5
- 抄表系统记录
5
+ {{ panelTitle }}
6
6
  <span v-if="activeSubLabel" class="user-detail-handplan-curr">{{ activeSubLabel }}</span>
7
7
  </h4>
8
8
  <a-tag
@@ -20,7 +20,7 @@
20
20
  :tab-bar-gutter="8"
21
21
  @change="changeSubTab"
22
22
  >
23
- <a-tab-pane v-for="sub in filteredSubTabs" :key="sub.key">
23
+ <a-tab-pane v-for="sub in subTabs" :key="sub.key">
24
24
  <span
25
25
  slot="tab"
26
26
  class="user-detail-handplan-sub-tab"
@@ -32,7 +32,7 @@
32
32
  <template v-if="activeSubKey === sub.key">
33
33
  <component
34
34
  v-if="sub.component"
35
- :is="sub.component"
35
+ :is="resolveComponent(sub.component)"
36
36
  :currUserInfo="currUserInfo"
37
37
  :handplanMode="sub.handplanMode"
38
38
  />
@@ -46,21 +46,23 @@
46
46
  </template>
47
47
 
48
48
  <script>
49
- import { mapState } from 'vuex'
50
- import { filterHandplanSubTabs, getDefaultHandplanSubTabKey } from '@vue2-client/pages/userInfoDetailManage/HandplanSystemQuery/handplanSystemConfig'
51
- import UserHandRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserHandRecordQuery'
52
- import UserMachineArrearsQuery from '@vue2-client/pages/userInfoDetailManage/UserMachineArrearsQuery'
53
-
54
49
  export default {
55
50
  name: 'HandplanSystemQuery',
56
- components: {
57
- UserHandRecordQuery,
58
- UserMachineArrearsQuery
51
+ inject: {
52
+ resolveUserDetailPanel: { default: null }
59
53
  },
60
54
  props: {
61
55
  currUserInfo: {
62
56
  type: Object,
63
57
  default: () => undefined
58
+ },
59
+ panelTitle: {
60
+ type: String,
61
+ default: ''
62
+ },
63
+ subTabs: {
64
+ type: Array,
65
+ default: () => []
64
66
  }
65
67
  },
66
68
  data () {
@@ -69,7 +71,7 @@ export default {
69
71
  }
70
72
  },
71
73
  watch: {
72
- filteredSubTabs: {
74
+ subTabs: {
73
75
  immediate: true,
74
76
  handler (tabs) {
75
77
  if (!tabs.length) {
@@ -77,21 +79,17 @@ export default {
77
79
  }
78
80
  const valid = tabs.some(tab => tab.key === this.activeSubKey)
79
81
  if (!valid) {
80
- this.activeSubKey = getDefaultHandplanSubTabKey(tabs, this.currUserInfo)
82
+ this.activeSubKey = this.getDefaultSubTabKey(tabs)
81
83
  }
82
84
  }
83
85
  }
84
86
  },
85
87
  computed: {
86
- ...mapState('account', { login: 'login' }),
87
- filteredSubTabs () {
88
- return filterHandplanSubTabs(this.login, this.currUserInfo)
89
- },
90
88
  meterTypeLabel () {
91
89
  return this.currUserInfo?.f_meter_type || ''
92
90
  },
93
91
  activeSubLabel () {
94
- const tab = this.filteredSubTabs.find(item => item.key === this.activeSubKey)
92
+ const tab = this.subTabs.find(item => item.key === this.activeSubKey)
95
93
  return tab?.label || ''
96
94
  },
97
95
  meterTypeTagColor () {
@@ -103,6 +101,22 @@ export default {
103
101
  }
104
102
  },
105
103
  methods: {
104
+ isMeterTypeMatched (tab) {
105
+ if (tab?.meterTypeEquals) {
106
+ return this.currUserInfo?.f_meter_type === tab.meterTypeEquals
107
+ }
108
+ if (tab?.meterTypeIncludes) {
109
+ return this.currUserInfo?.f_meter_type?.includes(tab.meterTypeIncludes)
110
+ }
111
+ return false
112
+ },
113
+ getDefaultSubTabKey (tabs) {
114
+ const matched = tabs.find(tab => this.isMeterTypeMatched(tab))
115
+ return matched?.key || tabs[0]?.key || ''
116
+ },
117
+ resolveComponent (component) {
118
+ return this.resolveUserDetailPanel ? this.resolveUserDetailPanel(component) : component
119
+ },
106
120
  getMeterTypeTagProps () {
107
121
  const color = this.meterTypeTagColor
108
122
  return color ? { color } : {}
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div v-if="currUserInfo" class="user-detail-revenue">
3
3
  <h4 class="user-detail-revenue-title">
4
- 营收系统记录
4
+ {{ panelTitle }}
5
5
  <span v-if="activeSubLabel" class="user-detail-revenue-curr">{{ activeSubLabel }}</span>
6
6
  </h4>
7
7
  <a-tabs
@@ -10,7 +10,7 @@
10
10
  :tab-bar-gutter="8"
11
11
  @change="changeSubTab"
12
12
  >
13
- <a-tab-pane v-for="sub in filteredSubTabs" :key="sub.key">
13
+ <a-tab-pane v-for="sub in subTabs" :key="sub.key">
14
14
  <span
15
15
  slot="tab"
16
16
  class="user-detail-revenue-sub-tab"
@@ -22,7 +22,7 @@
22
22
  <template v-if="activeSubKey === sub.key">
23
23
  <component
24
24
  v-if="sub.component"
25
- :is="sub.component"
25
+ :is="resolveComponent(sub.component)"
26
26
  :currUserInfo="currUserInfo"
27
27
  />
28
28
  <div v-else class="user-detail-revenue-empty">
@@ -35,49 +35,23 @@
35
35
  </template>
36
36
 
37
37
  <script>
38
- import { mapState } from 'vuex'
39
- import { filterRevenueSubTabs } from '@vue2-client/pages/userInfoDetailManage/RevenueSystemQuery/revenueSystemConfig'
40
- import UserRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserRecordQuery'
41
- import UserChargeRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserChargeRecordQuery'
42
- import FillCardRecordQuery from '@vue2-client/pages/userInfoDetailManage/FillCardRecordQuery'
43
- import FillGasRecordQuery from '@vue2-client/pages/userInfoDetailManage/FillGasRecordQuery'
44
- import ChangeMeterRecordQuery from '@vue2-client/pages/userInfoDetailManage/ChangeMeterRecordQuery'
45
- import OtherChargeRecordQuery from '@vue2-client/pages/userInfoDetailManage/OtherChargeRecordQuery'
46
- import TransferRecordQuery from '@vue2-client/pages/userInfoDetailManage/TransferRecordQuery'
47
- import PriceAdjustments from '@vue2-client/pages/userInfoDetailManage/PriceAdjustments'
48
- import UserException from '@vue2-client/pages/userInfoDetailManage/UserException'
49
- import InstructRecordQuery from '@vue2-client/pages/userInfoDetailManage/InstructRecordQuery'
50
- import WatchCollectionRecordQuery from '@vue2-client/pages/userInfoDetailManage/WatchCollectionRecordQuery'
51
- import UserDisableQuery from '@vue2-client/pages/userInfoDetailManage/UserDisableQuery'
52
- import UserEnableQuery from '@vue2-client/pages/userInfoDetailManage/UserEnableQuery'
53
- import UserLimitRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserLimitRecordQuery'
54
- import UserRefundQuery from '@vue2-client/pages/userInfoDetailManage/UserRefundQuery'
55
- import UserDiscountRecordQuery from '@vue2-client/pages/userInfoDetailManage/UserDiscountRecordQuery'
56
-
57
38
  export default {
58
39
  name: 'RevenueSystemQuery',
59
- components: {
60
- UserRecordQuery,
61
- UserChargeRecordQuery,
62
- FillCardRecordQuery,
63
- FillGasRecordQuery,
64
- ChangeMeterRecordQuery,
65
- OtherChargeRecordQuery,
66
- TransferRecordQuery,
67
- PriceAdjustments,
68
- UserException,
69
- InstructRecordQuery,
70
- WatchCollectionRecordQuery,
71
- UserDisableQuery,
72
- UserEnableQuery,
73
- UserLimitRecordQuery,
74
- UserRefundQuery,
75
- UserDiscountRecordQuery
40
+ inject: {
41
+ resolveUserDetailPanel: { default: null }
76
42
  },
77
43
  props: {
78
44
  currUserInfo: {
79
45
  type: Object,
80
46
  default: () => undefined
47
+ },
48
+ panelTitle: {
49
+ type: String,
50
+ default: ''
51
+ },
52
+ subTabs: {
53
+ type: Array,
54
+ default: () => []
81
55
  }
82
56
  },
83
57
  data () {
@@ -86,7 +60,7 @@ export default {
86
60
  }
87
61
  },
88
62
  watch: {
89
- filteredSubTabs: {
63
+ subTabs: {
90
64
  immediate: true,
91
65
  handler (tabs) {
92
66
  if (!tabs.length) {
@@ -100,16 +74,15 @@ export default {
100
74
  }
101
75
  },
102
76
  computed: {
103
- ...mapState('account', { login: 'login' }),
104
- filteredSubTabs () {
105
- return filterRevenueSubTabs(this.login, this.currUserInfo)
106
- },
107
77
  activeSubLabel () {
108
- const tab = this.filteredSubTabs.find(item => item.key === this.activeSubKey)
78
+ const tab = this.subTabs.find(item => item.key === this.activeSubKey)
109
79
  return tab?.label || ''
110
80
  }
111
81
  },
112
82
  methods: {
83
+ resolveComponent (component) {
84
+ return this.resolveUserDetailPanel ? this.resolveUserDetailPanel(component) : component
85
+ },
113
86
  changeSubTab (key) {
114
87
  this.activeSubKey = key
115
88
  }
@@ -1,15 +1,13 @@
1
1
  <template>
2
2
  <user-detail-sub-tab-panel
3
- title="安检系统"
3
+ :title="panelTitle"
4
4
  :currUserInfo="currUserInfo"
5
5
  :sub-tabs="subTabs"
6
6
  :panel-components="panelComponents"
7
- :filter-sub-tabs="filterSubTabs"
8
7
  />
9
8
  </template>
10
9
 
11
10
  <script>
12
- import { mapState } from 'vuex'
13
11
  import UserDetailSubTabPanel from '@vue2-client/pages/userInfoDetailManage/UserDetailSubTabPanel'
14
12
  import SafeCheckPaperV3RecordQuery from '@vue2-client/pages/userInfoDetailManage/SafeCheckPaperV3RecordQuery'
15
13
  import UserDefectDetailQuery from '@vue2-client/pages/userInfoDetailManage/UserDefectDetailQuery'
@@ -25,32 +23,20 @@ export default {
25
23
  currUserInfo: {
26
24
  type: Object,
27
25
  default: () => undefined
28
- }
29
- },
30
- data () {
31
- return {
32
- subTabs: [
33
- { key: 'safetyRec', label: '安检记录', icon: 'check-circle', component: 'SafeCheckPaperV3RecordQuery', permission: '安检查看' },
34
- { key: 'hazardRec', label: '隐患记录', icon: 'warning', component: 'UserDefectDetailQuery', permission: '安检查看' }
35
- ]
26
+ },
27
+ panelTitle: {
28
+ type: String,
29
+ default: ''
30
+ },
31
+ subTabs: {
32
+ type: Array,
33
+ default: () => []
36
34
  }
37
35
  },
38
36
  computed: {
39
- ...mapState('account', { login: 'login' }),
40
37
  panelComponents () {
41
38
  return { SafeCheckPaperV3RecordQuery, UserDefectDetailQuery }
42
39
  }
43
- },
44
- methods: {
45
- filterSubTabs (tabs) {
46
- const roles = this.login?.r || []
47
- return tabs.map(tab => {
48
- if (tab.component && tab.permission && !roles.includes(tab.permission)) {
49
- return { ...tab, component: null }
50
- }
51
- return tab
52
- })
53
- }
54
40
  }
55
41
  }
56
42
  </script>
@@ -1,15 +1,13 @@
1
1
  <template>
2
2
  <user-detail-sub-tab-panel
3
- title="工单系统"
3
+ :title="panelTitle"
4
4
  :currUserInfo="currUserInfo"
5
5
  :sub-tabs="subTabs"
6
6
  :panel-components="panelComponents"
7
- :filter-sub-tabs="filterSubTabs"
8
7
  />
9
8
  </template>
10
9
 
11
10
  <script>
12
- import { mapState } from 'vuex'
13
11
  import UserDetailSubTabPanel from '@vue2-client/pages/userInfoDetailManage/UserDetailSubTabPanel'
14
12
  import TelephoneV3RecordQuery from '@vue2-client/pages/userInfoDetailManage/TelephoneV3RecordQuery'
15
13
 
@@ -23,31 +21,20 @@ export default {
23
21
  currUserInfo: {
24
22
  type: Object,
25
23
  default: () => undefined
26
- }
27
- },
28
- data () {
29
- return {
30
- subTabs: [
31
- { key: 'workOrderRec', label: '工单记录', icon: 'copy', component: 'TelephoneV3RecordQuery', permission: '工单查看' }
32
- ]
24
+ },
25
+ panelTitle: {
26
+ type: String,
27
+ default: ''
28
+ },
29
+ subTabs: {
30
+ type: Array,
31
+ default: () => []
33
32
  }
34
33
  },
35
34
  computed: {
36
- ...mapState('account', { login: 'login' }),
37
35
  panelComponents () {
38
36
  return { TelephoneV3RecordQuery }
39
37
  }
40
- },
41
- methods: {
42
- filterSubTabs (tabs) {
43
- const roles = this.login?.r || []
44
- return tabs.map(tab => {
45
- if (tab.component && tab.permission && !roles.includes(tab.permission)) {
46
- return { ...tab, component: null }
47
- }
48
- return tab
49
- })
50
- }
51
38
  }
52
39
  }
53
40
  </script>
@@ -26,7 +26,11 @@
26
26
  <a-tag v-if="userStateTag.text" v-bind="getUserStateTagProps()">
27
27
  {{ userStateTag.text }}
28
28
  </a-tag>
29
- <a-tooltip title="刷新">
29
+ <a-tooltip
30
+ title="刷新"
31
+ placement="bottom"
32
+ :getPopupContainer="getDrawerTooltipContainer"
33
+ >
30
34
  <a-button
31
35
  class="user-detail-refresh"
32
36
  type="default"
@@ -56,7 +60,12 @@
56
60
  <a-icon :type="item.icon" class="user-detail-q-icon" :style="{ color: item.color }" />
57
61
  <div class="user-detail-q-body">
58
62
  <div class="user-detail-q-label">{{ item.label }}</div>
59
- <a-tooltip v-if="item.truncate" :title="item.value">
63
+ <a-tooltip
64
+ v-if="item.truncate"
65
+ :title="item.value"
66
+ placement="top"
67
+ :getPopupContainer="getDrawerTooltipContainer"
68
+ >
60
69
  <div class="user-detail-q-val user-detail-q-ellipsis">{{ item.value }}</div>
61
70
  </a-tooltip>
62
71
  <div v-else class="user-detail-q-val">{{ item.value }}</div>
@@ -290,6 +299,9 @@ export default {
290
299
  }
291
300
  },
292
301
  methods: {
302
+ getDrawerTooltipContainer (triggerNode) {
303
+ return triggerNode?.parentNode || document.body
304
+ },
293
305
  checkOperateReason () {
294
306
  if (this.operateReason.trim() === '') {
295
307
  this.operateReasonError = true