feat:上报和监管的项目区分
Showing
7 changed files
with
394 additions
and
31 deletions
... | @@ -278,7 +278,7 @@ export default { | ... | @@ -278,7 +278,7 @@ export default { |
278 | let _this = this | 278 | let _this = this |
279 | // 上报请求头修改 | 279 | // 上报请求头修改 |
280 | try { | 280 | try { |
281 | var headRes = await axios.post(urlHeader + 'edit', this.dataReport, | 281 | var headRes = await axios.post('/api' + urlHeader + 'edit', this.dataReport, |
282 | { | 282 | { |
283 | headers: { | 283 | headers: { |
284 | 'Authorization': sessionStorage.getItem("token") || "" | 284 | 'Authorization': sessionStorage.getItem("token") || "" | ... | ... |
1 | <!-- | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-03-06 16:24:39 | ||
5 | --> | ||
1 | <template> | 6 | <template> |
2 | <div class="app-wrapper"> | 7 | <div class="app-wrapper"> |
3 | <navbar /> | 8 | <navbar /> |
... | @@ -28,8 +33,9 @@ export default { | ... | @@ -28,8 +33,9 @@ export default { |
28 | } | 33 | } |
29 | } | 34 | } |
30 | </script> | 35 | </script> |
31 | <style lang="scss" scoped> | 36 | <style lang="scss"> |
32 | @import "~@/styles/mixin.scss"; | 37 | @import "~@/styles/mixin.scss"; |
38 | @import "~@/styles/sidebar.scss"; | ||
33 | 39 | ||
34 | .app-wrapper { | 40 | .app-wrapper { |
35 | @include clearfix; | 41 | @include clearfix; | ... | ... |
... | @@ -8,7 +8,7 @@ | ... | @@ -8,7 +8,7 @@ |
8 | <Breadcrumb /> | 8 | <Breadcrumb /> |
9 | </div> --> | 9 | </div> --> |
10 | <div class="right-menu"> | 10 | <div class="right-menu"> |
11 | <div class="dataView d-center pointer" @click="handleDataView">大屏展示</div> | 11 | <!-- <div class="dataView d-center pointer" @click="handleDataView">大屏展示</div> --> |
12 | <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand"> | 12 | <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand"> |
13 | <div class="avatar-wrapper"> | 13 | <div class="avatar-wrapper"> |
14 | <span style="padding-right:10px">{{ name }}</span> | 14 | <span style="padding-right:10px">{{ name }}</span> |
... | @@ -24,10 +24,10 @@ | ... | @@ -24,10 +24,10 @@ |
24 | </div> | 24 | </div> |
25 | </template> | 25 | </template> |
26 | <script> | 26 | <script> |
27 | import { mapGetters } from 'vuex' | 27 | import { mapGetters } from 'vuex' |
28 | import Breadcrumb from './Breadcrumb' | 28 | import Breadcrumb from './Breadcrumb' |
29 | import defaultSettings from '@/settings' | 29 | import defaultSettings from '@/settings' |
30 | export default { | 30 | export default { |
31 | components: { | 31 | components: { |
32 | Breadcrumb | 32 | Breadcrumb |
33 | }, | 33 | }, |
... | @@ -54,10 +54,10 @@ | ... | @@ -54,10 +54,10 @@ |
54 | } | 54 | } |
55 | } | 55 | } |
56 | } | 56 | } |
57 | } | 57 | } |
58 | </script> | 58 | </script> |
59 | <style lang="scss" scoped> | 59 | <style lang="scss" scoped> |
60 | .navbar-con { | 60 | .navbar-con { |
61 | position: relative; | 61 | position: relative; |
62 | 62 | ||
63 | .logo { | 63 | .logo { |
... | @@ -65,23 +65,23 @@ | ... | @@ -65,23 +65,23 @@ |
65 | font-size: 26px; | 65 | font-size: 26px; |
66 | font-weight: 700; | 66 | font-weight: 700; |
67 | } | 67 | } |
68 | } | 68 | } |
69 | 69 | ||
70 | .dataView { | 70 | .dataView { |
71 | color: #fff; | 71 | color: #fff; |
72 | width: 120px; | 72 | width: 120px; |
73 | height: 32px; | 73 | height: 32px; |
74 | background: url("../../image/dp.png"); | 74 | background: url("../../image/dp.png"); |
75 | background-size: cover; | 75 | background-size: cover; |
76 | margin-right: 20px; | 76 | margin-right: 20px; |
77 | } | 77 | } |
78 | 78 | ||
79 | .NoticeBar { | 79 | .NoticeBar { |
80 | position: absolute; | 80 | position: absolute; |
81 | bottom: 0; | 81 | bottom: 0; |
82 | } | 82 | } |
83 | 83 | ||
84 | .el-dropdown-menu { | 84 | .el-dropdown-menu { |
85 | padding: 0 !important; | 85 | padding: 0 !important; |
86 | border: 1px solid #ebeef5; | 86 | border: 1px solid #ebeef5; |
87 | box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.12); | 87 | box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.12); |
... | @@ -114,9 +114,9 @@ | ... | @@ -114,9 +114,9 @@ |
114 | background: #f6f7f9; | 114 | background: #f6f7f9; |
115 | color: #4a4a4a; | 115 | color: #4a4a4a; |
116 | } | 116 | } |
117 | } | 117 | } |
118 | 118 | ||
119 | .navbar { | 119 | .navbar { |
120 | height: $headerHeight; | 120 | height: $headerHeight; |
121 | overflow: hidden; | 121 | overflow: hidden; |
122 | position: relative; | 122 | position: relative; |
... | @@ -246,5 +246,5 @@ | ... | @@ -246,5 +246,5 @@ |
246 | } | 246 | } |
247 | } | 247 | } |
248 | } | 248 | } |
249 | } | 249 | } |
250 | </style> | 250 | </style> | ... | ... |
1 | <!-- | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-03-06 16:18:21 | ||
5 | --> | ||
1 | <template> | 6 | <template> |
2 | <div> | 7 | <div> |
3 | <el-scrollbar wrap-class="scrollbar-wrapper"> | 8 | <el-scrollbar wrap-class="scrollbar-wrapper"> |
4 | <el-menu router :default-active="activeMenu" :background-color="variables.menuBg" :text-color="variables.menuText" | 9 | <el-menu router :default-active="activeMenu" :background-color="variables.menuBg" :text-color="variables.menuText" |
5 | :unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false" mode="vertical"> | 10 | :unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false" mode="vertical"> |
6 | <!-- 权限菜单 --> | 11 | <!-- 权限菜单 --> |
7 | <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> | 12 | <sidebar-item v-for="route in permission_routes.slice(3)" :key="route.path" :item="route" |
13 | :base-path="route.path" /> | ||
8 | <!-- 菜单全部展示 --> | 14 | <!-- 菜单全部展示 --> |
9 | <!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> --> | 15 | <!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> --> |
10 | </el-menu> | 16 | </el-menu> |
... | @@ -13,20 +19,22 @@ | ... | @@ -13,20 +19,22 @@ |
13 | </template> | 19 | </template> |
14 | 20 | ||
15 | <script> | 21 | <script> |
16 | import { mapGetters } from 'vuex' | 22 | import { mapGetters } from 'vuex' |
17 | import Logo from './Logo' | 23 | import Logo from './Logo' |
18 | import defaultSettings from '@/settings' | 24 | import defaultSettings from '@/settings' |
19 | import SidebarItem from './SidebarItem' | 25 | import SidebarItem from './SidebarItem' |
20 | import variables from '@/styles/variables.scss' | 26 | import variables from '@/styles/variables.scss' |
21 | import { asyncRoutes } from '@/router' | 27 | import { asyncRoutes } from '@/router' |
22 | export default { | 28 | export default { |
23 | components: { SidebarItem, Logo }, | 29 | components: { SidebarItem, Logo }, |
24 | data () { | 30 | data () { |
25 | return { | 31 | return { |
26 | title: defaultSettings.title | 32 | title: defaultSettings.title |
27 | } | 33 | } |
28 | }, | 34 | }, |
29 | 35 | created () { | |
36 | console.log(this.permission_routes); | ||
37 | }, | ||
30 | computed: { | 38 | computed: { |
31 | ...mapGetters(['permission_routes', 'sidebar']), | 39 | ...mapGetters(['permission_routes', 'sidebar']), |
32 | activeMenu () { | 40 | activeMenu () { |
... | @@ -44,5 +52,5 @@ | ... | @@ -44,5 +52,5 @@ |
44 | return asyncRoutes | 52 | return asyncRoutes |
45 | } | 53 | } |
46 | } | 54 | } |
47 | } | 55 | } |
48 | </script> | 56 | </script> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <!-- | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-03-06 16:23:31 | ||
5 | --> | ||
1 | <template> | 6 | <template> |
2 | <div class="app-wrapper"> | 7 | <div class="app-wrapper scWrapper"> |
3 | <navbar /> | 8 | <navbar /> |
4 | <div class="main-container"> | 9 | <div class="main-container"> |
5 | <sidebar class="sidebar-container" /> | 10 | <sidebar class="sidebar-container" /> |
... | @@ -29,8 +34,9 @@ export default { | ... | @@ -29,8 +34,9 @@ export default { |
29 | } | 34 | } |
30 | } | 35 | } |
31 | </script> | 36 | </script> |
32 | <style lang="scss" scoped> | 37 | <style lang="scss"> |
33 | @import "~@/styles/mixin.scss"; | 38 | @import "~@/styles/mixin.scss"; |
39 | @import '~@/styles/sbSidebar.scss'; | ||
34 | 40 | ||
35 | .app-wrapper { | 41 | .app-wrapper { |
36 | @include clearfix; | 42 | @include clearfix; | ... | ... |
... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
2 | @import './mixin.scss'; | 2 | @import './mixin.scss'; |
3 | @import './transition.scss'; | 3 | @import './transition.scss'; |
4 | @import './element-ui.scss'; | 4 | @import './element-ui.scss'; |
5 | @import './sidebar.scss'; | 5 | // @import './sidebar.scss'; |
6 | 6 | ||
7 | /* CSS 初始化 */ | 7 | /* CSS 初始化 */ |
8 | html, | 8 | html, | ... | ... |
src/styles/sbSidebar.scss
0 → 100644
1 | .scWrapper { | ||
2 | .main-container { | ||
3 | width: 100%; | ||
4 | height: calc(100% - 84px); | ||
5 | transition: margin-left 0.28s; | ||
6 | display: flex; | ||
7 | background-color: $containerbg; | ||
8 | } | ||
9 | |||
10 | .sidebar-container { | ||
11 | transition: width 0.28s; | ||
12 | width: $sideBarWidth !important; | ||
13 | font-size: 0px; | ||
14 | margin-right: 15px; | ||
15 | |||
16 | .horizontal-collapse-transition { | ||
17 | transition: 0s width ease-in-out, 0s padding-left ease-in-out, | ||
18 | 0s padding-right ease-in-out; | ||
19 | } | ||
20 | |||
21 | .scrollbar-wrapper { | ||
22 | overflow-x: hidden !important; | ||
23 | margin-right: 0 !important; | ||
24 | |||
25 | &::-webkit-scrollbar { | ||
26 | display: none; | ||
27 | } | ||
28 | } | ||
29 | |||
30 | a { | ||
31 | display: inline-block; | ||
32 | width: 100%; | ||
33 | overflow: hidden; | ||
34 | } | ||
35 | |||
36 | .svg-icon { | ||
37 | margin-right: 5px; | ||
38 | } | ||
39 | |||
40 | .sub-el-icon { | ||
41 | margin-right: 12px; | ||
42 | margin-left: -2px; | ||
43 | } | ||
44 | |||
45 | .el-menu { | ||
46 | background-color: transparent !important; | ||
47 | border: none; | ||
48 | height: 100%; | ||
49 | width: 100% !important; | ||
50 | } | ||
51 | |||
52 | // menu hover | ||
53 | .el-menu--collapse .el-submenu__title, | ||
54 | .el-menu--collapse .submenu-title-noDropdown { | ||
55 | margin-left: 0px !important; | ||
56 | } | ||
57 | |||
58 | // 有子级 | ||
59 | .el-submenu__title { | ||
60 | padding-left: 10px !important; | ||
61 | color: $menuText; | ||
62 | height: 42px; | ||
63 | background: linear-gradient(90deg, #013874 0%, #081B56 100%); | ||
64 | margin-bottom: 8px; | ||
65 | |||
66 | &:hover { | ||
67 | color: $subMenuActiveText !important; | ||
68 | background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%); | ||
69 | |||
70 | .svg-icon, | ||
71 | i, | ||
72 | span { | ||
73 | color: $subMenuActiveText !important; | ||
74 | } | ||
75 | } | ||
76 | } | ||
77 | |||
78 | // 没有子级 | ||
79 | .submenu-title-noDropdown { | ||
80 | color: $menuText; | ||
81 | padding-left: 20px; | ||
82 | margin-bottom: 8px; | ||
83 | background: linear-gradient(90deg, #013874 0%, #081B56 100%); | ||
84 | |||
85 | &:hover { | ||
86 | color: $menuActiveText !important; | ||
87 | background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%); | ||
88 | |||
89 | .svg-icon { | ||
90 | color: #1ea6f8 !important; | ||
91 | } | ||
92 | |||
93 | i { | ||
94 | color: #1ea6f8 !important; | ||
95 | } | ||
96 | } | ||
97 | } | ||
98 | |||
99 | .submenu-title-noDropdown.is-active, | ||
100 | .el-submenu__title.is-active { | ||
101 | color: $menuActiveText; | ||
102 | background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%); | ||
103 | |||
104 | .svg-icon { | ||
105 | color: #1ea6f8 !important; | ||
106 | } | ||
107 | |||
108 | i { | ||
109 | color: #1ea6f8 !important; | ||
110 | } | ||
111 | } | ||
112 | |||
113 | .submenu-title-noDropdown, | ||
114 | .el-submenu__title { | ||
115 | font-weight: 600; | ||
116 | font-size: $sideBarFontSize; | ||
117 | |||
118 | // margin: 0 10px; | ||
119 | >i { | ||
120 | color: $subMenuActiveText !important; | ||
121 | transform: rotate(90deg); | ||
122 | -webkit-transform: rotate(90deg); | ||
123 | -moz-transform: rotate(90deg); | ||
124 | -ms-transform: rotate(90deg); | ||
125 | -o-transform: rotate(90deg); | ||
126 | margin-right: 10px; | ||
127 | } | ||
128 | |||
129 | .svg-icon { | ||
130 | font-size: 18px; | ||
131 | margin-top: -5px; | ||
132 | } | ||
133 | } | ||
134 | |||
135 | .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow { | ||
136 | transform: rotateZ(0deg) !important; | ||
137 | -webkit-transform: rotateZ(0deg) !important; | ||
138 | -moz-transform: rotateZ(0deg) !important; | ||
139 | -ms-transform: rotateZ(0deg) !important; | ||
140 | -o-transform: rotateZ(0deg) !important; | ||
141 | } | ||
142 | |||
143 | .is-active>.el-submenu__title { | ||
144 | color: #fff !important; | ||
145 | } | ||
146 | |||
147 | & .nest-menu .el-submenu>.el-submenu__title, | ||
148 | & .el-submenu .el-menu-item { | ||
149 | &.is-active { | ||
150 | background-color: $subMenuHover !important; | ||
151 | color: $menuActiveText !important; | ||
152 | } | ||
153 | |||
154 | &:hover { | ||
155 | background-color: $subMenuHover !important; | ||
156 | color: $menuActiveText !important; | ||
157 | } | ||
158 | |||
159 | min-width: 130px !important; | ||
160 | background-color: transparent !important; | ||
161 | font-weight: 600; | ||
162 | font-size: $sideBarFontSize; | ||
163 | margin: 0 10px; | ||
164 | // border-radius: 6px; | ||
165 | } | ||
166 | } | ||
167 | |||
168 | .hideSidebar { | ||
169 | .sidebar-container { | ||
170 | width: 54px !important; | ||
171 | } | ||
172 | |||
173 | .submenu-title-noDropdown { | ||
174 | padding: 0 !important; | ||
175 | position: relative; | ||
176 | |||
177 | .el-tooltip { | ||
178 | padding: 0 !important; | ||
179 | |||
180 | .svg-icon { | ||
181 | margin-left: 16px; | ||
182 | } | ||
183 | |||
184 | .sub-el-icon { | ||
185 | margin-left: 19px; | ||
186 | } | ||
187 | } | ||
188 | } | ||
189 | |||
190 | .el-submenu { | ||
191 | overflow: hidden; | ||
192 | |||
193 | &>.el-submenu__title { | ||
194 | padding: 0 !important; | ||
195 | |||
196 | .svg-icon { | ||
197 | margin-left: 16px; | ||
198 | } | ||
199 | |||
200 | .sub-el-icon { | ||
201 | margin-left: 19px; | ||
202 | } | ||
203 | |||
204 | .el-submenu__icon-arrow { | ||
205 | display: none; | ||
206 | } | ||
207 | } | ||
208 | } | ||
209 | |||
210 | .el-menu--collapse { | ||
211 | .el-submenu { | ||
212 | &>.el-submenu__title { | ||
213 | &>span { | ||
214 | height: 0; | ||
215 | width: 0; | ||
216 | overflow: hidden; | ||
217 | visibility: hidden; | ||
218 | display: inline-block; | ||
219 | } | ||
220 | } | ||
221 | } | ||
222 | } | ||
223 | } | ||
224 | |||
225 | .el-menu--collapse .el-menu .el-submenu { | ||
226 | min-width: $sideBarWidth !important; | ||
227 | } | ||
228 | |||
229 | // mobile responsive | ||
230 | .mobile { | ||
231 | .main-container { | ||
232 | margin-left: 0px; | ||
233 | } | ||
234 | |||
235 | .sidebar-container { | ||
236 | transition: transform 0.28s; | ||
237 | width: $sideBarWidth !important; | ||
238 | } | ||
239 | |||
240 | &.hideSidebar { | ||
241 | .sidebar-container { | ||
242 | pointer-events: none; | ||
243 | transition-duration: 0.3s; | ||
244 | transform: translate3d(-$sideBarWidth, 0, 0); | ||
245 | } | ||
246 | } | ||
247 | } | ||
248 | |||
249 | .withoutAnimation { | ||
250 | |||
251 | .main-container, | ||
252 | .sidebar-container { | ||
253 | transition: none; | ||
254 | } | ||
255 | } | ||
256 | } | ||
257 | |||
258 | // when menu collapsed | ||
259 | .el-menu--vertical { | ||
260 | &>.el-menu { | ||
261 | .svg-icon { | ||
262 | margin-right: 16px; | ||
263 | } | ||
264 | |||
265 | .sub-el-icon { | ||
266 | margin-right: 12px; | ||
267 | margin-left: -2px; | ||
268 | } | ||
269 | } | ||
270 | |||
271 | .nest-menu .el-submenu>.el-submenu__title, | ||
272 | .el-menu-item { | ||
273 | width: calc(100% - 12px); | ||
274 | border-top-right-radius: 8px; | ||
275 | border-bottom-right-radius: 8px; | ||
276 | font-weight: 600 !important; | ||
277 | font-size: 15px !important; | ||
278 | background-color: $menuHover !important; | ||
279 | color: $menuText !important; | ||
280 | |||
281 | &:hover { | ||
282 | background-color: $menuHover !important; | ||
283 | opacity: .9; | ||
284 | |||
285 | .svg-icon, | ||
286 | i, | ||
287 | span { | ||
288 | color: $menuText; | ||
289 | } | ||
290 | } | ||
291 | } | ||
292 | |||
293 | // the scroll bar appears when the subMenu is too long | ||
294 | >.el-menu--popup { | ||
295 | max-height: 100vh; | ||
296 | overflow-y: auto; | ||
297 | background-color: #32ACFE !important; | ||
298 | border-top-right-radius: 8px; | ||
299 | border-bottom-right-radius: 8px; | ||
300 | min-width: 140px; | ||
301 | padding: 12px 0; | ||
302 | |||
303 | &::-webkit-scrollbar-track-piece { | ||
304 | background: #d3dce6; | ||
305 | } | ||
306 | |||
307 | &::-webkit-scrollbar { | ||
308 | width: 6px; | ||
309 | } | ||
310 | |||
311 | &::-webkit-scrollbar-thumb { | ||
312 | background: #99a9bf; | ||
313 | border-radius: 20px; | ||
314 | } | ||
315 | } | ||
316 | } | ||
317 | |||
318 | .el-submenu__title { | ||
319 | display: flex; | ||
320 | align-items: center; | ||
321 | } | ||
322 | |||
323 | .el-submenu__title span { | ||
324 | white-space: normal; | ||
325 | word-break: break-all; | ||
326 | line-height: 20px; | ||
327 | flex: 1; | ||
328 | padding-right: 20px; | ||
329 | } | ||
330 | |||
331 | .el-menu-item { | ||
332 | height: 42px; | ||
333 | display: flex; | ||
334 | align-items: center; | ||
335 | padding-right: 20px !important; | ||
336 | } | ||
337 | |||
338 | .el-menu-item span { | ||
339 | white-space: normal; | ||
340 | word-break: break-all; | ||
341 | line-height: 20px; | ||
342 | flex: 1; | ||
343 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or sign in to post a comment