vue2-client 1.18.35 → 1.18.37

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 (100) hide show
  1. package/.eslintrc.js +90 -90
  2. package/Components.md +60 -60
  3. package/docs/index.md +30 -30
  4. package/index.js +31 -31
  5. package/jest-transform-stub.js +8 -8
  6. package/jest.setup.js +7 -7
  7. package/package.json +1 -1
  8. package/src/assets/img/querySlotDemo.svg +15 -15
  9. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  10. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  11. package/src/base-client/components/common/CitySelect/CitySelect.vue +9 -1
  12. package/src/base-client/components/common/CitySelect/index.js +3 -3
  13. package/src/base-client/components/common/CitySelect/index.md +109 -109
  14. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  15. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  16. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  17. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  18. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  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/FormGroupQuery/FormGroupQuery.vue +166 -166
  22. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  23. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  24. package/src/base-client/components/common/HIS/HFormTable/HFormTable.vue +22 -0
  25. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  26. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  27. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  28. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  29. package/src/base-client/components/common/Tree/index.js +2 -2
  30. package/src/base-client/components/common/Upload/index.js +3 -3
  31. package/src/base-client/components/common/XAddNativeForm/demo.vue +2 -7
  32. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  33. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  34. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  35. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  36. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  37. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  38. package/src/base-client/components/common/XDescriptions/index.md +322 -322
  39. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  40. package/src/base-client/components/common/XForm/index.md +178 -178
  41. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  42. package/src/base-client/components/common/XFormTable/demo.vue +125 -125
  43. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  44. package/src/base-client/components/common/XStepView/index.js +3 -3
  45. package/src/base-client/components/common/XStepView/index.md +31 -31
  46. package/src/base-client/components/common/XTable/XTable.vue +1715 -1715
  47. package/src/base-client/components/common/XTable/XTableWrapper.vue +759 -756
  48. package/src/base-client/components/common/XTable/index.md +255 -255
  49. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  50. package/src/base-client/plugins/Config.js +19 -19
  51. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  52. package/src/components/Charts/Bar.vue +62 -62
  53. package/src/components/Charts/ChartCard.vue +134 -134
  54. package/src/components/Charts/Liquid.vue +67 -67
  55. package/src/components/Charts/MiniArea.vue +39 -39
  56. package/src/components/Charts/MiniBar.vue +39 -39
  57. package/src/components/Charts/MiniProgress.vue +75 -75
  58. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  59. package/src/components/Charts/Radar.vue +68 -68
  60. package/src/components/Charts/RankList.vue +77 -77
  61. package/src/components/Charts/TagCloud.vue +113 -113
  62. package/src/components/Charts/TransferBar.vue +64 -64
  63. package/src/components/Charts/Trend.vue +82 -82
  64. package/src/components/Charts/chart.less +12 -12
  65. package/src/components/Charts/smooth.area.less +13 -13
  66. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  67. package/src/components/NumberInfo/index.js +3 -3
  68. package/src/components/NumberInfo/index.less +54 -54
  69. package/src/components/NumberInfo/index.md +43 -43
  70. package/src/components/card/ChartCard.vue +79 -79
  71. package/src/components/chart/Bar.vue +60 -60
  72. package/src/components/chart/MiniArea.vue +67 -67
  73. package/src/components/chart/MiniBar.vue +59 -59
  74. package/src/components/chart/MiniProgress.vue +57 -57
  75. package/src/components/chart/Radar.vue +80 -80
  76. package/src/components/chart/RankingList.vue +60 -60
  77. package/src/components/chart/Trend.vue +79 -79
  78. package/src/components/chart/index.less +9 -9
  79. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  80. package/src/components/input/IInput.vue +66 -66
  81. package/src/components/menu/SideMenu.vue +75 -75
  82. package/src/components/menu/menu.js +273 -273
  83. package/src/components/tool/AStepItem.vue +60 -60
  84. package/src/layouts/CommonLayout.vue +56 -56
  85. package/src/layouts/header/HeaderNotice.vue +177 -177
  86. package/src/lib.js +1 -1
  87. package/src/mock/extend/index.js +84 -84
  88. package/src/mock/goods/index.js +108 -108
  89. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +1 -1
  90. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  91. package/src/pages/system/dictionary/index.vue +44 -44
  92. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  93. package/src/pages/system/monitor/operLog/index.vue +37 -37
  94. package/src/router/async/router.map.js +2 -2
  95. package/src/services/api/cas.js +79 -79
  96. package/src/store/modules/setting.js +119 -119
  97. package/src/utils/authority-utils.js +85 -85
  98. package/src/utils/errorCode.js +6 -6
  99. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  100. package/tests/unit/a.log +0 -0
@@ -1,232 +1,232 @@
1
- <template>
2
- <a-drawer
3
- title="字典详情"
4
- placement="right"
5
- :width="isMobile ? screenWidth : screenWidth * 0.85"
6
- :visible="visible"
7
- @close="onClose"
8
- >
9
- <a-spin :spinning="loadDetails">
10
- <a-page-header
11
- :title="'字典名称:' + details.f_name"
12
- >
13
- <div class="row">
14
- <div class="content">
15
- <a-descriptions size="small" :column="isMobile ? 1 : 2">
16
- <a-descriptions-item label="字典编号">{{ details.id }}</a-descriptions-item>
17
- <a-descriptions-item label="字典键">{{ details.f_key }}</a-descriptions-item>
18
- <a-descriptions-item label="备注">{{ details.f_remark }}</a-descriptions-item>
19
- <a-descriptions-item label="创建时间">{{ format(details.f_input_date) }}</a-descriptions-item>
20
- </a-descriptions>
21
- </div>
22
- <div class="extra">
23
- <a-row class="status-list">
24
- <a-col :xs="12" :sm="24">
25
- </a-col>
26
- </a-row>
27
- </div>
28
- </div>
29
- <!-- actions -->
30
- <template #extra>
31
- <a-button-group style="margin-right: 4px;">
32
- <a-button type="dashed" @click="initView" :loading="loadDetails">刷新</a-button>
33
- </a-button-group>
34
- </template>
35
- <template slot="footer">
36
- <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
37
- <template v-for="value in tabList">
38
- <a-tab-pane :key="value.key" :tab="value.tab"/>
39
- </template>
40
- </a-tabs>
41
- <div v-if="!loadDetails">
42
- <template v-if="tabActiveKey === '1'">
43
- <x-form-table
44
- title="字典数据配置"
45
- :fixed-add-form="fixedAddForm"
46
- :fixed-query-form="fixedQueryForm"
47
- serviceName="af-system"
48
- queryParamsName="crud_dictionary_value_manage"
49
- @afterSubmit="afterSubmit"
50
- >
51
- </x-form-table>
52
- </template>
53
- </div>
54
- </template>
55
- </a-page-header>
56
- </a-spin>
57
- </a-drawer>
58
- </template>
59
-
60
- <script>
61
- import { DictionaryDetailsViewApi, post } from '@vue2-client/services/api'
62
- import { mapState } from 'vuex'
63
- import { formatDate } from '@vue2-client/utils/util'
64
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
65
-
66
- export default {
67
- name: 'DictionaryDetailsView',
68
- components: {
69
- XFormTable
70
- },
71
- data () {
72
- return {
73
- // 页面宽度
74
- screenWidth: document.documentElement.clientWidth,
75
- // Tab页签
76
- tabActiveKey: '1',
77
- // 字典详情
78
- details: {
79
- id: 0,
80
- f_name: '',
81
- f_key: '',
82
- f_remark: '',
83
- f_input_date: '',
84
- f_state: 0
85
- },
86
- tabList: [
87
- { key: '1', tab: '字典数据' }
88
- ],
89
- // 固定新增数据
90
- fixedAddForm: {},
91
- // 固定查询数据
92
- fixedQueryForm: {},
93
- // 详情加载
94
- loadDetails: true
95
- }
96
- },
97
- mounted () {
98
- this.initView()
99
- },
100
- computed: {
101
- ...mapState('account', { currUser: 'user' }),
102
- ...mapState('setting', ['isMobile'])
103
- },
104
- props: {
105
- id: {
106
- type: String,
107
- required: true
108
- },
109
- visible: {
110
- type: Boolean,
111
- default: false
112
- }
113
- },
114
- methods: {
115
- // 初始化组件
116
- initView () {
117
- this.tabActiveKey = '1'
118
- this.fixedQueryForm.v_f_dictionary_id = this.id
119
- this.fixedAddForm.v_f_dictionary_id = this.id
120
- this.getDetails(this.id)
121
- },
122
- onClose () {
123
- this.$emit('update:visible', false)
124
- },
125
- // 获取详情信息
126
- getDetails (userId) {
127
- this.loadDetails = true
128
- return post(DictionaryDetailsViewApi.getDictionaryDetails, {
129
- id: userId
130
- })
131
- .then(res => {
132
- this.details = res
133
- this.loadDetails = false
134
- }, err => {
135
- this.loadDetails = false
136
- console.error(err)
137
- })
138
- },
139
- // Tab切换
140
- handleTabChange (key) {
141
- this.tabActiveKey = key
142
- },
143
- // 日期格式化
144
- format (date, format) {
145
- return formatDate(date, format)
146
- },
147
- afterSubmit () {
148
- this.$appdata.load()
149
- }
150
- },
151
- watch: {
152
- 'visible' (val) {
153
- if (val) {
154
- this.initView()
155
- }
156
- }
157
- }
158
- }
159
- </script>
160
-
161
- <style lang="less" scoped>
162
- .business {
163
- color: #ffffff;
164
- }
165
- .business:enabled:hover {
166
- background-color: #85CE61 !important;
167
- border-color: #85CE61 !important;
168
- }
169
- .business:enabled {
170
- background-color: #67c23a;
171
- border-color: #67c23a;
172
- }
173
- .business:disabled {
174
- color: rgba(0, 0, 0, 0.25);
175
- }
176
- .detail-layout {
177
- margin-left: 44px;
178
- }
179
- .text {
180
- color: rgba(0, 0, 0, .45);
181
- }
182
-
183
- .heading {
184
- color: rgba(0, 0, 0, .85);
185
- font-size: 20px;
186
- }
187
-
188
- .no-data {
189
- color: rgba(0, 0, 0, .25);
190
- text-align: center;
191
- line-height: 64px;
192
- font-size: 16px;
193
-
194
- i {
195
- font-size: 24px;
196
- margin-right: 16px;
197
- position: relative;
198
- top: 3px;
199
- }
200
- }
201
-
202
- .mobile {
203
- .detail-layout {
204
- margin-left: unset;
205
- }
206
- .text {
207
-
208
- }
209
- .status-list {
210
- text-align: left;
211
- }
212
- }
213
-
214
- .row {
215
- display: flex;
216
-
217
- .content {
218
- -webkit-box-flex: 1;
219
- flex: auto;
220
- -ms-flex: auto;
221
- }
222
-
223
- .extra {
224
- flex: 0 1 auto;
225
- -webkit-box-flex: 0;
226
- -ms-flex: 0 1 auto;
227
- min-width: 242px;
228
- margin-left: 88px;
229
- text-align: right;
230
- }
231
- }
232
- </style>
1
+ <template>
2
+ <a-drawer
3
+ title="字典详情"
4
+ placement="right"
5
+ :width="isMobile ? screenWidth : screenWidth * 0.85"
6
+ :visible="visible"
7
+ @close="onClose"
8
+ >
9
+ <a-spin :spinning="loadDetails">
10
+ <a-page-header
11
+ :title="'字典名称:' + details.f_name"
12
+ >
13
+ <div class="row">
14
+ <div class="content">
15
+ <a-descriptions size="small" :column="isMobile ? 1 : 2">
16
+ <a-descriptions-item label="字典编号">{{ details.id }}</a-descriptions-item>
17
+ <a-descriptions-item label="字典键">{{ details.f_key }}</a-descriptions-item>
18
+ <a-descriptions-item label="备注">{{ details.f_remark }}</a-descriptions-item>
19
+ <a-descriptions-item label="创建时间">{{ format(details.f_input_date) }}</a-descriptions-item>
20
+ </a-descriptions>
21
+ </div>
22
+ <div class="extra">
23
+ <a-row class="status-list">
24
+ <a-col :xs="12" :sm="24">
25
+ </a-col>
26
+ </a-row>
27
+ </div>
28
+ </div>
29
+ <!-- actions -->
30
+ <template #extra>
31
+ <a-button-group style="margin-right: 4px;">
32
+ <a-button type="dashed" @click="initView" :loading="loadDetails">刷新</a-button>
33
+ </a-button-group>
34
+ </template>
35
+ <template slot="footer">
36
+ <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
37
+ <template v-for="value in tabList">
38
+ <a-tab-pane :key="value.key" :tab="value.tab"/>
39
+ </template>
40
+ </a-tabs>
41
+ <div v-if="!loadDetails">
42
+ <template v-if="tabActiveKey === '1'">
43
+ <x-form-table
44
+ title="字典数据配置"
45
+ :fixed-add-form="fixedAddForm"
46
+ :fixed-query-form="fixedQueryForm"
47
+ serviceName="af-system"
48
+ queryParamsName="crud_dictionary_value_manage"
49
+ @afterSubmit="afterSubmit"
50
+ >
51
+ </x-form-table>
52
+ </template>
53
+ </div>
54
+ </template>
55
+ </a-page-header>
56
+ </a-spin>
57
+ </a-drawer>
58
+ </template>
59
+
60
+ <script>
61
+ import { DictionaryDetailsViewApi, post } from '@vue2-client/services/api'
62
+ import { mapState } from 'vuex'
63
+ import { formatDate } from '@vue2-client/utils/util'
64
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
65
+
66
+ export default {
67
+ name: 'DictionaryDetailsView',
68
+ components: {
69
+ XFormTable
70
+ },
71
+ data () {
72
+ return {
73
+ // 页面宽度
74
+ screenWidth: document.documentElement.clientWidth,
75
+ // Tab页签
76
+ tabActiveKey: '1',
77
+ // 字典详情
78
+ details: {
79
+ id: 0,
80
+ f_name: '',
81
+ f_key: '',
82
+ f_remark: '',
83
+ f_input_date: '',
84
+ f_state: 0
85
+ },
86
+ tabList: [
87
+ { key: '1', tab: '字典数据' }
88
+ ],
89
+ // 固定新增数据
90
+ fixedAddForm: {},
91
+ // 固定查询数据
92
+ fixedQueryForm: {},
93
+ // 详情加载
94
+ loadDetails: true
95
+ }
96
+ },
97
+ mounted () {
98
+ this.initView()
99
+ },
100
+ computed: {
101
+ ...mapState('account', { currUser: 'user' }),
102
+ ...mapState('setting', ['isMobile'])
103
+ },
104
+ props: {
105
+ id: {
106
+ type: String,
107
+ required: true
108
+ },
109
+ visible: {
110
+ type: Boolean,
111
+ default: false
112
+ }
113
+ },
114
+ methods: {
115
+ // 初始化组件
116
+ initView () {
117
+ this.tabActiveKey = '1'
118
+ this.fixedQueryForm.v_f_dictionary_id = this.id
119
+ this.fixedAddForm.v_f_dictionary_id = this.id
120
+ this.getDetails(this.id)
121
+ },
122
+ onClose () {
123
+ this.$emit('update:visible', false)
124
+ },
125
+ // 获取详情信息
126
+ getDetails (userId) {
127
+ this.loadDetails = true
128
+ return post(DictionaryDetailsViewApi.getDictionaryDetails, {
129
+ id: userId
130
+ })
131
+ .then(res => {
132
+ this.details = res
133
+ this.loadDetails = false
134
+ }, err => {
135
+ this.loadDetails = false
136
+ console.error(err)
137
+ })
138
+ },
139
+ // Tab切换
140
+ handleTabChange (key) {
141
+ this.tabActiveKey = key
142
+ },
143
+ // 日期格式化
144
+ format (date, format) {
145
+ return formatDate(date, format)
146
+ },
147
+ afterSubmit () {
148
+ this.$appdata.load()
149
+ }
150
+ },
151
+ watch: {
152
+ 'visible' (val) {
153
+ if (val) {
154
+ this.initView()
155
+ }
156
+ }
157
+ }
158
+ }
159
+ </script>
160
+
161
+ <style lang="less" scoped>
162
+ .business {
163
+ color: #ffffff;
164
+ }
165
+ .business:enabled:hover {
166
+ background-color: #85CE61 !important;
167
+ border-color: #85CE61 !important;
168
+ }
169
+ .business:enabled {
170
+ background-color: #67c23a;
171
+ border-color: #67c23a;
172
+ }
173
+ .business:disabled {
174
+ color: rgba(0, 0, 0, 0.25);
175
+ }
176
+ .detail-layout {
177
+ margin-left: 44px;
178
+ }
179
+ .text {
180
+ color: rgba(0, 0, 0, .45);
181
+ }
182
+
183
+ .heading {
184
+ color: rgba(0, 0, 0, .85);
185
+ font-size: 20px;
186
+ }
187
+
188
+ .no-data {
189
+ color: rgba(0, 0, 0, .25);
190
+ text-align: center;
191
+ line-height: 64px;
192
+ font-size: 16px;
193
+
194
+ i {
195
+ font-size: 24px;
196
+ margin-right: 16px;
197
+ position: relative;
198
+ top: 3px;
199
+ }
200
+ }
201
+
202
+ .mobile {
203
+ .detail-layout {
204
+ margin-left: unset;
205
+ }
206
+ .text {
207
+
208
+ }
209
+ .status-list {
210
+ text-align: left;
211
+ }
212
+ }
213
+
214
+ .row {
215
+ display: flex;
216
+
217
+ .content {
218
+ -webkit-box-flex: 1;
219
+ flex: auto;
220
+ -ms-flex: auto;
221
+ }
222
+
223
+ .extra {
224
+ flex: 0 1 auto;
225
+ -webkit-box-flex: 0;
226
+ -ms-flex: 0 1 auto;
227
+ min-width: 242px;
228
+ margin-left: 88px;
229
+ text-align: right;
230
+ }
231
+ }
232
+ </style>
@@ -1,19 +1,19 @@
1
- const asyncReady = async function (vm, name) {
2
- // 获取配置信息
3
- try {
4
- const res = await vm.$resetget('/rs/vue/' + name + '.json', { resolveMsg: null, rejectMsg: null })
5
- Object.assign(vm.config, res)
6
- } catch (error) {
7
- // 忽略704,文件找不到异常
8
- if (error.status !== 704) {
9
- throw error
10
- }
11
- }
12
- }
13
- export default {
14
- install (Vue) {
15
- Vue.getConfig = Vue.prototype.$getConfig = function (vm, name) {
16
- return asyncReady(vm, name)
17
- }
18
- }
19
- }
1
+ const asyncReady = async function (vm, name) {
2
+ // 获取配置信息
3
+ try {
4
+ const res = await vm.$resetget('/rs/vue/' + name + '.json', { resolveMsg: null, rejectMsg: null })
5
+ Object.assign(vm.config, res)
6
+ } catch (error) {
7
+ // 忽略704,文件找不到异常
8
+ if (error.status !== 704) {
9
+ throw error
10
+ }
11
+ }
12
+ }
13
+ export default {
14
+ install (Vue) {
15
+ Vue.getConfig = Vue.prototype.$getConfig = function (vm, name) {
16
+ return asyncReady(vm, name)
17
+ }
18
+ }
19
+ }
@@ -1,39 +1,39 @@
1
- const TabsPagePlugin = {
2
- install (Vue) {
3
- Vue.mixin({
4
- methods: {
5
- $closePage (closeRoute, nextRoute) {
6
- const event = new CustomEvent('page:close', { detail: { closeRoute, nextRoute } })
7
- window.dispatchEvent(event)
8
- },
9
- $refreshPage (route) {
10
- const path = typeof route === 'object' ? route.path : route
11
- const event = new CustomEvent('page:refresh', { detail: { pageKey: path } })
12
- window.dispatchEvent(event)
13
- },
14
- $openPage (route, title) {
15
- this.$setPageTitle(route, title)
16
- this.$router.push(route)
17
- },
18
- $setPageTitle (route, title) {
19
- if (title) {
20
- // let path = typeof route === 'object' ? route.path : route
21
- // path = path && path.split('?')[0]
22
- const path = typeof route === 'object' ? this.$router.resolve(route).route.fullPath : route
23
- this.$store.commit('setting/setCustomTitle', { path, title })
24
- }
25
- }
26
- },
27
- computed: {
28
- customTitle () {
29
- const customTitles = this.$store.state.setting.customTitles
30
- // const path = this.$route.path.split('?')[0]
31
- const custom = customTitles.find(item => item.path === this.$route.fullPath)
32
- return custom && custom.title
33
- }
34
- }
35
- })
36
- }
37
- }
38
-
39
- export default TabsPagePlugin
1
+ const TabsPagePlugin = {
2
+ install (Vue) {
3
+ Vue.mixin({
4
+ methods: {
5
+ $closePage (closeRoute, nextRoute) {
6
+ const event = new CustomEvent('page:close', { detail: { closeRoute, nextRoute } })
7
+ window.dispatchEvent(event)
8
+ },
9
+ $refreshPage (route) {
10
+ const path = typeof route === 'object' ? route.path : route
11
+ const event = new CustomEvent('page:refresh', { detail: { pageKey: path } })
12
+ window.dispatchEvent(event)
13
+ },
14
+ $openPage (route, title) {
15
+ this.$setPageTitle(route, title)
16
+ this.$router.push(route)
17
+ },
18
+ $setPageTitle (route, title) {
19
+ if (title) {
20
+ // let path = typeof route === 'object' ? route.path : route
21
+ // path = path && path.split('?')[0]
22
+ const path = typeof route === 'object' ? this.$router.resolve(route).route.fullPath : route
23
+ this.$store.commit('setting/setCustomTitle', { path, title })
24
+ }
25
+ }
26
+ },
27
+ computed: {
28
+ customTitle () {
29
+ const customTitles = this.$store.state.setting.customTitles
30
+ // const path = this.$route.path.split('?')[0]
31
+ const custom = customTitles.find(item => item.path === this.$route.fullPath)
32
+ return custom && custom.title
33
+ }
34
+ }
35
+ })
36
+ }
37
+ }
38
+
39
+ export default TabsPagePlugin