3fb3cb23 by ‘jikai@pashanhoo.com’
2 parents 9dc753ab d3eeff7b
1 { 1 {
2 "TITLE": "汉中市数据上报系统", 2 "TITLE": "汉中市数据上报系统",
3 "THEME": "sb", 3 "THEME": "jg",
4 "SERVERAPI": "/bdcsjsb", 4 "SERVERAPI": "/bdcsjsb",
5 "MANAGEMENTAPI": "http: //192.168.2.236/management" 5 "MANAGEMENTAPI": "http://192.168.2.236/management"
6 } 6 }
...\ No newline at end of file ...\ No newline at end of file
......
1 /*
2 * @Description:
3 * @Autor: renchao
4 * @LastEditTime: 2023-03-23 17:19:52
5 */
1 import request from "@/utils/request"; 6 import request from "@/utils/request";
2 import SERVER from "./config"; 7 // import SERVER from "./config";
8 let SERVER = JSON.parse(localStorage.getItem('ApiUrl'))
9 // console.log(SERVER, 'SERVERSERVER');
3 10
4 export function loginIn(username, password) { 11 export function loginIn (username, password) {
5 return request({ 12 return request({
6 url: `${SERVER.MANAGEMENTAPI}/login?username=${username}&password=${password}`, 13 url: `${SERVER.MANAGEMENTAPI}/login?username=${username}&password=${password}`,
7 method: "post", 14 method: "post",
8 }); 15 });
9 } 16 }
10 export function logout() { 17 export function logout () {
11 return request({ 18 return request({
12 url: `${SERVER.MANAGEMENTAPI}/logout`, 19 url: `${SERVER.MANAGEMENTAPI}/logout`,
13 method: "post", 20 method: "post",
......
1 import request from '@/utils/request' 1 import request from '@/utils/request'
2 import SERVER from "./config"; 2 // import SERVER from "./config";
3 let SERVER = JSON.parse(localStorage.getItem('ApiUrl'))
3 const workflow = '/workflow' 4 const workflow = '/workflow'
4 const log = '/log' 5 const log = '/log'
5 const crud = '/crud' 6 const crud = '/crud'
......
1 /*
2 * @Description:
3 * @Autor: renchao
4 * @LastEditTime: 2023-03-23 13:17:59
5 */
1 import request from '@/utils/request' 6 import request from '@/utils/request'
2 // let SERVER = JSON.parse(localStorage.getItem('ApiUrl')) 7 // let SERVER = JSON.parse(localStorage.getItem('ApiUrl'))
3 let SERVER = JSON.parse(localStorage.getItem('ApiUrl')) 8 let SERVER = JSON.parse(localStorage.getItem('ApiUrl'))
9 console.log(JSON.parse(localStorage.getItem('ApiUrl')));
4 // 获取用户信息 10 // 获取用户信息
5 export function getUserInfo () { 11 export function getUserInfo () {
6 return request({ 12 return request({
...@@ -9,14 +15,6 @@ export function getUserInfo () { ...@@ -9,14 +15,6 @@ export function getUserInfo () {
9 }) 15 })
10 } 16 }
11 17
12 // // 获取菜单信息
13 // export function getMenuInfo () {
14 // return request({
15 // url: SERVER.SERVERAPI + '/rest/user/getUserAuthorizationMenus',
16 // method: 'get',
17 // })
18 // }
19
20 // 获取菜单信息 18 // 获取菜单信息
21 export function getMenuInfo (data) { 19 export function getMenuInfo (data) {
22 return request({ 20 return request({
......
1 <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1673321301365" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3462" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M910.617673 211.45497c-29.726022-40.739866-65.373916-76.582189-105.953124-106.533338-31.447223-23.211654-65.346287-42.500976-101.132328-57.574277-17.797341-7.496741-38.217417 1.723248-44.400233 20.018939l0 0c-5.586229 16.531512 2.569522 34.533514 18.648732 41.309848 30.91408 13.027711 60.204174 29.700439 87.38421 49.761334 35.128055 25.927509 65.986877 56.9562 91.719958 92.223425 53.42477 73.218582 81.662905 159.989831 81.662905 250.935146 0 57.551764-11.264555 113.364931-33.480532 165.888168-21.464871 50.748824-52.199872 96.333022-91.352591 135.484717-39.152718 39.153742-84.736916 69.888743-135.484717 91.352591-52.523237 22.215978-108.336404 33.480532-165.888168 33.480532-57.552787 0-113.364931-11.264555-165.889191-33.480532-50.748824-21.464871-96.331999-52.199872-135.484717-91.352591-39.152718-39.152718-69.888743-84.736916-91.353614-135.484717-22.214954-52.523237-33.479509-108.336404-33.479509-165.888168 0-90.842984 28.180829-177.536462 81.495082-250.706949 25.681916-35.244712 56.481386-66.265216 91.545996-92.199888 27.118638-20.056801 56.344263-36.737716 87.192851-49.78794 16.072047-6.798846 24.204262-24.812105 18.594497-41.336454l0 0c-6.207375-18.285458-26.638707-27.478841-44.424792-19.958564-35.712363 15.098883-69.537749 34.399461-100.915387 57.607022-40.505529 29.958312-76.084862 65.791425-105.750509 106.506732C52.210106 296.342312 19.618826 396.581294 19.618826 501.596046c0 66.5016 13.031804 131.033335 38.734186 191.800327 24.818245 58.677401 60.340273 111.367437 105.58064 156.606781 45.240367 45.240367 97.930403 80.763418 156.607804 105.581664 60.766992 25.701358 125.297704 38.734186 191.800327 38.734186 66.502623 0 131.033335-13.031804 191.800327-38.734186 58.677401-24.818245 111.366414-60.341297 156.606781-105.581664 45.240367-45.239344 80.762395-97.92938 105.581664-156.606781 25.701358-60.766992 38.734186-125.297704 38.734186-191.800327C1005.062695 396.463614 972.403878 296.133557 910.617673 211.45497z" fill="#ffffff" p-id="3463"></path><path d="M509.270842 388.009058 509.270842 388.009058c20.261463 0 36.839023-16.57756 36.839023-36.839023L546.109866 75.454506c0-20.261463-16.57756-36.839023-36.839023-36.839023l0 0c-20.261463 0-36.839023 16.57756-36.839023 36.839023l0 275.715529C472.431819 371.431497 489.00938 388.009058 509.270842 388.009058z" fill="#ffffff" p-id="3464"></path></svg>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1673321301365" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3462" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M910.617673 211.45497c-29.726022-40.739866-65.373916-76.582189-105.953124-106.533338-31.447223-23.211654-65.346287-42.500976-101.132328-57.574277-17.797341-7.496741-38.217417 1.723248-44.400233 20.018939l0 0c-5.586229 16.531512 2.569522 34.533514 18.648732 41.309848 30.91408 13.027711 60.204174 29.700439 87.38421 49.761334 35.128055 25.927509 65.986877 56.9562 91.719958 92.223425 53.42477 73.218582 81.662905 159.989831 81.662905 250.935146 0 57.551764-11.264555 113.364931-33.480532 165.888168-21.464871 50.748824-52.199872 96.333022-91.352591 135.484717-39.152718 39.153742-84.736916 69.888743-135.484717 91.352591-52.523237 22.215978-108.336404 33.480532-165.888168 33.480532-57.552787 0-113.364931-11.264555-165.889191-33.480532-50.748824-21.464871-96.331999-52.199872-135.484717-91.352591-39.152718-39.152718-69.888743-84.736916-91.353614-135.484717-22.214954-52.523237-33.479509-108.336404-33.479509-165.888168 0-90.842984 28.180829-177.536462 81.495082-250.706949 25.681916-35.244712 56.481386-66.265216 91.545996-92.199888 27.118638-20.056801 56.344263-36.737716 87.192851-49.78794 16.072047-6.798846 24.204262-24.812105 18.594497-41.336454l0 0c-6.207375-18.285458-26.638707-27.478841-44.424792-19.958564-35.712363 15.098883-69.537749 34.399461-100.915387 57.607022-40.505529 29.958312-76.084862 65.791425-105.750509 106.506732C52.210106 296.342312 19.618826 396.581294 19.618826 501.596046c0 66.5016 13.031804 131.033335 38.734186 191.800327 24.818245 58.677401 60.340273 111.367437 105.58064 156.606781 45.240367 45.240367 97.930403 80.763418 156.607804 105.581664 60.766992 25.701358 125.297704 38.734186 191.800327 38.734186 66.502623 0 131.033335-13.031804 191.800327-38.734186 58.677401-24.818245 111.366414-60.341297 156.606781-105.581664 45.240367-45.239344 80.762395-97.92938 105.581664-156.606781 25.701358-60.766992 38.734186-125.297704 38.734186-191.800327C1005.062695 396.463614 972.403878 296.133557 910.617673 211.45497z" fill="#ffffff" p-id="3463"></path><path d="M509.270842 388.009058 509.270842 388.009058c20.261463 0 36.839023-16.57756 36.839023-36.839023L546.109866 75.454506c0-20.261463-16.57756-36.839023-36.839023-36.839023l0 0c-20.261463 0-36.839023 16.57756-36.839023 36.839023l0 275.715529C472.431819 371.431497 489.00938 388.009058 509.270842 388.009058z" p-id="3464"></path></svg>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -29,7 +29,7 @@ export default { ...@@ -29,7 +29,7 @@ export default {
29 sidebarRight, 29 sidebarRight,
30 }, 30 },
31 computed: { 31 computed: {
32 ...mapGetters(["sidebar", "dicData", "userInfo"]), 32 ...mapGetters(["sidebar", "dicData", , "permission_routes", "userInfo"]),
33 logoName () { 33 logoName () {
34 return this.dicData['sysCode'] && this.dicData['sysCode'].filter(item => 34 return this.dicData['sysCode'] && this.dicData['sysCode'].filter(item =>
35 item.DCODE == "systemTitle" 35 item.DCODE == "systemTitle"
...@@ -55,9 +55,9 @@ export default { ...@@ -55,9 +55,9 @@ export default {
55 }) 55 })
56 .catch((error) => { 56 .catch((error) => {
57 // console.dir(error); 57 // console.dir(error);
58 }); 58 })
59 }, 59 }
60 }, 60 }
61 }; 61 };
62 </script> 62 </script>
63 <style lang="scss" scoped> 63 <style lang="scss" scoped>
......
1 <!--
2 * @Description: log
3 * @Autor: renchao
4 * @LastEditTime: 2023-03-23 16:29:12
5 -->
1 <template> 6 <template>
2 <el-menu router :default-active="activeMenu" mode="horizontal"> 7 <el-menu router :default-active="activeMenu" mode="horizontal">
3 <!-- 权限菜单 --> 8 <!-- 权限菜单 -->
4 <sidebar-item v-for="route in permission_routes.slice(3, 6)" :key="route.path" :item="route" 9 <sidebar-item v-for="route in permission_routes.slice(4, 7)" :key="route.path" :item="route"
5 :base-path="route.path" /> 10 :base-path="route.path" />
6 <!-- 菜单全部展示 --> 11 <!-- 菜单全部展示 -->
7 <!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> --> 12 <!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> -->
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
2 * @Author: xiaomiao 1158771342@qq.com 2 * @Author: xiaomiao 1158771342@qq.com
3 * @Date: 2023-01-10 09:03:06 3 * @Date: 2023-01-10 09:03:06
4 * @LastEditors: Please set LastEditors 4 * @LastEditors: Please set LastEditors
5 * @LastEditTime: 2023-03-22 10:43:26 5 * @LastEditTime: 2023-03-23 16:29:24
6 * @FilePath: \监管系统\js-web-jianguan\src\layout\components\Sidebar\sidebarRight.vue 6 * @FilePath: \监管系统\js-web-jianguan\src\layout\components\Sidebar\sidebarRight.vue
7 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE 7 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8 --> 8 -->
9 <template> 9 <template>
10 <el-menu router :default-active="activeMenu" mode="horizontal"> 10 <el-menu router :default-active="activeMenu" mode="horizontal">
11 <!-- 权限菜单 --> 11 <!-- 权限菜单 -->
12 <sidebar-item v-for="route in permission_routes.slice(6, 9)" :key="route.path" :item="route" 12 <sidebar-item v-for="route in permission_routes.slice(7, 10)" :key="route.path" :item="route"
13 :base-path="route.path" /> 13 :base-path="route.path" />
14 <!-- 菜单全部展示 --> 14 <!-- 菜单全部展示 -->
15 <!-- <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" /> -->
......
1 <!-- 1 <!--
2 * @Description: 2 * @Description:
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2023-03-20 14:22:35 4 * @LastEditTime: 2023-03-23 15:17:24
5 --> 5 -->
6 <template> 6 <template>
7 <div class="app-wrapper jgWrapper"> 7 <div class="app-wrapper jgWrapper">
...@@ -12,61 +12,60 @@ ...@@ -12,61 +12,60 @@
12 </div> 12 </div>
13 </template> 13 </template>
14 <script> 14 <script>
15 import { AppMain, Navbar, Sidebar, TagsView } from './components' 15 import { AppMain, Navbar, Sidebar, TagsView } from './components'
16 import ResizeMixin from './mixin/ResizeHandler' 16 import ResizeMixin from './mixin/ResizeHandler'
17 import { mapState } from 'vuex' 17 import { mapState } from 'vuex'
18 export default { 18 export default {
19 name: 'Layout', 19 name: 'Layout',
20 components: { 20 components: {
21 AppMain, 21 AppMain,
22 Navbar, 22 Navbar,
23 Sidebar, 23 Sidebar,
24 TagsView 24 TagsView
25 }, 25 },
26 created () { 26 created () {
27 console.log("hhh"); 27 this.$store.dispatch("products/setData", "BDCJGPT");
28 this.$store.dispatch("products/setData", "BDCJGPT"); 28 },
29 }, 29 mixins: [ResizeMixin],
30 mixins: [ResizeMixin], 30 computed: {
31 computed: { 31 ...mapState({
32 ...mapState({ 32 sidebar: state => state.app.sidebar,
33 sidebar: state => state.app.sidebar, 33 needTagsView: state => state.settings.tagsView,
34 needTagsView: state => state.settings.tagsView, 34 fixedHeader: state => state.settings.fixedHeader
35 fixedHeader: state => state.settings.fixedHeader 35 })
36 })
37 }
38 } 36 }
37 }
39 </script> 38 </script>
40 <style lang="scss"> 39 <style lang="scss">
41 @import "~@/styles/jgSidebar.scss"; 40 @import "~@/styles/jgSidebar.scss";
42 </style> 41 </style>
43 <style lang="scss" scoped> 42 <style lang="scss" scoped>
44 @import "~@/styles/mixin.scss"; 43 @import "~@/styles/mixin.scss";
45 44
46 .app-wrapper { 45 .app-wrapper {
47 @include clearfix; 46 @include clearfix;
48 position: relative; 47 position: relative;
49 height: 100%; 48 height: 100%;
50 width: 100%; 49 width: 100%;
51 min-width: 1280px; 50 min-width: 1280px;
52 background: url("~@/image/bg.png") no-repeat; 51 background: url("~@/image/bg.png") no-repeat;
53 background-size: 100% 100%; 52 background-size: 100% 100%;
54 padding: 12px; 53 padding: 12px;
55 box-sizing: border-box; 54 box-sizing: border-box;
56 55
57 &.mobile.openSidebar { 56 &.mobile.openSidebar {
58 position: fixed; 57 position: fixed;
59 top: 0; 58 top: 0;
60 }
61 } 59 }
60 }
62 61
63 .appMain { 62 .appMain {
64 // min-width: 1280px; 63 // min-width: 1280px;
65 height: calc(100vh - 101px) !important; 64 height: calc(100vh - 101px) !important;
66 box-sizing: border-box; 65 box-sizing: border-box;
67 66
68 .app-main { 67 .app-main {
69 height: 100%; 68 height: 100%;
70 }
71 } 69 }
70 }
72 </style> 71 </style>
......
...@@ -6,15 +6,13 @@ ...@@ -6,15 +6,13 @@
6 <h4>不动产登记上报系统</h4> 6 <h4>不动产登记上报系统</h4>
7 </div> 7 </div>
8 <div class="right-menu"> 8 <div class="right-menu">
9 <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand"> 9 <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
10 <div class="avatar-wrapper"> 10 <div class="user">
11 <span style="padding-right:10px">{{ name }}</span> 11 {{ userName }}
12 <img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" /> 12 <span @click="onCancel">
13 <i class="el-icon-switch-button"></i>
14 </span>
13 </div> 15 </div>
14 <el-dropdown-menu slot="dropdown">
15 <el-dropdown-item command="a">个人中心</el-dropdown-item>
16 <el-dropdown-item command="b">退出</el-dropdown-item>
17 </el-dropdown-menu>
18 </el-dropdown> 16 </el-dropdown>
19 </div> 17 </div>
20 </div> 18 </div>
...@@ -23,17 +21,15 @@ ...@@ -23,17 +21,15 @@
23 <script> 21 <script>
24 import { mapGetters } from 'vuex' 22 import { mapGetters } from 'vuex'
25 import Breadcrumb from './Breadcrumb' 23 import Breadcrumb from './Breadcrumb'
26 import defaultSettings from '@/settings' 24 import { logout } from "@/api/login.js";
27 export default { 25 export default {
28 components: { 26 components: {
29 Breadcrumb 27 Breadcrumb
30 }, 28 },
31 computed: { 29 computed: {
32 ...mapGetters(['sidebar', 'avatar', 'name']) 30 ...mapGetters(["sidebar", "dicData", "userInfo"]),
33 }, 31 userName () {
34 data () { 32 return this.userInfo ? this.userInfo.name : ""
35 return {
36 title: defaultSettings.title
37 } 33 }
38 }, 34 },
39 methods: { 35 methods: {
...@@ -44,11 +40,22 @@ export default { ...@@ -44,11 +40,22 @@ export default {
44 themeChange (val) { 40 themeChange (val) {
45 this.$store.dispatch('app/updateTheme', val) 41 this.$store.dispatch('app/updateTheme', val)
46 }, 42 },
47 handleCommand (command) { 43 onCancel () {
48 if (command == 'a') { 44 logout()
49 } else { 45 .then((res) => {
50 46 sessionStorage.removeItem("token");
51 } 47 this.$store.dispatch("user/resetState");
48 this.$store.dispatch("permission/resetRoutes");
49 this.$router.replace({
50 path: "/sb",
51 query: {
52 redirect: this.$route.fullPath,
53 },
54 });
55 })
56 .catch((error) => {
57 // console.dir(error);
58 })
52 } 59 }
53 } 60 }
54 } 61 }
...@@ -79,45 +86,6 @@ export default { ...@@ -79,45 +86,6 @@ export default {
79 } 86 }
80 } 87 }
81 88
82 .NoticeBar {
83 position: absolute;
84 bottom: 0;
85 }
86
87 .el-dropdown-menu {
88 padding: 0 !important;
89 border: 1px solid #ebeef5;
90 box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.12);
91 border-radius: 4px 0 0 4px 4px;
92
93 .el-dropdown-menu__item {
94 text-align: center;
95 margin-top: 0 !important;
96 font-size: 14px;
97 font-weight: 400;
98 color: #4a4a4a;
99 width: 140px;
100 height: 36px;
101 line-height: 36px;
102 }
103
104 .el-dropdown-menu__item:nth-child(6) {
105 border-top: 1px solid #ebeef5;
106 }
107
108 .popper__arrow {
109 top: -11px !important;
110 left: 110px !important;
111 transform: rotate(0deg) scale(2);
112 }
113
114 .el-dropdown-menu__item:not(.is-disabled):hover,
115 .el-dropdown-menu__item:focus {
116 background: #f6f7f9;
117 color: #4a4a4a;
118 }
119 }
120
121 .navbar { 89 .navbar {
122 height: $headerHeight; 90 height: $headerHeight;
123 overflow: hidden; 91 overflow: hidden;
...@@ -133,117 +101,12 @@ export default { ...@@ -133,117 +101,12 @@ export default {
133 width: 300px; 101 width: 300px;
134 } 102 }
135 103
136 .backdrop { 104 .right-menu-item {
137 flex: 1; 105 &.hover-effect {
138 width: 60%;
139 background-size: 100% 100%;
140 height: $headerHeight;
141 display: flex;
142 align-items: center;
143 }
144
145 .hamburger-container {
146 line-height: 43px;
147 height: 100%;
148 float: left;
149 cursor: pointer;
150 transition: background 0.3s;
151 -webkit-tap-highlight-color: transparent;
152
153 &:hover {
154 background: rgba(0, 0, 0, 0.025);
155 }
156 }
157
158 .breadcrumb-container {
159 float: left;
160 }
161
162 .right-menu {
163 float: right;
164 height: 100%;
165 line-height: 50px;
166 display: flex;
167 align-items: center;
168
169 .function {
170 margin: 0 15px;
171 cursor: pointer;
172 }
173
174 .shutdown {
175 font-size: 20px;
176 margin-left: 15px;
177 cursor: pointer;
178 }
179
180 .organization-item {
181 margin-right: 40px;
182 margin-top: -40px !important;
183 }
184
185 .item {
186 margin-right: 40px;
187 margin-top: -20px;
188 line-height: 18.4px;
189 cursor: pointer; 106 cursor: pointer;
190 position: relative; 107 transition: background 0.3s;
191
192 .item-box {
193 position: absolute;
194 top: -5px;
195 left: 3px;
196 width: 100%;
197 min-width: 25px;
198 height: 25px;
199 cursor: pointer;
200 z-index: 100;
201 }
202 }
203
204 &:focus {
205 outline: none;
206 }
207
208 .right-menu-item {
209 display: inline-block;
210 height: 100%;
211 font-size: 18px;
212 color: #fff;
213 vertical-align: text-bottom;
214
215 &.hover-effect {
216 cursor: pointer;
217 transition: background 0.3s;
218 display: flex;
219 align-items: center;
220
221 &:hover {
222 background: rgba(0, 0, 0, 0.025);
223 }
224 }
225 }
226
227 .avatar-wrapper {
228 position: relative;
229 display: flex; 108 display: flex;
230 height: 40px;
231 align-items: center; 109 align-items: center;
232
233 .user-avatar {
234 cursor: pointer;
235 width: 35px;
236 height: 35px;
237 border-radius: 50%;
238 }
239
240 .el-icon-caret-bottom {
241 cursor: pointer;
242 position: absolute;
243 right: -15px;
244 top: 17px;
245 font-size: 12px;
246 }
247 } 110 }
248 } 111 }
249 } 112 }
......
1 <!-- 1 <!--
2 * @Description: 2 * @Description:
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2023-03-06 16:18:21 4 * @LastEditTime: 2023-03-23 16:17:42
5 --> 5 -->
6 <template> 6 <template>
7 <div> 7 <div>
...@@ -19,41 +19,38 @@ ...@@ -19,41 +19,38 @@
19 </template> 19 </template>
20 20
21 <script> 21 <script>
22 import { mapGetters } from 'vuex' 22 import { mapGetters } from 'vuex'
23 import Logo from './Logo' 23 import Logo from './Logo'
24 import defaultSettings from '@/settings' 24 import defaultSettings from '@/settings'
25 import SidebarItem from './SidebarItem' 25 import SidebarItem from './SidebarItem'
26 import variables from '@/styles/variables.scss' 26 import variables from '@/styles/variables.scss'
27 import { asyncRoutes } from '@/router' 27 import { asyncRoutes } from '@/router'
28 export default { 28 export default {
29 components: { SidebarItem, Logo }, 29 components: { SidebarItem, Logo },
30 data () { 30 data () {
31 return { 31 return {
32 title: defaultSettings.title 32 title: defaultSettings.title
33 }
34 },
35 computed: {
36 ...mapGetters(['permission_routes', 'sidebar']),
37 activeMenu () {
38 const route = this.$route
39 const { meta, path } = route
40 if (meta.activeMenu) {
41 return meta.activeMenu
33 } 42 }
43 return path
34 }, 44 },
35 created () { 45 variables () {
36 console.log(this.permission_routes); 46 return variables
37 },
38 computed: {
39 ...mapGetters(['permission_routes', 'sidebar']),
40 activeMenu () {
41 const route = this.$route
42 const { meta, path } = route
43 if (meta.activeMenu) {
44 return meta.activeMenu
45 }
46 return path
47 },
48 variables () {
49 return variables
50 },
51 asyncRoutes () {
52 return asyncRoutes
53 }
54 }, 47 },
55 mounted () { 48 asyncRoutes () {
56 49 return asyncRoutes
57 } 50 }
51 },
52 mounted () {
53 console.log(this.permission_routes, 'permission_routespermission_routes');
58 } 54 }
55 }
59 </script> 56 </script>
......
1 <template> 1 <template>
2 <div id="tags-view-container" class="tags-view-container"> 2 <div id="tags-view-container" class="tags-view-container">
3 <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll"> 3 <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
4 <router-link v-for="tag in visitedViews" ref="tag" :key="tag.path" :class="isActive(tag)?'active':''" 4 <router-link v-for="tag in visitedViews" ref="tag" :key="tag.path" :class="isActive(tag) ? 'active' : ''"
5 :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" tag="span" class="tags-view-item" 5 :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" tag="span" class="tags-view-item"
6 @click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''" 6 @click.middle.native="!isAffix(tag) ? closeSelectedTag(tag) : ''" @contextmenu.prevent.native="openMenu(tag, $event)">
7 @contextmenu.prevent.native="openMenu(tag,$event)">
8 {{ tag.title }} 7 {{ tag.title }}
9 <span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" /> 8 <span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
10 </router-link> 9 </router-link>
11 </scroll-pane> 10 </scroll-pane>
12 <ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu"> 11 <ul v-show="visible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu">
13 <li @click="refreshSelectedTag(selectedTag)">Refresh</li> 12 <li @click="refreshSelectedTag(selectedTag)">Refresh</li>
14 <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">Close</li> 13 <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">Close</li>
15 <li @click="closeOthersTags">Close Others</li> 14 <li @click="closeOthersTags">Close Others</li>
...@@ -200,6 +199,7 @@ export default { ...@@ -200,6 +199,7 @@ export default {
200 padding-top: 3px; 199 padding-top: 3px;
201 box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04); 200 box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
202 margin-bottom: 5px; 201 margin-bottom: 5px;
202
203 .tags-view-wrapper { 203 .tags-view-wrapper {
204 .tags-view-item { 204 .tags-view-item {
205 display: inline-block; 205 display: inline-block;
......
...@@ -83,9 +83,4 @@ export default { ...@@ -83,9 +83,4 @@ export default {
83 width: 100%; 83 width: 100%;
84 transition: width 0.28s; 84 transition: width 0.28s;
85 } 85 }
86
87 .el-dropdown-menu--small {
88 padding: 0;
89 width: 5px;
90 }
91 </style> 86 </style>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 * @Author: yangwei 2 * @Author: yangwei
3 * @Date: 2023-01-16 09:10:12 3 * @Date: 2023-01-16 09:10:12
4 * @LastEditors: Please set LastEditors 4 * @LastEditors: Please set LastEditors
5 * @LastEditTime: 2023-03-21 15:00:04 5 * @LastEditTime: 2023-03-23 15:15:02
6 * @FilePath: \bdcjg-web\src\main.js 6 * @FilePath: \bdcjg-web\src\main.js
7 * @Description: 7 * @Description:
8 * 8 *
......
1 /*
2 * @Description:
3 * @Autor: renchao
4 * @LastEditTime: 2023-03-23 14:47:38
5 */
6 let mixin = {
7
8 methods: {
9
10 }
11 }
12 export default mixin
...\ No newline at end of file ...\ No newline at end of file
1 /* 1 /*
2 * @Description: 2 * @Description:
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2023-03-21 13:52:58 4 * @LastEditTime: 2023-03-23 16:37:20
5 */ 5 */
6 import Vue from 'vue'
6 import router from "./router"; 7 import router from "./router";
7 import store from "./store"; 8 import store from "./store";
8 import { getMenuInfo } from "@/api/user"; 9 import { getMenuInfo } from "@/api/user";
...@@ -14,7 +15,6 @@ import Cookies from "js-cookie"; ...@@ -14,7 +15,6 @@ import Cookies from "js-cookie";
14 NProgress.configure({ showSpinner: false }); 15 NProgress.configure({ showSpinner: false });
15 router.beforeEach(async (to, from, next) => { 16 router.beforeEach(async (to, from, next) => {
16 getTheme() 17 getTheme()
17
18 NProgress.start(); 18 NProgress.start();
19 window.document.documentElement.setAttribute("data-theme", 'blue'); 19 window.document.documentElement.setAttribute("data-theme", 'blue');
20 document.title = getPageTitle(to.meta.title); 20 document.title = getPageTitle(to.meta.title);
...@@ -23,17 +23,15 @@ router.beforeEach(async (to, from, next) => { ...@@ -23,17 +23,15 @@ router.beforeEach(async (to, from, next) => {
23 let hasAddRoute = store.state.permission.addRoutes; 23 let hasAddRoute = store.state.permission.addRoutes;
24 if (to.path == "/sb" || to.path == "/jg") { 24 if (to.path == "/sb" || to.path == "/jg") {
25 localStorage.removeItem("token"); 25 localStorage.removeItem("token");
26 sessionStorage.setItem("psth", to.path)
27 next(); 26 next();
28 } else { 27 } else {
29 let code = sessionStorage.getItem("psth") == "/sb" ? "BDCSBPT" : "BDCJGPT" 28 let code = Vue.prototype.BASE_API.THEME == "sb" ? "BDCSBPT" : "BDCJGPT"
30 //判断token是否存在 29 //判断token是否存在
31 const hasToken = localStorage.getItem("token"); 30 const hasToken = localStorage.getItem("token");
32 if (hasToken) { 31 if (hasToken) {
33 //请求用户信息 32 //请求用户信息
34 if (!hasUser) { 33 if (!hasUser) {
35 store.dispatch("user/getUserInfo"); 34 store.dispatch("user/getUserInfo");
36 // import("@/styles/public.scss");
37 } 35 }
38 if (hasAddRoute) { 36 if (hasAddRoute) {
39 next(); 37 next();
...@@ -52,19 +50,20 @@ router.beforeEach(async (to, from, next) => { ...@@ -52,19 +50,20 @@ router.beforeEach(async (to, from, next) => {
52 if (!hasAddDict) { 50 if (!hasAddDict) {
53 await store.dispatch("dict/generateDic"); 51 await store.dispatch("dict/generateDic");
54 } 52 }
55 if (routeTo && routeTo !== "/") { 53 if (routeTo && routeTo !== "/" && routeTo !== "/sb" && routeTo !== "/jg") {
56 next({ ...to, replace: true }); 54 next({ ...to, replace: true });
57 } else { 55 } else {
58 next("/home"); 56 next();
59 } 57 }
60 } 58 }
61 } else if (sessionStorage.getItem("psth")) {
62 next(sessionStorage.getItem("psth"));
63 } else { 59 } else {
64 next("/jg"); 60 if (code == 'BDCSBPT') {
61 next('/sb');
62 } else {
63 next('/jg');
64 }
65 } 65 }
66 } 66 }
67
68 NProgress.done(); 67 NProgress.done();
69 }); 68 });
70 router.afterEach((to) => { 69 router.afterEach((to) => {
......
...@@ -29,15 +29,24 @@ export const constantRoutes = [ ...@@ -29,15 +29,24 @@ export const constantRoutes = [
29 name: "loginsb", 29 name: "loginsb",
30 component: () => import("@/views/loginsb/index.vue"), 30 component: () => import("@/views/loginsb/index.vue"),
31 }, 31 },
32 // 监管首页
33 { 32 {
34 path: '/', 33 path: '/',
34 redirect: to => {
35 if (Vue.prototype.BASE_API.THEME == 'jg') {
36 return { path: '/jg' }
37 } else {
38 return { path: '/sb' }
39 }
40 },
41 },
42 // 监管首页
43 {
44 path: '/home',
35 component: Layout, 45 component: Layout,
36 redirect: '/jg',
37 meta: { title: '首页' }, 46 meta: { title: '首页' },
38 children: [ 47 children: [
39 { 48 {
40 path: 'home', 49 path: '',
41 component: () => import('@/views/home/index'), 50 component: () => import('@/views/home/index'),
42 name: 'home', 51 name: 'home',
43 meta: { title: '工作台', icon: 'workbench', affix: true } 52 meta: { title: '工作台', icon: 'workbench', affix: true }
......
1 const state = { 1 const state = {
2 visitedViews: [{ 2 visitedViews: []
3 'fullPath': "/home",
4 'meta': {
5 affix: true
6 },
7 'name': "Dashboard",
8 'path': "/home",
9 'title': "工作台"
10 }]
11 } 3 }
12
13 const mutations = { 4 const mutations = {
14 ADD_VISITED_VIEW: (state, view) => { 5 ADD_VISITED_VIEW: (state, view) => {
15 if (state.visitedViews.some(v => v.path === view.path)) return 6 if (state.visitedViews.some(v => v.path === view.path)) return
......
1 /*
2 * @Description:
3 * @Autor: renchao
4 * @LastEditTime: 2023-03-23 15:26:37
5 */
1 6
2 var Layout; 7 var Layout;
3 let ApiUrl = localStorage.getItem('ApiUrl') 8 let ApiUrl = localStorage.getItem('ApiUrl')
...@@ -19,7 +24,6 @@ export default function filterAsyncRouter (routers) { ...@@ -19,7 +24,6 @@ export default function filterAsyncRouter (routers) {
19 item.component = Layout 24 item.component = Layout
20 } else { 25 } else {
21 item.component = loadView(item.uri) 26 item.component = loadView(item.uri)
22 console.log(item.component, 'item.componentitem.component');
23 } 27 }
24 item.meta = { 28 item.meta = {
25 title: item.name, 29 title: item.name,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <div class="bg"> 2 <div class="bg">
3 <div class="login-logo"></div> 3 <div class="login-logo"></div>
4 <div class="login-inner-bg login"> 4 <div class="login-inner-bg login">
5 <h2>{{ productName }}</h2> 5 <h2>{{ BASE_API.TITLE }}</h2>
6 <div class="user_style"> 6 <div class="user_style">
7 <h3>欢迎登录</h3> 7 <h3>欢迎登录</h3>
8 <el-form :model="user" :rules="rules" ref="user" id="loginform" class="demo-ruleForm"> 8 <el-form :model="user" :rules="rules" ref="user" id="loginform" class="demo-ruleForm">
...@@ -21,12 +21,11 @@ ...@@ -21,12 +21,11 @@
21 </div> 21 </div>
22 </div> 22 </div>
23 </template> 23 </template>
24
25 <script> 24 <script>
25 import { getMenuInfo } from "@/api/user";
26 import { loginIn } from "@/api/login.js"; 26 import { loginIn } from "@/api/login.js";
27 import { api, getAction } from "@/api/manageApi";
28 export default { 27 export default {
29 name: "Login", 28 name: "jgLogin",
30 data () { 29 data () {
31 return { 30 return {
32 user: { 31 user: {
...@@ -34,41 +33,11 @@ export default { ...@@ -34,41 +33,11 @@ export default {
34 password: "", 33 password: "",
35 checkStatus: false, 34 checkStatus: false,
36 }, 35 },
37 productName: "",
38 rules: { 36 rules: {
39 account: [{ required: true, message: "请填写帐号", trigger: "blur" }], 37 account: [{ required: true, message: "请填写帐号", trigger: "blur" }],
40 password: [{ required: true, message: "请填写密码", trigger: "blur" }], 38 password: [{ required: true, message: "请填写密码", trigger: "blur" }],
41 },
42 };
43 },
44 created () {
45 const params = {};
46 const queryOptions = {
47 conditionGroup: {
48 conditions: [
49 {
50 property: "code",
51 value: "BDCJGPT",
52 operator: "EQ",
53 },
54 ],
55 queryRelation: "AND",
56 },
57 };
58 params.queryOptions = JSON.stringify(queryOptions);
59 //根据子系统code获取子系统详细信息
60 getAction(api.subsystem, params).then((res) => {
61 if (res.status === 1) {
62 this.productName = res.content[0].name;
63 this.$store.dispatch("products/setData", res.content[0].code);
64 sessionStorage.setItem("products", res.content[0].code)
65 } else {
66 this.$message.error({ message: res.message, showClose: true });
67 } 39 }
68 }); 40 }
69 },
70 mounted () {
71 // this.checkUserName();
72 }, 41 },
73 methods: { 42 methods: {
74 //记住用户名 43 //记住用户名
...@@ -87,30 +56,20 @@ export default { ...@@ -87,30 +56,20 @@ export default {
87 } 56 }
88 }, 57 },
89 login (user) { 58 login (user) {
90 var self = this; 59 var self = this
91 this.$refs[user].validate((valid) => { 60 this.$refs[user].validate(async (valid) => {
92 if (valid) { 61 if (valid) {
93 loginIn(self.user.account, self.user.password) 62 let res = await loginIn(self.user.account, self.user.password)
94 .then((res) => { 63 if (res.status == 1) {
95 if (res.status === 1) { 64 localStorage.setItem("token", `Bearer ${res.content}`);
96 //存储token 65 //登录成功后需判断有无重定向,没有重定向则跳转首页
97 localStorage.setItem("token", `Bearer ${res.content}`); 66 this.$router.replace(this.$route.query.redirect || "/home");
98 //登录成功后需判断有无重定向,没有重定向则跳转首页 67 }
99 console.log(this.$route.query.redirect);
100 this.$router.replace(this.$route.query.redirect || "/home");
101 } else {
102 //错误处理
103 }
104 })
105 .catch((error) => {
106 // console.dir(error);
107 });
108 } 68 }
109 }); 69 })
110 }, 70 }
111 }, 71 }
112 components: {}, 72 }
113 };
114 </script> 73 </script>
115 <style scoped lang="scss"> 74 <style scoped lang="scss">
116 .username, 75 .username,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 <div class="bg"> 2 <div class="bg">
3 <div class="title"> 3 <div class="title">
4 <img src="../../image/bdclogo.png" alt=""> 4 <img src="../../image/bdclogo.png" alt="">
5 <h2>{{ productName }}</h2> 5 <h2>{{ BASE_API.TITLE }}</h2>
6 </div> 6 </div>
7 <div class="login-inner-bg login"> 7 <div class="login-inner-bg login">
8 <div class="user_style"> 8 <div class="user_style">
...@@ -12,19 +12,21 @@ ...@@ -12,19 +12,21 @@
12 <el-input class="username" v-model="user.account" placeholder="请输入用户名"></el-input> 12 <el-input class="username" v-model="user.account" placeholder="请输入用户名"></el-input>
13 </el-form-item> 13 </el-form-item>
14 <el-form-item prop="password"> 14 <el-form-item prop="password">
15 <el-input type="password" class="password" @keyup.native="login('user')" v-model="user.password" 15 <el-input type="password" class="password" v-model="user.password" placeholder="请输入密码"
16 placeholder="请输入密码" show-password></el-input> 16 show-password></el-input>
17 </el-form-item> 17 </el-form-item>
18 <el-form-item prop="yz"> 18 <!-- <el-form-item prop="yz">
19 <div class="flex-container"> 19 <div class="flex-container">
20 <div class="flex-input"> 20 <div class="flex-input">
21 <el-input class="yz" @keyup.native="login('user')" v-model="user.yz" placeholder="请输入验证码"></el-input> 21 <el-input class="yz" @keyup.native="login('user')" v-model="user.yz" placeholder="请输入验证码"></el-input>
22 </div> 22 </div>
23 <div class="flex-line"></div> 23 <div class="flex-line"></div>
24 <div class="flex-img"><canvas id="s-canvas" ref="s-canvas"></canvas></div> 24 <div class="flex-img"><canvas id="s-canvas" ref="s-canvas"></canvas></div>
25 <div class="flex-renovate"><font id="renovate" @click="verification">换一批</font></div> 25 <div class="flex-renovate">
26 <font id="renovate" @click="verification">换一批</font>
27 </div>
26 </div> 28 </div>
27 </el-form-item> 29 </el-form-item> -->
28 <el-form-item class="login-btn"> 30 <el-form-item class="login-btn">
29 <el-button type="primary" style="width: 100%" @click="login('user')">登录</el-button> 31 <el-button type="primary" style="width: 100%" @click="login('user')">登录</el-button>
30 </el-form-item> 32 </el-form-item>
...@@ -35,308 +37,283 @@ ...@@ -35,308 +37,283 @@
35 </template> 37 </template>
36 38
37 <script> 39 <script>
38 import { loginIn } from "@/api/login.js"; 40 import { getMenuInfo } from "@/api/user";
39 import { api, getAction } from "@/api/manageApi"; 41 import { loginIn } from "@/api/login.js";
40 export default { 42 export default {
41 name: "Login", 43 name: "sbLogin",
42 data () { 44 data () {
43 return { 45 return {
44 user: { 46 user: {
45 account: "", 47 account: "",
46 password: "", 48 password: "",
47 yz: "", 49 yz: "",
48 checkStatus: false, 50 checkStatus: false,
49 }, 51 },
50 productName: "", 52 productName: "",
51 rules: { 53 rules: {
52 account: [{ required: true, message: "请填写帐号", trigger: "blur" }], 54 account: [{ required: true, message: "请填写帐号", trigger: "blur" }],
53 password: [{ required: true, message: "请填写密码", trigger: "blur" }], 55 password: [{ required: true, message: "请填写密码", trigger: "blur" }],
54 }, 56 },
55 }; 57 };
58 },
59 methods: {
60 verification () {
61 let str = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ', code = '', i = 0;
62 for (; i++ < 4;) code += str[Math.floor(Math.random() * (str.length - 0) + 0)];
63 setTimeout(() => {
64 let canvas = document.getElementById("s-canvas"), ctx = canvas.getContext("2d");
65 canvas.width = 80;
66 canvas.height = 28;
67 ctx.fillStyle = '#ffffff';
68 ctx.fillRect(0, 0, 80, 28);
69 for (i = 0; i < code.length; i++) { this.drawText(ctx, code[i], i); }
70 }, 0);
56 }, 71 },
57 created () { 72 drawText (ctx, txt, i) {
58 this.verification(); 73 ctx.fillStyle = this.randomColor(50, 160);
59 const params = {}; 74 ctx.font = "18px SimHei";
60 const queryOptions = { 75 let x = (i + 1) * (80 / (4 + 1)), y = this.randomNum(18, 28 - 5);
61 conditionGroup: { 76 ctx.translate(x, y);
62 conditions: [ 77 ctx.fillText(txt, 0, 0);
63 { 78 ctx.rotate((-0 * Math.PI) / 180);
64 property: "code", 79 ctx.translate(-x, -y);
65 value: "BDCSBPT",
66 operator: "EQ",
67 },
68 ],
69 queryRelation: "AND",
70 },
71 };
72 params.queryOptions = JSON.stringify(queryOptions);
73 //根据子系统code获取子系统详细信息
74 getAction(api.subsystem, params).then((res) => {
75 if (res.status === 1) {
76 this.productName = res.content[0].name;
77 this.$store.dispatch("products/setData", res.content[0].code);
78
79 sessionStorage.setItem("products", res.content[0].code)
80 } else {
81 this.$message.error({ message: res.message, showClose: true });
82 }
83 });
84 }, 80 },
85 mounted () { 81 randomColor (min, max) {
86 // this.checkUserName(); 82 let r = this.randomNum(min, max);
83 let g = this.randomNum(min, max);
84 let b = this.randomNum(min, max);
85 return "rgb(" + r + "," + g + "," + b + ")";
87 }, 86 },
88 methods: { 87 randomNum (min, max) {
89 verification() { 88 return Math.floor(Math.random() * (max - min) + min);
90 let str = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ', code = '', i = 0; 89 },
91 for( ; i++ < 4 ; ) code += str[ Math.floor( Math.random() * ( str.length - 0 ) + 0 ) ]; 90 //记住用户名
92 setTimeout( () => { 91 checkUserName: function (flag) {
93 let canvas = document.getElementById("s-canvas"), ctx = canvas.getContext("2d"); 92 this.user.checkStatus = flag;
94 canvas.width = 80; 93 if (this.user.checkStatus) {
95 canvas.height = 28; 94 localStorage.setItem("accountId", this.user.account);
96 ctx.fillStyle = '#ffffff'; 95 let name = localStorage.getItem("accountId");
97 ctx.fillRect( 0, 0, 80, 28 ); 96 if (name === "") {
98 for ( i = 0; i < code.length; i++ ) { this.drawText( ctx, code[i], i ); } 97 return;
99 }, 0 );
100 },
101 drawText(ctx, txt, i) {
102 ctx.fillStyle = this.randomColor(50, 160);
103 ctx.font = "18px SimHei";
104 let x = (i + 1) * (80 / (4 + 1)), y = this.randomNum( 18, 28 - 5 );
105 ctx.translate(x, y);
106 ctx.fillText(txt, 0, 0);
107 ctx.rotate((-0 * Math.PI) / 180);
108 ctx.translate(-x, -y);
109 },
110 randomColor(min, max) {
111 let r = this.randomNum(min, max);
112 let g = this.randomNum(min, max);
113 let b = this.randomNum(min, max);
114 return "rgb(" + r + "," + g + "," + b + ")";
115 },
116 randomNum(min, max) {
117 return Math.floor(Math.random() * (max - min) + min);
118 },
119 //记住用户名
120 checkUserName: function (flag) {
121 this.user.checkStatus = flag;
122 if (this.user.checkStatus) {
123 localStorage.setItem("accountId", this.user.account);
124 let name = localStorage.getItem("accountId");
125 if (name === "") {
126 return;
127 } else {
128 this.user.account = name;
129 }
130 } else { 98 } else {
131 this.user.account = localStorage.getItem("accountId"); 99 this.user.account = name;
132 } 100 }
133 }, 101 } else {
134 login (user) { 102 this.user.account = localStorage.getItem("accountId");
135 var self = this; 103 }
136 this.$refs[user].validate((valid) => {
137 if (valid) {
138 loginIn(self.user.account, self.user.password)
139 .then((res) => {
140 if (res.status === 1) {
141 this.$store.dispatch('business/setInitRules', "layout1")
142 //存储token
143 localStorage.setItem("token", `Bearer ${res.content}`);
144 this.$store.dispatch("products/setData", res.content[0].code);
145 sessionStorage.setItem("products", res.content[0].code)
146 //登录成功后需判断有无重定向,没有重定向则跳转首页
147 this.$router.replace(this.$route.query.redirect || "/");
148 } else {
149 console.log(res);
150 this.$message.error({ message: res.message })
151 }
152 })
153 .catch((error) => {
154 // console.dir(error);
155 });
156 }
157 });
158 },
159 }, 104 },
160 components: {}, 105 login (user) {
161 }; 106 var self = this
162 </script> 107 this.$refs[user].validate(async (valid) => {
163 <style scoped lang="scss"> 108 if (valid) {
164 .username, 109 let res = await loginIn(self.user.account, self.user.password)
165 .password, 110 if (res.status == 1) {
166 .yz { 111 let code = this.BASE_API.THEME == "sb" ? "BDCSBPT" : "BDCJGPT"
167 position: relative; 112 localStorage.setItem("token", `Bearer ${res.content}`);
168 &:before { 113 const { result: getMenuData } = (await getMenuInfo(code)) || [];
169 content: ""; 114 let path1 = JSON.parse(getMenuData[0].metadata)?.path + '/' + JSON.parse(getMenuData[0].children[0].metadata)?.path
170 display: block; 115 //登录成功后需判断有无重定向,没有重定向则跳转首页
171 width: 16px; 116 const accessRoutes = await this.$store.dispatch(
172 height: 16px; 117 "permission/generateRoutes",
173 position: absolute; 118 getMenuData
174 left: 10px; 119 );
175 top: 7px; 120 this.$router.addRoutes([
176 background-size: 100% 100%; 121 ...accessRoutes,
177 } 122 { path: "*", redirect: "/404", hidden: true },
178 123 ]);
179 /deep/ .el-input__inner { 124 this.$router.replace(this.$route.query.redirect || path1);
180 color: #000 !important; 125 }
181 text-indent: 24px; 126 }
182 // border: 1px solid rgba(11, 161, 248, 0.4); 127 })
183 // background-color: rgba(6, 135, 205, 0.3) !important;
184 } 128 }
185 } 129 }
130 }
131 </script>
132 <style scoped lang="scss">
133 .username,
134 .password,
135 .yz {
136 position: relative;
186 137
187 .flex-container { 138 &:before {
188 position: relative; 139 content: "";
189 display: -webkit-flex; 140 display: block;
190 display: flex; 141 width: 16px;
191 } 142 height: 16px;
192
193 .flex-input {
194 width: 100%;
195 }
196 .flex-line {
197 position: absolute;
198 width: 1px;
199 height: 64%;
200 margin: 5px;
201 right: 36%;
202 background-color: #CCCCCC;
203 }
204 .flex-img {
205 position: absolute; 143 position: absolute;
206 margin: 2px; 144 left: 10px;
207 right: 16%; 145 top: 7px;
208 } 146 background-size: 100% 100%;
209 .flex-renovate {
210 position: absolute;
211 margin: 1px;
212 right: 3%;
213 }
214 #renovate {
215 color: #3F8FEA;
216 font-size: 16px;
217 font-weight: 700;
218 cursor: pointer;
219 } 147 }
220 148
221 .username::before { 149 /deep/ .el-input__inner {
222 background-image: url(../../image/userlogo.png); 150 color: #000 !important;
151 text-indent: 24px;
223 } 152 }
153 }
224 154
225 .password::before { 155 .flex-container {
226 background-image: url(../../image/passlogo.png); 156 position: relative;
227 } 157 display: -webkit-flex;
228 .yz::before { 158 display: flex;
229 background-image: url(../../image/yzlogo.png); 159 }
230 }
231 160
232 .bg { 161 .flex-input {
233 width: 100%; 162 width: 100%;
234 height: 100%; 163 }
235 min-width: 1440px; 164
236 min-height: 560px; 165 .flex-line {
237 background: url(../../image/loginBoxsb.png) no-repeat; 166 position: absolute;
238 background-size: 100% 100%; 167 width: 1px;
239 overflow: hidden; 168 height: 64%;
240 position: relative; 169 margin: 5px;
241 } 170 right: 36%;
242 .title { 171 background-color: #CCCCCC;
243 width: 24%; 172 }
244 height: 6%; 173
245 top: 20%; 174 .flex-img {
246 right: 38%; 175 position: absolute;
176 margin: 2px;
177 right: 16%;
178 }
179
180 .flex-renovate {
181 position: absolute;
182 margin: 1px;
183 right: 3%;
184 }
185
186 #renovate {
187 color: #3F8FEA;
188 font-size: 16px;
189 font-weight: 700;
190 cursor: pointer;
191 }
192
193 .username::before {
194 background-image: url(../../image/userlogo.png);
195 }
196
197 .password::before {
198 background-image: url(../../image/passlogo.png);
199 }
200
201 .yz::before {
202 background-image: url(../../image/yzlogo.png);
203 }
204
205 .bg {
206 width: 100%;
207 height: 100%;
208 min-width: 1440px;
209 min-height: 560px;
210 background: url(../../image/loginBoxsb.png) no-repeat;
211 background-size: 100% 100%;
212 overflow: hidden;
213 position: relative;
214 }
215
216 .title {
217 width: 24%;
218 height: 6%;
219 top: 20%;
220 right: 38%;
221 position: absolute;
222
223 img {
224 width: 60px;
225 height: 60px;
226 top: 0%;
227 left: 2%;
247 position: absolute; 228 position: absolute;
248 img {
249 width: 60px;
250 height: 60px;
251 top: 0%;
252 left: 2%;
253 position: absolute;
254 }
255 h2 {
256 top: 25%;
257 left: 22%;
258 position: absolute;
259 width: 383px;
260 height: 42px;
261 font-size: 28px;
262 font-weight: 600;
263 color: #ffffff;
264 text-shadow: 0px 4px 4px #002c95;
265 }
266 } 229 }
267 .login-inner-bg { 230
268 background: white; 231 h2 {
269 width: 24.6%; 232 top: 25%;
270 height: 47%; 233 left: 22%;
271 min-width: 360px;
272 min-height: 380px;
273 top: 30%;
274 right: 38%;
275 position: absolute; 234 position: absolute;
276 background-size: 100% 100%; 235 width: 383px;
277 box-sizing: border-box; 236 height: 42px;
278 padding: 56px; 237 font-size: 28px;
238 font-weight: 600;
239 color: #ffffff;
240 text-shadow: 0px 4px 4px #002c95;
279 } 241 }
242 }
280 243
281 .login { 244 .login-inner-bg {
282 .user_style { 245 background: white;
283 h3 { 246 width: 24.6%;
284 font-weight: normal; 247 height: 47%;
285 text-align: center; 248 min-width: 360px;
286 margin: -10px auto 28px; 249 min-height: 380px;
287 font-weight: 400; 250 top: 30%;
288 width: 125px; 251 right: 38%;
289 height: 29px; 252 position: absolute;
290 font-size: 20px; 253 background-size: 100% 100%;
291 font-family: Source Han Sans CN; 254 box-sizing: border-box;
292 font-weight: 400; 255 padding: 56px;
293 color: #333333; 256 }
294 }
295 }
296 257
297 .btn { 258 .login {
298 width: 100%; 259 .user_style {
299 height: 6vh; 260 h3 {
300 background-color: #00c2de; 261 font-weight: normal;
301 border-radius: 5px; 262 text-align: center;
302 font-size: 1.4vw; 263 margin: -10px auto 28px;
303 color: #000; 264 font-weight: 400;
265 width: 125px;
266 height: 29px;
267 font-size: 20px;
268 font-family: Source Han Sans CN;
269 font-weight: 400;
270 color: #333333;
304 } 271 }
272 }
305 273
306 .btn:hover { 274 .btn {
307 cursor: pointer; 275 width: 100%;
308 background-color: #2d8cf0; 276 height: 6vh;
309 } 277 background-color: #00c2de;
278 border-radius: 5px;
279 font-size: 1.4vw;
280 color: #000;
310 } 281 }
311 282
312 .login #loginform { 283 .btn:hover {
313 .el-form-item { 284 cursor: pointer;
314 margin-bottom: 24px !important; 285 background-color: #2d8cf0;
315 } 286 }
287 }
316 288
317 .login-btn { 289 .login #loginform {
318 margin-top: 30px !important; 290 .el-form-item {
319 } 291 margin-bottom: 24px !important;
292 }
320 293
321 .el-button { 294 .login-btn {
322 font-size: 18px; 295 margin-top: 30px !important;
323 border-radius: 0; 296 }
324 background: #4162d8 !important;
325 color: #ffffff !important;
326 cursor: pointer !important;
327 }
328 297
329 .el-input__inner { 298 .el-button {
330 width: 100% !important; 299 font-size: 18px;
331 } 300 border-radius: 0;
301 background: #4162d8 !important;
302 color: #ffffff !important;
303 cursor: pointer !important;
304 }
332 305
333 .el-checkbox__label { 306 .el-input__inner {
334 color: #fff; 307 width: 100% !important;
335 }
336 } 308 }
337 309
338 .inputUser .ivu-input { 310 .el-checkbox__label {
339 padding: 6px 24px !important; 311 color: #fff;
340 border: 1px solid #9f9f9f !important;
341 } 312 }
313 }
314
315 .inputUser .ivu-input {
316 padding: 6px 24px !important;
317 border: 1px solid #9f9f9f !important;
318 }
342 </style> 319 </style>
......