Merge branch 'master' of http://yun.pashanhoo.com:9090/bdc/js-web-jianguan
Showing
34 changed files
with
398 additions
and
491 deletions
... | @@ -20,6 +20,7 @@ | ... | @@ -20,6 +20,7 @@ |
20 | "nprogress": "0.2.0", | 20 | "nprogress": "0.2.0", |
21 | "vue": "2.6.10", | 21 | "vue": "2.6.10", |
22 | "vue-awesome": "^4.5.0", | 22 | "vue-awesome": "^4.5.0", |
23 | "vue-json-editor": "^1.4.3", | ||
23 | "vue-router": "3.0.2", | 24 | "vue-router": "3.0.2", |
24 | "vuex": "3.1.0" | 25 | "vuex": "3.1.0" |
25 | }, | 26 | }, | ... | ... |
... | @@ -4,7 +4,7 @@ import SERVER from './config' | ... | @@ -4,7 +4,7 @@ import SERVER from './config' |
4 | // 数据上报分页 | 4 | // 数据上报分页 |
5 | export function getDataReportPage (data) { | 5 | export function getDataReportPage (data) { |
6 | return request({ | 6 | return request({ |
7 | url: SERVER.SERVERAPI + '/sjsb/DataReport/getDataReportPage', | 7 | url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getDataReportPage', |
8 | method: 'post', | 8 | method: 'post', |
9 | data | 9 | data |
10 | }) | 10 | }) | ... | ... |
src/components/JsonEditor/index.vue
0 → 100644
1 | <template> | ||
2 | <vue-json-editor v-model="resultInfo" :showBtns="false" :mode="'code'" lang="zh" @json-change="onJsonChange" | ||
3 | @json-save="onJsonSave" /> | ||
4 | </template> | ||
5 | <script> | ||
6 | // 引入json编译器 | ||
7 | import vueJsonEditor from 'vue-json-editor' | ||
8 | export default { | ||
9 | components: { | ||
10 | vueJsonEditor | ||
11 | }, | ||
12 | data () { | ||
13 | return { | ||
14 | myValue: this.value, | ||
15 | resultInfo: { | ||
16 | "userId": "1111111129ac7325-30da-4e6a-8a00-9699820fc04a", | ||
17 | "realName": "小雪18", | ||
18 | "gradeCode": "166", | ||
19 | "provinceCode": "110000", | ||
20 | "cityCode": { | ||
21 | "test1": "test1", | ||
22 | "test2": "test2" | ||
23 | }, | ||
24 | "schoolId": 21, | ||
25 | "schoolLevel": 1, | ||
26 | "schoolName": "北京第二实验小学朝阳学校" | ||
27 | }, | ||
28 | } | ||
29 | }, | ||
30 | methods: { | ||
31 | onJsonChange (value) { | ||
32 | console.log('value:', value); | ||
33 | }, | ||
34 | onJsonSave (value) { | ||
35 | console.log('value:', value); | ||
36 | } | ||
37 | } | ||
38 | } | ||
39 | |||
40 | </script> | ||
41 | |||
42 | <style> | ||
43 | /* jsoneditor右上角默认有一个链接,加css去掉了 */ | ||
44 | .jsoneditor-poweredBy { | ||
45 | display: none; | ||
46 | } | ||
47 | |||
48 | .jsoneditor-vue { | ||
49 | height: 300px; | ||
50 | } | ||
51 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -119,7 +119,6 @@ export default { | ... | @@ -119,7 +119,6 @@ export default { |
119 | // 单选 | 119 | // 单选 |
120 | singleElection (row) { | 120 | singleElection (row) { |
121 | this.selected = this.data.indexOf(row); | 121 | this.selected = this.data.indexOf(row); |
122 | console.log(this.selected); | ||
123 | }, | 122 | }, |
124 | 123 | ||
125 | tableRowClassName ({ row, rowIndex }) { | 124 | tableRowClassName ({ row, rowIndex }) { | ... | ... |
1 | import Vue from 'vue' | 1 | import Vue from 'vue' |
2 | import Popup from './index.vue' | 2 | import Popup from './index.vue' |
3 | |||
4 | const PopupBox = Vue.extend(Popup) | 3 | const PopupBox = Vue.extend(Popup) |
5 | Popup.install = function (title, editItem, data, formData) { | 4 | let popuping = undefined |
5 | |||
6 | PopupBox.prototype.close = function () { | ||
7 | // 如果Popup 有引用,则去掉引用 | ||
8 | if (popuping) { | ||
9 | popuping = undefined | ||
10 | } | ||
11 | // 先将组件隐藏 | ||
12 | this.isShow = false | ||
13 | // 延迟300毫秒,等待Popup关闭动画执行完之后销毁组件 | ||
14 | setTimeout(() => { | ||
15 | // 移除挂载的dom元素 | ||
16 | if (this.$el && this.$el.parentNode) { | ||
17 | this.$el.parentNode.removeChild(this.$el) | ||
18 | } | ||
19 | }, 300) | ||
20 | } | ||
21 | |||
22 | const Popup1 = (title, editItem, data, formData) => { | ||
23 | // 如果组件已渲染,则返回即可 | ||
24 | if (popuping) { | ||
25 | return popuping | ||
26 | } | ||
6 | data.title = title | 27 | data.title = title |
7 | data.editItem = editItem | 28 | data.editItem = editItem |
8 | if (formData) { | 29 | if (formData) { |
9 | data.formData = formData | 30 | data.formData = formData |
10 | } | 31 | } |
32 | // 通过构造函数初始化组件 相当于 new Vue() | ||
11 | let instance = new PopupBox({ | 33 | let instance = new PopupBox({ |
12 | data | 34 | data |
13 | }).$mount() | 35 | }).$mount() |
... | @@ -15,6 +37,8 @@ Popup.install = function (title, editItem, data, formData) { | ... | @@ -15,6 +37,8 @@ Popup.install = function (title, editItem, data, formData) { |
15 | Vue.nextTick(() => { | 37 | Vue.nextTick(() => { |
16 | instance.isShow = true | 38 | instance.isShow = true |
17 | }) | 39 | }) |
40 | // 将组件实例赋值给loading | ||
41 | popuping = instance | ||
42 | return instance | ||
18 | } | 43 | } |
19 | 44 | export default Popup1 | |
20 | export default Popup | ... | ... |
... | @@ -21,6 +21,7 @@ | ... | @@ -21,6 +21,7 @@ |
21 | </transition> | 21 | </transition> |
22 | </template> | 22 | </template> |
23 | <script> | 23 | <script> |
24 | import Popup1 from './index' | ||
24 | export default { | 25 | export default { |
25 | name: 'index', | 26 | name: 'index', |
26 | data () { | 27 | data () { |
... | @@ -74,8 +75,7 @@ export default { | ... | @@ -74,8 +75,7 @@ export default { |
74 | }, | 75 | }, |
75 | methods: { | 76 | methods: { |
76 | onCancel () { | 77 | onCancel () { |
77 | this.isShow = false | 78 | Popup1().close() |
78 | this.cancel() | ||
79 | }, | 79 | }, |
80 | onConfirm () { | 80 | onConfirm () { |
81 | this.loading = true | 81 | this.loading = true |
... | @@ -93,7 +93,7 @@ export default { | ... | @@ -93,7 +93,7 @@ export default { |
93 | loadViewFn (view) { | 93 | loadViewFn (view) { |
94 | return (r) => | 94 | return (r) => |
95 | require.ensure([], () => | 95 | require.ensure([], () => |
96 | r(require(`@/views/${view}.vue`)) | 96 | r(require(`@/${view}.vue`)) |
97 | ) | 97 | ) |
98 | } | 98 | } |
99 | }, | 99 | }, |
... | @@ -108,7 +108,7 @@ export default { | ... | @@ -108,7 +108,7 @@ export default { |
108 | .ls-mask { | 108 | .ls-mask { |
109 | width: 100%; | 109 | width: 100%; |
110 | height: 100%; | 110 | height: 100%; |
111 | z-index: 100; | 111 | z-index: 2000; |
112 | position: fixed; | 112 | position: fixed; |
113 | left: 0; | 113 | left: 0; |
114 | top: 0; | 114 | top: 0; |
... | @@ -131,10 +131,15 @@ export default { | ... | @@ -131,10 +131,15 @@ export default { |
131 | padding-left: 5px; | 131 | padding-left: 5px; |
132 | } | 132 | } |
133 | 133 | ||
134 | /deep/.closeStyle { | ||
135 | top: 7px !important; | ||
136 | } | ||
137 | |||
134 | .ls-title { | 138 | .ls-title { |
135 | padding: 16px; | 139 | padding: 10px; |
136 | color: #ffffff; | 140 | color: #ffffff; |
137 | background: linear-gradient(3deg, #409EFF, #a7cbee); | 141 | background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%); |
142 | font-size: 16px; | ||
138 | } | 143 | } |
139 | 144 | ||
140 | .ls-title .svg-icon { | 145 | .ls-title .svg-icon { |
... | @@ -142,11 +147,11 @@ export default { | ... | @@ -142,11 +147,11 @@ export default { |
142 | } | 147 | } |
143 | 148 | ||
144 | .mask-content { | 149 | .mask-content { |
145 | padding: 20px; | 150 | padding: 15px; |
146 | width: 100%; | 151 | width: 100%; |
147 | min-height: 30%; | 152 | min-height: 20%; |
148 | max-height: 95%; | 153 | max-height: 95%; |
149 | overflow-y: scroll; | 154 | // overflow-y: scroll; |
150 | } | 155 | } |
151 | 156 | ||
152 | .ls-mask-footer { | 157 | .ls-mask-footer { |
... | @@ -182,4 +187,3 @@ export default { | ... | @@ -182,4 +187,3 @@ export default { |
182 | width: 75px; | 187 | width: 75px; |
183 | } | 188 | } |
184 | </style> | 189 | </style> |
185 | |||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -16,12 +16,14 @@ export default { | ... | @@ -16,12 +16,14 @@ export default { |
16 | } | 16 | } |
17 | </script> | 17 | </script> |
18 | <style lang="scss" scoped> | 18 | <style lang="scss" scoped> |
19 | .app-main { | 19 | .hasTagsView { |
20 | height: calc(100vh - 84px); | 20 | .app-main { |
21 | overflow-x: hidden; | 21 | overflow-x: auto; |
22 | padding: 5px; | ||
22 | box-sizing: border-box; | 23 | box-sizing: border-box; |
23 | flex: 1; | 24 | background-color: #EDF1F7; |
24 | width: 100%; | 25 | box-sizing: border-box; |
25 | margin-right: 15px; | 26 | |
27 | } | ||
26 | } | 28 | } |
27 | </style> | 29 | </style> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <template> | 1 | <template> |
2 | <div class="navbar-con"> | 2 | <div class="navbar-con"> |
3 | <div class="navbar"> | 3 | <div class="navbar"> |
4 | <div class="logo"> | 4 | <div class="sidebarLeft"> |
5 | <img :src="require('@/image/logo.png')" alt="" /> | 5 | <sidebarLeft /> |
6 | </div> | ||
7 | <div class="backdrop"> | ||
8 | <Breadcrumb /> | ||
9 | </div> | 6 | </div> |
7 | <div class="sidebarRight d-center"> | ||
8 | <sidebarRight /> | ||
10 | <div class="right-menu"> | 9 | <div class="right-menu"> |
11 | <div class="dataView d-center pointer" @click="handleDataView">大屏展示</div> | 10 | <div class="dataView pointer" @click="handleDataView">大屏展示</div> |
12 | <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand"> | 11 | <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand"> |
13 | <div class="avatar-wrapper"> | 12 | <div class="avatar-wrapper"> |
14 | <span style="padding-right:10px">{{ name }}</span> | 13 | <span style="padding-right:10px">{{ name }}</span> |
... | @@ -22,14 +21,17 @@ | ... | @@ -22,14 +21,17 @@ |
22 | </div> | 21 | </div> |
23 | </div> | 22 | </div> |
24 | </div> | 23 | </div> |
24 | </div> | ||
25 | </template> | 25 | </template> |
26 | <script> | 26 | <script> |
27 | import { mapGetters } from 'vuex' | ||
28 | import Breadcrumb from './Breadcrumb' | ||
29 | import defaultSettings from '@/settings' | 27 | import defaultSettings from '@/settings' |
28 | import sidebarLeft from './Sidebar/sidebarLeft' | ||
29 | import sidebarRight from './Sidebar/sidebarRight' | ||
30 | import { mapGetters } from 'vuex' | ||
30 | export default { | 31 | export default { |
31 | components: { | 32 | components: { |
32 | Breadcrumb | 33 | sidebarLeft, |
34 | sidebarRight | ||
33 | }, | 35 | }, |
34 | computed: { | 36 | computed: { |
35 | ...mapGetters(['sidebar', 'avatar', 'name']) | 37 | ...mapGetters(['sidebar', 'avatar', 'name']) |
... | @@ -49,115 +51,74 @@ export default { | ... | @@ -49,115 +51,74 @@ export default { |
49 | }, | 51 | }, |
50 | handleCommand (command) { | 52 | handleCommand (command) { |
51 | if (command == 'a') { | 53 | if (command == 'a') { |
52 | } else { | ||
53 | |||
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 | /deep/.el-menu--horizontal { |
61 | position: relative; | 61 | display: flex; |
62 | align-items: center; | ||
63 | } | ||
62 | 64 | ||
63 | .logo { | 65 | .menubg { |
64 | color: #fff; | 66 | line-height: 30px; |
65 | font-size: 26px; | 67 | color: #FFFFFF; |
66 | font-weight: 700; | 68 | margin-right: 5px; |
67 | } | 69 | background: linear-gradient(180deg, #0A2580 0%, #2542C9 100%); |
68 | } | 70 | } |
69 | 71 | ||
70 | .dataView { | 72 | /deep/.el-menu-item { |
71 | color: #fff; | 73 | @extend .menubg; |
72 | width: 120px; | ||
73 | height: 32px; | ||
74 | background: url('../../image/dp.png'); | ||
75 | background-size: cover; | ||
76 | margin-right: 20px; | ||
77 | } | 74 | } |
78 | 75 | ||
79 | .NoticeBar { | 76 | /deep/.el-submenu { |
80 | position: absolute; | 77 | @extend .menubg; |
81 | bottom: 0; | ||
82 | } | 78 | } |
83 | 79 | ||
84 | .el-dropdown-menu { | 80 | /deep/.el-submenu__title { |
85 | padding: 0 !important; | 81 | line-height: 30px !important; |
86 | border: 1px solid #EBEEF5; | 82 | height: 42px !important; |
87 | box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.12); | 83 | } |
88 | border-radius: 4px 0 0 4px 4px; | ||
89 | 84 | ||
90 | .el-dropdown-menu__item { | 85 | /deep/.el-submenu__title span { |
91 | text-align: center; | ||
92 | margin-top: 0 !important; | ||
93 | font-size: 14px; | 86 | font-size: 14px; |
94 | font-family: PingFangSC-Regular, PingFang SC; | 87 | } |
95 | font-weight: 400; | ||
96 | color: #4A4A4A; | ||
97 | width: 140px; | ||
98 | height: 36px; | ||
99 | line-height: 36px; | ||
100 | } | ||
101 | 88 | ||
102 | .el-dropdown-menu__item:nth-child(6) { | 89 | // 导航选中背景色 |
103 | border-top: 1px solid #EBEEF5; | 90 | .xuanzhong { |
104 | } | 91 | background: linear-gradient(180deg, #73551D 0%, #C09C43 100%); |
92 | font-weight: 700; | ||
93 | color: #FFFFFF !important; | ||
94 | } | ||
105 | 95 | ||
106 | .popper__arrow { | 96 | /deep/.el-menu-item:hover { |
107 | top: -11px !important; | 97 | @extend .xuanzhong; |
108 | left: 110px !important; | 98 | } |
109 | transform: rotate(0deg) scale(2); | ||
110 | } | ||
111 | 99 | ||
112 | .el-dropdown-menu__item:not(.is-disabled):hover, | 100 | /deep/.el-submenu__title:hover { |
113 | .el-dropdown-menu__item:focus { | 101 | @extend .xuanzhong; |
114 | background: #F6F7F9; | 102 | } |
115 | color: #4A4A4A; | 103 | |
116 | } | 104 | /deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus { |
105 | @extend .xuanzhong; | ||
117 | } | 106 | } |
118 | 107 | ||
108 | /deep/.el-menu-item.is-active { | ||
109 | @extend .xuanzhong; | ||
110 | } | ||
111 | |||
112 | |||
119 | .navbar { | 113 | .navbar { |
120 | height: $headerHeight; | 114 | height: $headerHeight; |
121 | overflow: hidden; | 115 | overflow: hidden; |
122 | position: relative; | 116 | position: relative; |
123 | // background: linear-gradient(270deg, #148CEE 0%, #1870E3 100%); //默认颜色 | 117 | background: linear-gradient(180deg, #0D3DC9 0%, #3476E1 100%); |
124 | // box-shadow: 0 1px 0px rgba(0, 21, 41, 0.08); | ||
125 | background: #0D1230; | ||
126 | display: flex; | 118 | display: flex; |
127 | align-items: center; | 119 | align-items: center; |
128 | padding-right: 20px; | 120 | padding: 0 20px; |
129 | justify-content: space-between; | 121 | justify-content: space-between; |
130 | margin-bottom: 10px; | ||
131 | |||
132 | .header-logo { | ||
133 | width: 300px; | ||
134 | } | ||
135 | |||
136 | .backdrop { | ||
137 | flex: 1; | ||
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 | 122 | ||
162 | .right-menu { | 123 | .right-menu { |
163 | float: right; | 124 | float: right; |
... | @@ -166,11 +127,6 @@ export default { | ... | @@ -166,11 +127,6 @@ export default { |
166 | display: flex; | 127 | display: flex; |
167 | align-items: center; | 128 | align-items: center; |
168 | 129 | ||
169 | .function { | ||
170 | margin: 0 15px; | ||
171 | cursor: pointer; | ||
172 | } | ||
173 | |||
174 | .shutdown { | 130 | .shutdown { |
175 | font-size: 20px; | 131 | font-size: 20px; |
176 | margin-left: 15px; | 132 | margin-left: 15px; | ... | ... |
... | @@ -13,17 +13,8 @@ export default { | ... | @@ -13,17 +13,8 @@ export default { |
13 | } | 13 | } |
14 | }, | 14 | }, |
15 | render (h, context) { | 15 | render (h, context) { |
16 | const { icon, title } = context.props | 16 | const { title } = context.props |
17 | const vnodes = [] | 17 | const vnodes = [] |
18 | |||
19 | if (icon) { | ||
20 | if (icon.includes('el-icon')) { | ||
21 | vnodes.push(<i class={[icon, 'sub-el-icon']} />) | ||
22 | } else { | ||
23 | vnodes.push(<svg-icon icon-class={icon} />) | ||
24 | } | ||
25 | } | ||
26 | |||
27 | if (title) { | 18 | if (title) { |
28 | vnodes.push(<span slot='title'>{(title)}</span>) | 19 | vnodes.push(<span slot='title'>{(title)}</span>) |
29 | } | 20 | } |
... | @@ -31,11 +22,3 @@ export default { | ... | @@ -31,11 +22,3 @@ export default { |
31 | } | 22 | } |
32 | } | 23 | } |
33 | </script> | 24 | </script> |
34 | |||
35 | <style scoped> | ||
36 | .sub-el-icon { | ||
37 | color: currentColor; | ||
38 | width: 1em; | ||
39 | height: 1em; | ||
40 | } | ||
41 | </style> | ... | ... |
1 | <template> | 1 | <template> |
2 | <div> | 2 | <el-menu router :default-active="activeMenu" mode="horizontal"> |
3 | <el-scrollbar wrap-class="scrollbar-wrapper"> | ||
4 | <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" | ||
6 | mode="vertical"> | ||
7 | <!-- 权限菜单 --> | 3 | <!-- 权限菜单 --> |
8 | <!-- <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> --> | 4 | <sidebar-item v-for="route in permission_routes.slice(2, 5)" :key="route.path" :item="route" |
5 | :base-path="route.path" /> | ||
9 | <!-- 菜单全部展示 --> | 6 | <!-- 菜单全部展示 --> |
10 | <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> | 7 | <!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> --> |
11 | </el-menu> | 8 | </el-menu> |
12 | </el-scrollbar> | ||
13 | </div> | ||
14 | </template> | 9 | </template> |
15 | 10 | ||
16 | <script> | 11 | <script> |
17 | import { mapGetters } from 'vuex' | 12 | import { mapGetters } from 'vuex' |
18 | import Logo from './Logo' | 13 | import Logo from './Logo' |
19 | import defaultSettings from '@/settings' | ||
20 | import SidebarItem from './SidebarItem' | 14 | import SidebarItem from './SidebarItem' |
21 | import variables from '@/styles/variables.scss' | 15 | import variables from '@/styles/variables.scss' |
22 | import { asyncRoutes } from '@/router' | 16 | import { asyncRoutes } from '@/router' |
23 | export default { | 17 | export default { |
24 | components: { SidebarItem, Logo }, | 18 | components: { SidebarItem, Logo }, |
25 | data () { | ||
26 | return { | ||
27 | title: defaultSettings.title | ||
28 | } | ||
29 | }, | ||
30 | computed: { | 19 | computed: { |
31 | ...mapGetters(['permission_routes', 'sidebar']), | 20 | ...mapGetters(['permission_routes', 'sidebar']), |
32 | activeMenu () { | 21 | activeMenu () { |
... | @@ -41,8 +30,14 @@ export default { | ... | @@ -41,8 +30,14 @@ export default { |
41 | return variables | 30 | return variables |
42 | }, | 31 | }, |
43 | asyncRoutes () { | 32 | asyncRoutes () { |
44 | return asyncRoutes | 33 | return asyncRoutes.slice(0, 3) |
45 | } | 34 | } |
46 | } | 35 | } |
47 | } | 36 | } |
48 | </script> | 37 | </script> |
38 | <style scoped lang="scss"> | ||
39 | .el-menu--horizontal { | ||
40 | display: flex; | ||
41 | background: none !important; | ||
42 | } | ||
43 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <template> | ||
2 | <el-menu router :default-active="activeMenu" mode="horizontal"> | ||
3 | <!-- 权限菜单 --> | ||
4 | <sidebar-item v-for="route in permission_routes.slice(5, 7)" :key="route.path" :item="route" | ||
5 | :base-path="route.path" /> | ||
6 | <!-- 菜单全部展示 --> | ||
7 | <!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> --> | ||
8 | </el-menu> | ||
9 | </template> | ||
10 | |||
11 | <script> | ||
12 | import { mapGetters } from 'vuex' | ||
13 | import Logo from './Logo' | ||
14 | import SidebarItem from './SidebarItem' | ||
15 | import variables from '@/styles/variables.scss' | ||
16 | import { asyncRoutes } from '@/router' | ||
17 | export default { | ||
18 | components: { SidebarItem, Logo }, | ||
19 | computed: { | ||
20 | ...mapGetters(['permission_routes', 'sidebar']), | ||
21 | activeMenu () { | ||
22 | const route = this.$route | ||
23 | const { meta, path } = route | ||
24 | if (meta.activeMenu) { | ||
25 | return meta.activeMenu | ||
26 | } | ||
27 | return path | ||
28 | }, | ||
29 | variables () { | ||
30 | return variables | ||
31 | }, | ||
32 | asyncRoutes () { | ||
33 | return asyncRoutes.slice(3, 6) | ||
34 | } | ||
35 | } | ||
36 | } | ||
37 | </script> | ||
38 | <style scoped lang="scss"> | ||
39 | .el-menu--horizontal { | ||
40 | display: flex; | ||
41 | background: none !important; | ||
42 | } | ||
43 | |||
44 | /deep/.el-menu-item:hover { | ||
45 | background: none; | ||
46 | font-weight: 700; | ||
47 | color: #fff !important; | ||
48 | } | ||
49 | |||
50 | /deep/.el-submenu__title { | ||
51 | color: #fff; | ||
52 | font-size: 18px; | ||
53 | } | ||
54 | |||
55 | /deep/.el-submenu__title:hover { | ||
56 | background: none; | ||
57 | font-weight: 700; | ||
58 | font-size: 20px; | ||
59 | } | ||
60 | |||
61 | /deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus { | ||
62 | background: none; | ||
63 | color: #fff; | ||
64 | font-size: 20px; | ||
65 | font-weight: 700 !important; | ||
66 | } | ||
67 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | export { default as AppMain } from './AppMain' | 1 | export { default as AppMain } from './AppMain' |
2 | export { default as Navbar } from './Navbar' | 2 | export { default as Navbar } from './Navbar' |
3 | export { default as Sidebar } from './Sidebar/index.vue' | 3 | export { default as Sidebar } from './Sidebar/sidebarRight.vue' |
4 | export { default as TagsView } from './TagsView/index.vue' | 4 | export { default as TagsView } from './TagsView/index.vue' | ... | ... |
1 | <template> | 1 | <template> |
2 | <div class="app-wrapper"> | 2 | <div class="app-wrapper"> |
3 | <!-- <sidebar class="sidebar-container" /> | ||
4 | <div class="main-container"> | ||
5 | <navbar /> | 3 | <navbar /> |
6 | <app-main /> | 4 | <div class="appMain"> |
7 | </div> --> | ||
8 | <navbar /> | ||
9 | <div class="main-container"> | ||
10 | <sidebar class="sidebar-container" /> | ||
11 | <app-main /> | 5 | <app-main /> |
12 | </div> | 6 | </div> |
13 | </div> | 7 | </div> |
... | @@ -42,7 +36,7 @@ export default { | ... | @@ -42,7 +36,7 @@ export default { |
42 | position: relative; | 36 | position: relative; |
43 | height: 100%; | 37 | height: 100%; |
44 | width: 100%; | 38 | width: 100%; |
45 | background-color: $containerbg; | 39 | |
46 | 40 | ||
47 | &.mobile.openSidebar { | 41 | &.mobile.openSidebar { |
48 | position: fixed; | 42 | position: fixed; |
... | @@ -50,23 +44,14 @@ export default { | ... | @@ -50,23 +44,14 @@ export default { |
50 | } | 44 | } |
51 | } | 45 | } |
52 | 46 | ||
53 | .drawer-bg { | 47 | .appMain { |
54 | background: #000; | 48 | height: calc(100vh - 65px); |
55 | opacity: 0.3; | 49 | background-color: $containerbg; |
56 | width: 100%; | ||
57 | top: 0; | ||
58 | height: 100%; | ||
59 | position: absolute; | ||
60 | z-index: 999; | ||
61 | } | ||
62 | |||
63 | .fixed-header { | ||
64 | width: 100%; | ||
65 | transition: width 0.28s; | ||
66 | } | ||
67 | 50 | ||
68 | .el-dropdown-menu--small { | 51 | .app-main { |
69 | padding: 0; | 52 | height: 100%; |
70 | width: 5px; | 53 | padding: 10px; |
54 | box-sizing: border-box; | ||
55 | } | ||
71 | } | 56 | } |
72 | </style> | 57 | </style> | ... | ... |
... | @@ -16,14 +16,12 @@ export default { | ... | @@ -16,14 +16,12 @@ export default { |
16 | } | 16 | } |
17 | </script> | 17 | </script> |
18 | <style lang="scss" scoped> | 18 | <style lang="scss" scoped> |
19 | .hasTagsView { | 19 | .app-main { |
20 | .app-main { | 20 | height: calc(100vh - 84px); |
21 | overflow-x: auto; | 21 | overflow-x: hidden; |
22 | padding: 5px; | ||
23 | box-sizing: border-box; | 22 | box-sizing: border-box; |
24 | background-color: #EDF1F7; | 23 | flex: 1; |
25 | box-sizing: border-box; | 24 | width: 100%; |
26 | 25 | margin-right: 15px; | |
27 | } | ||
28 | } | 26 | } |
29 | </style> | 27 | </style> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <template> | 1 | <template> |
2 | <div class="navbar-con"> | 2 | <div class="navbar-con"> |
3 | <div class="navbar"> | 3 | <div class="navbar"> |
4 | <!-- <div class="backdrop"> | 4 | <div class="logo"> |
5 | <sidebar /> | 5 | <img :src="require('@/image/logo.png')" alt="" /> |
6 | </div> --> | 6 | </div> |
7 | <div class="backdrop"> | ||
8 | <Breadcrumb /> | ||
9 | </div> | ||
7 | <div class="right-menu"> | 10 | <div class="right-menu"> |
8 | <div class="dataView pointer" @click="handleDataView">大屏展示</div> | 11 | <div class="dataView d-center pointer" @click="handleDataView">大屏展示</div> |
9 | <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"> |
10 | <div class="avatar-wrapper"> | 13 | <div class="avatar-wrapper"> |
11 | <span style="padding-right:10px">{{ name }}</span> | 14 | <span style="padding-right:10px">{{ name }}</span> |
... | @@ -21,12 +24,12 @@ | ... | @@ -21,12 +24,12 @@ |
21 | </div> | 24 | </div> |
22 | </template> | 25 | </template> |
23 | <script> | 26 | <script> |
24 | import defaultSettings from '@/settings' | ||
25 | import Sidebar from './Sidebar' | ||
26 | import { mapGetters } from 'vuex' | 27 | import { mapGetters } from 'vuex' |
28 | import Breadcrumb from './Breadcrumb' | ||
29 | import defaultSettings from '@/settings' | ||
27 | export default { | 30 | export default { |
28 | components: { | 31 | components: { |
29 | Sidebar, | 32 | Breadcrumb |
30 | }, | 33 | }, |
31 | computed: { | 34 | computed: { |
32 | ...mapGetters(['sidebar', 'avatar', 'name']) | 35 | ...mapGetters(['sidebar', 'avatar', 'name']) |
... | @@ -54,8 +57,23 @@ export default { | ... | @@ -54,8 +57,23 @@ export default { |
54 | } | 57 | } |
55 | </script> | 58 | </script> |
56 | <style lang="scss" scoped> | 59 | <style lang="scss" scoped> |
60 | .navbar-con { | ||
61 | position: relative; | ||
62 | |||
63 | .logo { | ||
64 | color: #fff; | ||
65 | font-size: 26px; | ||
66 | font-weight: 700; | ||
67 | } | ||
68 | } | ||
69 | |||
57 | .dataView { | 70 | .dataView { |
58 | color: #fff; | 71 | color: #fff; |
72 | width: 120px; | ||
73 | height: 32px; | ||
74 | background: url('../../image/dp.png'); | ||
75 | background-size: cover; | ||
76 | margin-right: 20px; | ||
59 | } | 77 | } |
60 | 78 | ||
61 | .NoticeBar { | 79 | .NoticeBar { |
... | @@ -102,16 +120,28 @@ export default { | ... | @@ -102,16 +120,28 @@ export default { |
102 | height: $headerHeight; | 120 | height: $headerHeight; |
103 | overflow: hidden; | 121 | overflow: hidden; |
104 | position: relative; | 122 | position: relative; |
105 | background: linear-gradient(180deg, #0D3DC9 0%, #3476E1 100%); | 123 | // background: linear-gradient(270deg, #148CEE 0%, #1870E3 100%); //默认颜色 |
124 | // box-shadow: 0 1px 0px rgba(0, 21, 41, 0.08); | ||
125 | background: #0D1230; | ||
106 | display: flex; | 126 | display: flex; |
107 | align-items: center; | 127 | align-items: center; |
108 | padding: 0 20px; | 128 | padding-right: 20px; |
109 | justify-content: space-between; | 129 | justify-content: space-between; |
130 | margin-bottom: 10px; | ||
110 | 131 | ||
111 | .header-logo { | 132 | .header-logo { |
112 | width: 300px; | 133 | width: 300px; |
113 | } | 134 | } |
114 | 135 | ||
136 | .backdrop { | ||
137 | flex: 1; | ||
138 | width: 60%; | ||
139 | background-size: 100% 100%; | ||
140 | height: $headerHeight; | ||
141 | display: flex; | ||
142 | align-items: center; | ||
143 | } | ||
144 | |||
115 | .hamburger-container { | 145 | .hamburger-container { |
116 | line-height: 43px; | 146 | line-height: 43px; |
117 | height: 100%; | 147 | height: 100%; | ... | ... |
1 | <template> | 1 | <template> |
2 | <div> | 2 | <div> |
3 | <el-menu router :default-active="activeMenu" mode="horizontal"> | 3 | <el-scrollbar wrap-class="scrollbar-wrapper"> |
4 | <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" | ||
6 | mode="vertical"> | ||
4 | <!-- 权限菜单 --> | 7 | <!-- 权限菜单 --> |
5 | <!-- <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> --> | 8 | <!-- <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> --> |
6 | <!-- 菜单全部展示 --> | 9 | <!-- 菜单全部展示 --> |
7 | <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> | 10 | <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> |
8 | </el-menu> | 11 | </el-menu> |
12 | </el-scrollbar> | ||
9 | </div> | 13 | </div> |
10 | </template> | 14 | </template> |
11 | 15 | ||
12 | <script> | 16 | <script> |
13 | import { mapGetters } from 'vuex' | 17 | import { mapGetters } from 'vuex' |
14 | import Logo from './Logo' | 18 | import Logo from './Logo' |
19 | import defaultSettings from '@/settings' | ||
15 | import SidebarItem from './SidebarItem' | 20 | import SidebarItem from './SidebarItem' |
16 | import variables from '@/styles/variables.scss' | 21 | import variables from '@/styles/variables.scss' |
17 | import { asyncRoutes1 } from '@/router' | 22 | import { asyncRoutes } from '@/router' |
18 | export default { | 23 | export default { |
19 | components: { SidebarItem, Logo }, | 24 | components: { SidebarItem, Logo }, |
25 | data () { | ||
26 | return { | ||
27 | title: defaultSettings.title | ||
28 | } | ||
29 | }, | ||
20 | computed: { | 30 | computed: { |
21 | ...mapGetters(['permission_routes', 'sidebar']), | 31 | ...mapGetters(['permission_routes', 'sidebar']), |
22 | activeMenu () { | 32 | activeMenu () { |
... | @@ -31,38 +41,8 @@ export default { | ... | @@ -31,38 +41,8 @@ export default { |
31 | return variables | 41 | return variables |
32 | }, | 42 | }, |
33 | asyncRoutes () { | 43 | asyncRoutes () { |
34 | return asyncRoutes1 | 44 | return asyncRoutes |
35 | } | 45 | } |
36 | } | 46 | } |
37 | } | 47 | } |
38 | </script> | 48 | </script> |
... | \ No newline at end of file | ... | \ No newline at end of file |
39 | <style scoped lang="scss"> | ||
40 | .el-menu--horizontal { | ||
41 | display: flex; | ||
42 | background: none !important; | ||
43 | } | ||
44 | |||
45 | /deep/.el-menu-item:hover { | ||
46 | background: none; | ||
47 | font-weight: 700; | ||
48 | color: #fff !important; | ||
49 | } | ||
50 | |||
51 | /deep/.el-submenu__title { | ||
52 | color: #fff; | ||
53 | font-size: 18px; | ||
54 | } | ||
55 | |||
56 | /deep/.el-submenu__title:hover { | ||
57 | background: none; | ||
58 | font-weight: 700; | ||
59 | font-size: 20px; | ||
60 | } | ||
61 | |||
62 | /deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus { | ||
63 | background: none; | ||
64 | color: #fff; | ||
65 | font-size: 20px; | ||
66 | font-weight: 700 !important; | ||
67 | } | ||
68 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <template> | 1 | <template> |
2 | <div class="app-wrapper"> | 2 | <div class="app-wrapper"> |
3 | <navbar /> | 3 | <navbar /> |
4 | <div class="appMain"> | 4 | <div class="main-container"> |
5 | <sidebar class="sidebar-container" /> | ||
5 | <app-main /> | 6 | <app-main /> |
6 | </div> | 7 | </div> |
7 | </div> | 8 | </div> |
... | @@ -36,7 +37,7 @@ export default { | ... | @@ -36,7 +37,7 @@ export default { |
36 | position: relative; | 37 | position: relative; |
37 | height: 100%; | 38 | height: 100%; |
38 | width: 100%; | 39 | width: 100%; |
39 | 40 | background-color: $containerbg; | |
40 | 41 | ||
41 | &.mobile.openSidebar { | 42 | &.mobile.openSidebar { |
42 | position: fixed; | 43 | position: fixed; |
... | @@ -44,14 +45,23 @@ export default { | ... | @@ -44,14 +45,23 @@ export default { |
44 | } | 45 | } |
45 | } | 46 | } |
46 | 47 | ||
47 | .appMain { | 48 | .drawer-bg { |
48 | height: calc(100vh - 65px); | 49 | background: #000; |
49 | background-color: $containerbg; | 50 | opacity: 0.3; |
50 | 51 | width: 100%; | |
51 | .app-main { | 52 | top: 0; |
52 | height: 100%; | 53 | height: 100%; |
53 | padding: 10px; | 54 | position: absolute; |
54 | box-sizing: border-box; | 55 | z-index: 999; |
55 | } | 56 | } |
57 | |||
58 | .fixed-header { | ||
59 | width: 100%; | ||
60 | transition: width 0.28s; | ||
61 | } | ||
62 | |||
63 | .el-dropdown-menu--small { | ||
64 | padding: 0; | ||
65 | width: 5px; | ||
56 | } | 66 | } |
57 | </style> | 67 | </style> | ... | ... |
... | @@ -22,6 +22,12 @@ import 'vue-awesome/icons/align-left.js'; | ... | @@ -22,6 +22,12 @@ import 'vue-awesome/icons/align-left.js'; |
22 | Vue.prototype.$startLoading = startLoadingAddCount | 22 | Vue.prototype.$startLoading = startLoadingAddCount |
23 | Vue.prototype.$endLoading = endLoadingSubCount | 23 | Vue.prototype.$endLoading = endLoadingSubCount |
24 | 24 | ||
25 | // 弹框 | ||
26 | import { popupDialog, popupCacel } from "@/utils/popup.js"; | ||
27 | // 全局加载 | ||
28 | Vue.prototype.$popupDialog = popupDialog | ||
29 | Vue.prototype.$popupCacel = popupCacel | ||
30 | |||
25 | import { theme } from "@/directive/theme.js" | 31 | import { theme } from "@/directive/theme.js" |
26 | Vue.directive("theme", theme) | 32 | Vue.directive("theme", theme) |
27 | Vue.directive('fo', { | 33 | Vue.directive('fo', { | ... | ... |
... | @@ -17,21 +17,19 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -17,21 +17,19 @@ router.beforeEach(async (to, from, next) => { |
17 | } | 17 | } |
18 | if (hasAddRoute) { | 18 | if (hasAddRoute) { |
19 | next() | 19 | next() |
20 | } else { | ||
21 | const { result: getMenuData } = await getMenuInfo() | ||
22 | const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData) | ||
23 | // 获取用户信息 | ||
24 | await store.dispatch('user/getUserInfo') | ||
25 | router.addRoutes([...accessRoutes, { path: '*', redirect: '/404', hidden: true }]) | ||
26 | const routeTo = Cookies.get('routerTo') | ||
27 | if (routeTo && routeTo !== '/') { | ||
28 | next({ ...to, replace: true }) | ||
29 | } else { | ||
30 | next('/jgHome') | ||
31 | } | ||
20 | } | 32 | } |
21 | // else { | ||
22 | // const { result: getMenuData } = await getMenuInfo() | ||
23 | // const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData) | ||
24 | // // 获取用户信息 | ||
25 | // await store.dispatch('user/getUserInfo') | ||
26 | // router.addRoutes([...accessRoutes, { path: '*', redirect: '/404', hidden: true }]) | ||
27 | // const routeTo = Cookies.get('routerTo') | ||
28 | // if (routeTo && routeTo !== '/') { | ||
29 | // next({ ...to, replace: true }) | ||
30 | // } else { | ||
31 | // next('/home') | ||
32 | // } | ||
33 | // } | ||
34 | next() | ||
35 | NProgress.done() | 33 | NProgress.done() |
36 | }) | 34 | }) |
37 | router.afterEach(to => { | 35 | router.afterEach(to => { | ... | ... |
... | @@ -3,8 +3,6 @@ import Router from 'vue-router' | ... | @@ -3,8 +3,6 @@ import Router from 'vue-router' |
3 | Vue.use(Router) | 3 | Vue.use(Router) |
4 | /* Layout */ | 4 | /* Layout */ |
5 | import Layout from '@/layout' | 5 | import Layout from '@/layout' |
6 | import Layout1 from '@/layout1' | ||
7 | |||
8 | /* Router Modules */ | 6 | /* Router Modules */ |
9 | // import componentsRouter from './modules/components' | 7 | // import componentsRouter from './modules/components' |
10 | export const constantRoutes = [ | 8 | export const constantRoutes = [ |
... | @@ -26,6 +24,21 @@ export const constantRoutes = [ | ... | @@ -26,6 +24,21 @@ export const constantRoutes = [ |
26 | path: '/dataView', | 24 | path: '/dataView', |
27 | name: 'dataView', | 25 | name: 'dataView', |
28 | component: () => import('@/views/dataView/index') | 26 | component: () => import('@/views/dataView/index') |
27 | }, | ||
28 | // 监管首页 | ||
29 | { | ||
30 | path: '/', | ||
31 | component: Layout, | ||
32 | redirect: '/jgHome', | ||
33 | meta: { title: '首页' }, | ||
34 | children: [ | ||
35 | { | ||
36 | path: 'jgHome', | ||
37 | component: () => import('@/views/home/index'), | ||
38 | name: 'jgHome', | ||
39 | meta: { title: '首页', icon: 'workbench', affix: true } | ||
40 | } | ||
41 | ] | ||
29 | } | 42 | } |
30 | ] | 43 | ] |
31 | /** | 44 | /** |
... | @@ -33,17 +46,18 @@ export const constantRoutes = [ | ... | @@ -33,17 +46,18 @@ export const constantRoutes = [ |
33 | * the routes that need to be dynamically loaded based on user roles | 46 | * the routes that need to be dynamically loaded based on user roles |
34 | */ | 47 | */ |
35 | export const asyncRoutes = [ | 48 | export const asyncRoutes = [ |
36 | // 系统首页 | 49 | // 监管首页 |
37 | { | 50 | { |
38 | path: '/', | 51 | path: '/', |
39 | component: Layout, | 52 | component: Layout, |
40 | redirect: '/home', | 53 | redirect: '/jgHome', |
54 | meta: { title: '首页' }, | ||
41 | children: [ | 55 | children: [ |
42 | { | 56 | { |
43 | path: 'home', | 57 | path: 'jgHome', |
44 | component: () => import('@/views/home/index'), | 58 | component: () => import('@/views/home/index'), |
45 | name: 'home', | 59 | name: 'jgHome', |
46 | meta: { title: '工作台', icon: 'workbench', affix: true } | 60 | meta: { title: '首页', icon: 'workbench', affix: true } |
47 | } | 61 | } |
48 | ] | 62 | ] |
49 | }, | 63 | }, |
... | @@ -54,7 +68,7 @@ export const asyncRoutes = [ | ... | @@ -54,7 +68,7 @@ export const asyncRoutes = [ |
54 | children: [ | 68 | children: [ |
55 | { | 69 | { |
56 | path: 'index', | 70 | path: 'index', |
57 | component: () => import('@/views/jsbwcx/index'), | 71 | component: () => import('@/views/jsbwcx/index.vue'), |
58 | name: 'jsbwcx', | 72 | name: 'jsbwcx', |
59 | meta: { title: '接收报文查询', icon: 'zsgl' } | 73 | meta: { title: '接收报文查询', icon: 'zsgl' } |
60 | } | 74 | } |
... | @@ -296,110 +310,10 @@ export const asyncRoutes = [ | ... | @@ -296,110 +310,10 @@ export const asyncRoutes = [ |
296 | } | 310 | } |
297 | ] | 311 | ] |
298 | 312 | ||
299 | export const asyncRoutes1 = [ | ||
300 | // 监管首页 | ||
301 | // { | ||
302 | // path: '/', | ||
303 | // component: Layout1, | ||
304 | // redirect: '/jgHome', | ||
305 | // meta: { title: '首页' }, | ||
306 | // children: [ | ||
307 | // { | ||
308 | // path: 'jgHome', | ||
309 | // component: () => import('@/views/jgHome/index'), | ||
310 | // name: 'jgHome', | ||
311 | // meta: { title: '首页', icon: 'workbench', affix: true } | ||
312 | // } | ||
313 | // ] | ||
314 | // }, | ||
315 | { | ||
316 | path: '/', | ||
317 | component: Layout1, | ||
318 | redirect: '/jgHome', | ||
319 | meta: { title: '首页' }, | ||
320 | children: [ | ||
321 | { | ||
322 | path: 'jgHome', | ||
323 | component: () => import('@/views/home/index'), | ||
324 | name: 'jgHome', | ||
325 | meta: { title: '首页', icon: 'workbench', affix: true } | ||
326 | } | ||
327 | ] | ||
328 | }, | ||
329 | // 接收报文查询 | ||
330 | { | ||
331 | path: '/jsbwcx1', | ||
332 | component: Layout1, | ||
333 | children: [ | ||
334 | { | ||
335 | path: 'index', | ||
336 | component: () => import('@/views/jsbwcx/index'), | ||
337 | name: 'jsbwcx', | ||
338 | meta: { title: '接收报文查询1', icon: 'zsgl' } | ||
339 | } | ||
340 | ] | ||
341 | }, | ||
342 | // 上报报文查询 | ||
343 | { | ||
344 | path: '/sbbwcx1', | ||
345 | component: Layout1, | ||
346 | children: [ | ||
347 | { | ||
348 | path: 'index', | ||
349 | component: () => import('@/views/sbbwcx/index'), | ||
350 | name: 'sbbwcx', | ||
351 | meta: { title: '上报报文查询', icon: 'zsgl' } | ||
352 | } | ||
353 | ] | ||
354 | }, | ||
355 | // 登簿日志 | ||
356 | { | ||
357 | path: '/dbrzcx1', | ||
358 | component: Layout1, | ||
359 | children: [ | ||
360 | { | ||
361 | path: 'index', | ||
362 | component: () => import('@/views/dbrzcx/index'), | ||
363 | name: 'dbrzcx', | ||
364 | meta: { title: '登簿日志查询', icon: 'zhcx' } | ||
365 | } | ||
366 | ] | ||
367 | }, | ||
368 | // 系统管理 | ||
369 | { | ||
370 | path: '/system1', | ||
371 | component: Layout1, | ||
372 | meta: { title: '系统管理', icon: 'sqcx', breadcrumb: false }, | ||
373 | redirect: '/system/dictionaries', | ||
374 | alwaysShow: true, | ||
375 | name: 'system', | ||
376 | children: [ | ||
377 | { | ||
378 | path: 'dictionaries', | ||
379 | component: () => import('@/views/system/dictionaries/dictionaries.vue'), | ||
380 | name: 'dictionaries', | ||
381 | meta: { title: '字典管理' } | ||
382 | }, | ||
383 | { | ||
384 | path: 'validationRule', | ||
385 | component: () => import('@/views/system/validationRule'), | ||
386 | name: 'validationRule', | ||
387 | meta: { title: '上报效验规则配置' } | ||
388 | }, | ||
389 | { | ||
390 | path: 'timedTask', | ||
391 | component: () => import('@/views/system/timedTask'), | ||
392 | name: 'timedTask', | ||
393 | meta: { title: '定时任务' } | ||
394 | } | ||
395 | ] | ||
396 | } | ||
397 | ] | ||
398 | |||
399 | const createRouter = () => | 313 | const createRouter = () => |
400 | new Router({ | 314 | new Router({ |
401 | scrollBehavior: () => ({ y: 0 }), | 315 | scrollBehavior: () => ({ y: 0 }), |
402 | routes: [...constantRoutes, ...asyncRoutes, ...asyncRoutes1] | 316 | routes: [...constantRoutes, ...asyncRoutes] |
403 | }) | 317 | }) |
404 | 318 | ||
405 | const router = createRouter() | 319 | const router = createRouter() | ... | ... |
... | @@ -106,14 +106,14 @@ | ... | @@ -106,14 +106,14 @@ |
106 | 106 | ||
107 | ::-webkit-scrollbar-track { | 107 | ::-webkit-scrollbar-track { |
108 | width: 7px; | 108 | width: 7px; |
109 | background-color: rgba(255, 255, 255, 0); | 109 | background-color: #29409D; |
110 | -webkit-border-radius: 6px; | 110 | -webkit-border-radius: 6px; |
111 | -moz-border-radius: 6px; | 111 | -moz-border-radius: 6px; |
112 | border-radius: 6px; | 112 | border-radius: 6px; |
113 | } | 113 | } |
114 | 114 | ||
115 | ::-webkit-scrollbar-thumb { | 115 | ::-webkit-scrollbar-thumb { |
116 | background-color: rgb(207, 208, 209); | 116 | background-color: #355194; |
117 | background-clip: padding-box; | 117 | background-clip: padding-box; |
118 | min-height: 28px; | 118 | min-height: 28px; |
119 | -webkit-border-radius: 6px; | 119 | -webkit-border-radius: 6px; | ... | ... |
1 | .tableClass { | 1 | .tableClass { |
2 | /deep/.el-table { | 2 | /deep/.el-table { |
3 | border: none !important; | 3 | border: none !important; |
4 | border-radius: 0 !important; | ||
5 | |||
6 | .el-table__header-wrapper { | ||
7 | border-right: 1px solid #103E99; | ||
8 | } | ||
4 | 9 | ||
5 | .cell { | 10 | .cell { |
6 | color: #FFFFFF !important; | 11 | color: #FFFFFF !important; |
... | @@ -108,6 +113,11 @@ | ... | @@ -108,6 +113,11 @@ |
108 | color: #FFFFFF; | 113 | color: #FFFFFF; |
109 | border: none; | 114 | border: none; |
110 | } | 115 | } |
116 | |||
117 | .el-pager li { | ||
118 | background: #1F357A; | ||
119 | color: #FFFFFF; | ||
120 | } | ||
111 | } | 121 | } |
112 | 122 | ||
113 | /deep/.btn-next, | 123 | /deep/.btn-next, | ... | ... |
1 | import Popup from '@/components/Popup/index' | 1 | import Popup from '@/components/Popup/index' |
2 | export function popupDialog (title, url, params, width = '75%', height, btnShow = false, callback) { | 2 | export function popupDialog (title, url, params, width = '75%', height, btnShow = false, callback) { |
3 | Popup.install(title, url, { | 3 | // Popup.install |
4 | Popup(title, url, { | ||
4 | height: height, | 5 | height: height, |
5 | width: width, | 6 | width: width, |
6 | formData: params, | 7 | formData: params, |
... | @@ -13,3 +14,7 @@ export function popupDialog (title, url, params, width = '75%', height, btnShow | ... | @@ -13,3 +14,7 @@ export function popupDialog (title, url, params, width = '75%', height, btnShow |
13 | } | 14 | } |
14 | }) | 15 | }) |
15 | } | 16 | } |
17 | |||
18 | export function popupCacel () { | ||
19 | Popup1().close() | ||
20 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -36,7 +36,6 @@ | ... | @@ -36,7 +36,6 @@ |
36 | </div> | 36 | </div> |
37 | </div> | 37 | </div> |
38 | </template> | 38 | </template> |
39 | |||
40 | <script> | 39 | <script> |
41 | import drawMixin from "../../utils/drawMixin"; | 40 | import drawMixin from "../../utils/drawMixin"; |
42 | import leftcard from './leftcard' | 41 | import leftcard from './leftcard' | ... | ... |
... | @@ -35,7 +35,7 @@ | ... | @@ -35,7 +35,7 @@ |
35 | </div> | 35 | </div> |
36 | <!-- 列表区域 --> | 36 | <!-- 列表区域 --> |
37 | <div class="from-clues-content"> | 37 | <div class="from-clues-content"> |
38 | <lb-table :page-size="pageData.size" :heightNum="200" :current-page.sync="pageData.current" | 38 | <lb-table :page-size="pageData.size" :heightNum="210" :current-page.sync="pageData.current" |
39 | :total="tableData.total" @size-change="handleSizeChange" @p-current-change="handleCurrentChange" | 39 | :total="tableData.total" @size-change="handleSizeChange" @p-current-change="handleCurrentChange" |
40 | :column="tableData.columns" :data="tableData.data"> | 40 | :column="tableData.columns" :data="tableData.data"> |
41 | </lb-table> | 41 | </lb-table> | ... | ... |
... | @@ -241,10 +241,9 @@ | ... | @@ -241,10 +241,9 @@ |
241 | 241 | ||
242 | .jrxxlb { | 242 | .jrxxlb { |
243 | margin-top: 5px; | 243 | margin-top: 5px; |
244 | background-color: #000637; | ||
245 | 244 | ||
246 | /deep/tbody tr:nth-child(odd) { | 245 | /deep/tbody tr:nth-child(odd) { |
247 | background: #000637 !important; | 246 | background: #132E82 !important; |
248 | } | 247 | } |
249 | 248 | ||
250 | .title { | 249 | .title { | ... | ... |
1 | <template> | ||
2 | <!-- 编辑 --> | ||
3 | <dialogBox title="详情" @closeDialog="closeDialog" @submitForm="handleSubmit" v-model="myValue"> | ||
4 | <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px"> | ||
5 | <el-row> | ||
6 | <el-col :span="6"> | ||
7 | <el-form-item label="行政区代码" prop="xzqdm"> | ||
8 | <el-input v-model="ruleForm.xzqdm" placeholder="行政区代码"></el-input> | ||
9 | </el-form-item> | ||
10 | </el-col> | ||
11 | <el-col :span="6"> | ||
12 | <el-form-item label="行政区名称" prop="xzqmc"> | ||
13 | <el-input v-model="ruleForm.xzqmc" placeholder="行政区名称"></el-input> | ||
14 | </el-form-item> | ||
15 | </el-col> | ||
16 | <el-col :span="6"> | ||
17 | <el-form-item label="不动产单元号" prop="bdcdyh"> | ||
18 | <el-input v-model="ruleForm.bdcdyh" placeholder="不动产单元号"></el-input> | ||
19 | </el-form-item> | ||
20 | </el-col> | ||
21 | <el-col :span="6"> | ||
22 | <el-form-item label="业务名称" prop="ywmc"> | ||
23 | <el-input v-model="ruleForm.ywmc" placeholder="业务名称"></el-input> | ||
24 | </el-form-item> | ||
25 | </el-col> | ||
26 | </el-row> | ||
27 | <el-row> | ||
28 | <el-col :span="6"> | ||
29 | <el-form-item label="操作时间" prop="czsj"> | ||
30 | <el-date-picker v-model="ruleForm.czsj" class="width100" type="datetime" placeholder="操作时间"> | ||
31 | </el-date-picker> | ||
32 | </el-form-item> | ||
33 | </el-col> | ||
34 | </el-row> | ||
35 | </el-form> | ||
36 | </dialogBox> | ||
37 | </template> | ||
38 | |||
39 | <script> | ||
40 | export default { | ||
41 | props: { | ||
42 | value: { type: Boolean, default: false }, | ||
43 | }, | ||
44 | data () { | ||
45 | return { | ||
46 | myValue: this.value, | ||
47 | ruleForm: { | ||
48 | xzqdm: '', | ||
49 | xzqmc: '', | ||
50 | bdcdyh: '', | ||
51 | ywmc: '', | ||
52 | czsj: '' | ||
53 | }, | ||
54 | rules: { | ||
55 | xzqdm: [ | ||
56 | { required: true, message: '行政区代码', trigger: 'blur' } | ||
57 | ], | ||
58 | xzqmc: [ | ||
59 | { required: true, message: '行政区名称', trigger: 'blur' } | ||
60 | ], | ||
61 | bdcdyh: [ | ||
62 | { required: true, message: '不动产单元号', trigger: 'blur' } | ||
63 | ], | ||
64 | ywmc: [ | ||
65 | { required: true, message: '业务名称', trigger: 'blur' } | ||
66 | ], | ||
67 | czsj: [ | ||
68 | { required: true, message: '操作时间', trigger: 'blur' } | ||
69 | ] | ||
70 | } | ||
71 | } | ||
72 | }, | ||
73 | watch: { | ||
74 | value (val) { | ||
75 | this.myValue = val | ||
76 | } | ||
77 | }, | ||
78 | methods: { | ||
79 | closeDialog () { | ||
80 | this.$emit('input', false) | ||
81 | }, | ||
82 | handleSubmit () { | ||
83 | this.$emit('input', false) | ||
84 | } | ||
85 | } | ||
86 | } | ||
87 | </script> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -74,8 +74,6 @@ | ... | @@ -74,8 +74,6 @@ |
74 | :data="tableData.data"> | 74 | :data="tableData.data"> |
75 | </lb-table> | 75 | </lb-table> |
76 | </div> | 76 | </div> |
77 | <!-- 编辑 --> | ||
78 | <dataDetails ref="editLog" :bsmSjsb="bsmSjsb" :diaData="diaData" /> | ||
79 | </div> | 77 | </div> |
80 | </template> | 78 | </template> |
81 | 79 | ||
... | @@ -85,18 +83,11 @@ | ... | @@ -85,18 +83,11 @@ |
85 | import data from "./data" | 83 | import data from "./data" |
86 | // 引入table混入方法 | 84 | // 引入table混入方法 |
87 | import tableMixin from '@/mixins/tableMixin.js' | 85 | import tableMixin from '@/mixins/tableMixin.js' |
88 | // 引入详情组件 | ||
89 | import dataDetails from '@/components/dataDetails/edit-dialog' | ||
90 | export default { | 86 | export default { |
91 | name: "jsbwcx", | 87 | name: "jsbwcx", |
92 | mixins: [tableMixin], | 88 | mixins: [tableMixin], |
93 | components: { | ||
94 | dataDetails | ||
95 | }, | ||
96 | data () { | 89 | data () { |
97 | return { | 90 | return { |
98 | diaData: {}, | ||
99 | bsmSjsb: '', | ||
100 | // 开始结束日期限制 | 91 | // 开始结束日期限制 |
101 | pickerOptionsStart: { | 92 | pickerOptionsStart: { |
102 | disabledDate: (time) => { | 93 | disabledDate: (time) => { |
... | @@ -220,16 +211,11 @@ export default { | ... | @@ -220,16 +211,11 @@ export default { |
220 | resetForm () { | 211 | resetForm () { |
221 | this.$refs.ruleForm.resetFields(); | 212 | this.$refs.ruleForm.resetFields(); |
222 | }, | 213 | }, |
223 | async featchData () { | 214 | featchData () { |
224 | }, | 215 | }, |
225 | // 详情 | 216 | // 详情 |
226 | handleEdit (row) { | 217 | handleEdit () { |
227 | this.diaData.list = [{ | 218 | this.$popupDialog('业务报文', 'components/JsonEditor/index', {}, '50%', '320px') |
228 | chineseTable: '测试', | ||
229 | dataTable: '222', | ||
230 | soleUrl: 'acceptanceInfo' | ||
231 | }] | ||
232 | this.$refs.editLog.isShow() | ||
233 | } | 219 | } |
234 | } | 220 | } |
235 | } | 221 | } | ... | ... |
... | @@ -51,7 +51,7 @@ | ... | @@ -51,7 +51,7 @@ |
51 | <!-- 操作按钮 --> | 51 | <!-- 操作按钮 --> |
52 | <el-col :span="12" class="btnColRight"> | 52 | <el-col :span="12" class="btnColRight"> |
53 | <btn nativeType="cz" @click="resetForm('ruleForm')">重置</btn> | 53 | <btn nativeType="cz" @click="resetForm('ruleForm')">重置</btn> |
54 | <btn nativeType="cx" @click="featchData">查询</btn> | 54 | <btn nativeType="cx" @click="queryClick">查询</btn> |
55 | <btn nativeType="sb" @click="handleEscalation">上报</btn> | 55 | <btn nativeType="sb" @click="handleEscalation">上报</btn> |
56 | </el-col> | 56 | </el-col> |
57 | </el-row> | 57 | </el-row> |
... | @@ -59,13 +59,12 @@ | ... | @@ -59,13 +59,12 @@ |
59 | </div> | 59 | </div> |
60 | <!-- 列表 --> | 60 | <!-- 列表 --> |
61 | <div class="from-clues-content"> | 61 | <div class="from-clues-content"> |
62 | <lb-table ref="table" @selection-change="handleSelectionChange" :page-size="pageData.size" | 62 | <lb-table :page-size="pageData.pageSize" :current-page.sync="pageData.currentPage" :total="tableData.total" |
63 | :current-page.sync="pageData.current" :total="tableData.total" @size-change="handleSizeChange" | 63 | @size-change="handleSizeChange" @p-current-change="handleCurrentChange" :column="tableData.columns" |
64 | @p-current-change="handleCurrentChange" :column="tableData.columns" :data="tableData.data"> | 64 | :data="tableData.data"> |
65 | </lb-table> | 65 | </lb-table> |
66 | </div> | 66 | </div> |
67 | <!-- 引入详情组件 --> | 67 | <!-- 引入详情组件 --> |
68 | <!-- <detailDialog v-model="isShow" /> --> | ||
69 | <!-- 编辑 --> | 68 | <!-- 编辑 --> |
70 | <dataDetails ref="editLog" /> | 69 | <dataDetails ref="editLog" /> |
71 | </div> | 70 | </div> |
... | @@ -75,14 +74,14 @@ | ... | @@ -75,14 +74,14 @@ |
75 | // 引入表头数据 | 74 | // 引入表头数据 |
76 | import data from "./data" | 75 | import data from "./data" |
77 | // 引入表格混入方法 | 76 | // 引入表格混入方法 |
78 | import tableMixin from '@/mixins/tableMixin.js' | 77 | import table from "@/utils/mixin/table" |
79 | // 引入详情弹框 | 78 | // 引入详情弹框 |
80 | import dataDetails from '@/components/dataDetails/edit-dialog' | 79 | import dataDetails from '@/components/dataDetails/edit-dialog' |
81 | import { getDataReportPage } from "@/api/sbbwcx.js"; | 80 | import { getDataReportPage } from "@/api/sbbwcx.js"; |
82 | 81 | ||
83 | export default { | 82 | export default { |
84 | name: "sbbwcx", | 83 | name: "sbbwcx", |
85 | mixins: [tableMixin], | 84 | mixins: [table], |
86 | // 注册组件 | 85 | // 注册组件 |
87 | components: { | 86 | components: { |
88 | dataDetails | 87 | dataDetails |
... | @@ -130,8 +129,8 @@ export default { | ... | @@ -130,8 +129,8 @@ export default { |
130 | return ( | 129 | return ( |
131 | <div> | 130 | <div> |
132 | <el-button | 131 | <el-button |
133 | type="text" | ||
134 | size="mini" | 132 | size="mini" |
133 | type="primary" | ||
135 | onClick={() => { this.handleDetail(scope.row) }} | 134 | onClick={() => { this.handleDetail(scope.row) }} |
136 | > | 135 | > |
137 | 详情 | 136 | 详情 |
... | @@ -142,13 +141,7 @@ export default { | ... | @@ -142,13 +141,7 @@ export default { |
142 | } | 141 | } |
143 | ]), | 142 | ]), |
144 | total: 0, | 143 | total: 0, |
145 | data: [], | 144 | data: [{}], |
146 | }, | ||
147 | // 分页 | ||
148 | pageData: { | ||
149 | total: 0, | ||
150 | pageSize: 15, | ||
151 | current: 1, | ||
152 | }, | 145 | }, |
153 | // 行政区 | 146 | // 行政区 |
154 | xzqOptions: [ | 147 | xzqOptions: [ |
... | @@ -177,7 +170,7 @@ export default { | ... | @@ -177,7 +170,7 @@ export default { |
177 | this.$refs.ruleForm.resetFields(); | 170 | this.$refs.ruleForm.resetFields(); |
178 | }, | 171 | }, |
179 | // 初始化数据 | 172 | // 初始化数据 |
180 | featchData () { | 173 | queryClick () { |
181 | getDataReportPage({ ...this.form, ...this.pageData }).then(res => { | 174 | getDataReportPage({ ...this.form, ...this.pageData }).then(res => { |
182 | if (res.code === 200) { | 175 | if (res.code === 200) { |
183 | let { total, records } = res.result | 176 | let { total, records } = res.result |
... | @@ -188,7 +181,6 @@ export default { | ... | @@ -188,7 +181,6 @@ export default { |
188 | }, | 181 | }, |
189 | // 多选 | 182 | // 多选 |
190 | handleSelectionChange (val) { | 183 | handleSelectionChange (val) { |
191 | |||
192 | }, | 184 | }, |
193 | // 上报 | 185 | // 上报 |
194 | handleEscalation () { }, | 186 | handleEscalation () { }, | ... | ... |
-
Please register or sign in to post a comment