5330d832 by xiaomiao
2 parents a45161ca 365018b6
......@@ -5,4 +5,4 @@ NODE_ENV=development
VUE_APP_BASE_API = '/api'
# 开发环境
VUE_APP_API_BASE_URL = 'http://192.168.2.38:8027'
VUE_APP_API_BASE_URL = 'http://192.168.2.38:8008'
......
......@@ -20,6 +20,7 @@
"nprogress": "0.2.0",
"vue": "2.6.10",
"vue-awesome": "^4.5.0",
"vue-json-editor": "^1.4.3",
"vue-router": "3.0.2",
"vuex": "3.1.0"
},
......
......@@ -4,7 +4,7 @@ import SERVER from './config'
// 数据上报分页
export function getDataReportPage (data) {
return request({
url: SERVER.SERVERAPI + '/sjsb/DataReport/getDataReportPage',
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getDataReportPage',
method: 'post',
data
})
......
<template>
<vue-json-editor v-model="resultInfo" :showBtns="false" :mode="'code'" lang="zh" @json-change="onJsonChange"
@json-save="onJsonSave" />
</template>
<script>
// 引入json编译器
import vueJsonEditor from 'vue-json-editor'
export default {
components: {
vueJsonEditor
},
data () {
return {
myValue: this.value,
resultInfo: {
"userId": "1111111129ac7325-30da-4e6a-8a00-9699820fc04a",
"realName": "小雪18",
"gradeCode": "166",
"provinceCode": "110000",
"cityCode": {
"test1": "test1",
"test2": "test2"
},
"schoolId": 21,
"schoolLevel": 1,
"schoolName": "北京第二实验小学朝阳学校"
},
}
},
methods: {
onJsonChange (value) {
console.log('value:', value);
},
onJsonSave (value) {
console.log('value:', value);
}
}
}
</script>
<style>
/* jsoneditor右上角默认有一个链接,加css去掉了 */
.jsoneditor-poweredBy {
display: none;
}
.jsoneditor-vue {
height: 300px;
}
</style>
\ No newline at end of file
......@@ -119,7 +119,6 @@ export default {
// 单选
singleElection (row) {
this.selected = this.data.indexOf(row);
console.log(this.selected);
},
tableRowClassName ({ row, rowIndex }) {
......
import Vue from 'vue'
import Popup from './index.vue'
const PopupBox = Vue.extend(Popup)
Popup.install = function (title, editItem, data, formData) {
let popuping = undefined
PopupBox.prototype.close = function () {
// 如果Popup 有引用,则去掉引用
if (popuping) {
popuping = undefined
}
// 先将组件隐藏
this.isShow = false
// 延迟300毫秒,等待Popup关闭动画执行完之后销毁组件
setTimeout(() => {
// 移除挂载的dom元素
if (this.$el && this.$el.parentNode) {
this.$el.parentNode.removeChild(this.$el)
}
}, 300)
}
const Popup1 = (title, editItem, data, formData) => {
// 如果组件已渲染,则返回即可
if (popuping) {
return popuping
}
data.title = title
data.editItem = editItem
if (formData) {
data.formData = formData
}
// 通过构造函数初始化组件 相当于 new Vue()
let instance = new PopupBox({
data
}).$mount()
......@@ -15,6 +37,8 @@ Popup.install = function (title, editItem, data, formData) {
Vue.nextTick(() => {
instance.isShow = true
})
// 将组件实例赋值给loading
popuping = instance
return instance
}
export default Popup
export default Popup1
......
......@@ -21,6 +21,7 @@
</transition>
</template>
<script>
import Popup1 from './index'
export default {
name: 'index',
data () {
......@@ -74,8 +75,7 @@ export default {
},
methods: {
onCancel () {
this.isShow = false
this.cancel()
Popup1().close()
},
onConfirm () {
this.loading = true
......@@ -93,7 +93,7 @@ export default {
loadViewFn (view) {
return (r) =>
require.ensure([], () =>
r(require(`@/views/${view}.vue`))
r(require(`@/${view}.vue`))
)
}
},
......@@ -108,7 +108,7 @@ export default {
.ls-mask {
width: 100%;
height: 100%;
z-index: 100;
z-index: 2000;
position: fixed;
left: 0;
top: 0;
......@@ -131,10 +131,15 @@ export default {
padding-left: 5px;
}
/deep/.closeStyle {
top: 7px !important;
}
.ls-title {
padding: 16px;
padding: 10px;
color: #ffffff;
background: linear-gradient(3deg, #409EFF, #a7cbee);
background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%);
font-size: 16px;
}
.ls-title .svg-icon {
......@@ -142,11 +147,11 @@ export default {
}
.mask-content {
padding: 20px;
padding: 15px;
width: 100%;
min-height: 30%;
min-height: 20%;
max-height: 95%;
overflow-y: scroll;
// overflow-y: scroll;
}
.ls-mask-footer {
......@@ -182,4 +187,3 @@ export default {
width: 75px;
}
</style>
\ No newline at end of file
......
......@@ -16,12 +16,14 @@ export default {
}
</script>
<style lang="scss" scoped>
.app-main {
height: calc(100vh - 84px);
overflow-x: hidden;
.hasTagsView {
.app-main {
overflow-x: auto;
padding: 5px;
box-sizing: border-box;
flex: 1;
width: 100%;
margin-right: 15px;
background-color: #EDF1F7;
box-sizing: border-box;
}
}
</style>
\ No newline at end of file
......
<template>
<div class="navbar-con">
<div class="navbar">
<div class="logo">
<img :src="require('@/image/logo.png')" alt="" />
</div>
<div class="backdrop">
<Breadcrumb />
<div class="sidebarLeft">
<sidebarLeft />
</div>
<div class="sidebarRight d-center">
<sidebarRight />
<div class="right-menu">
<div class="dataView d-center pointer" @click="handleDataView">大屏展示</div>
<div class="dataView pointer" @click="handleDataView">大屏展示</div>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand">
<div class="avatar-wrapper">
<span style="padding-right:10px">{{ name }}</span>
......@@ -22,14 +21,17 @@
</div>
</div>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import Breadcrumb from './Breadcrumb'
import defaultSettings from '@/settings'
import sidebarLeft from './Sidebar/sidebarLeft'
import sidebarRight from './Sidebar/sidebarRight'
import { mapGetters } from 'vuex'
export default {
components: {
Breadcrumb
sidebarLeft,
sidebarRight
},
computed: {
...mapGetters(['sidebar', 'avatar', 'name'])
......@@ -49,115 +51,74 @@ export default {
},
handleCommand (command) {
if (command == 'a') {
} else {
}
}
}
}
</script>
<style lang="scss" scoped>
.navbar-con {
position: relative;
/deep/.el-menu--horizontal {
display: flex;
align-items: center;
}
.logo {
color: #fff;
font-size: 26px;
font-weight: 700;
}
.menubg {
line-height: 30px;
color: #FFFFFF;
margin-right: 5px;
background: linear-gradient(180deg, #0A2580 0%, #2542C9 100%);
}
.dataView {
color: #fff;
width: 120px;
height: 32px;
background: url('../../image/dp.png');
background-size: cover;
margin-right: 20px;
/deep/.el-menu-item {
@extend .menubg;
}
.NoticeBar {
position: absolute;
bottom: 0;
/deep/.el-submenu {
@extend .menubg;
}
.el-dropdown-menu {
padding: 0 !important;
border: 1px solid #EBEEF5;
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.12);
border-radius: 4px 0 0 4px 4px;
/deep/.el-submenu__title {
line-height: 30px !important;
height: 42px !important;
}
.el-dropdown-menu__item {
text-align: center;
margin-top: 0 !important;
/deep/.el-submenu__title span {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #4A4A4A;
width: 140px;
height: 36px;
line-height: 36px;
}
}
.el-dropdown-menu__item:nth-child(6) {
border-top: 1px solid #EBEEF5;
}
// 导航选中背景色
.xuanzhong {
background: linear-gradient(180deg, #73551D 0%, #C09C43 100%);
font-weight: 700;
color: #FFFFFF !important;
}
.popper__arrow {
top: -11px !important;
left: 110px !important;
transform: rotate(0deg) scale(2);
}
/deep/.el-menu-item:hover {
@extend .xuanzhong;
}
.el-dropdown-menu__item:not(.is-disabled):hover,
.el-dropdown-menu__item:focus {
background: #F6F7F9;
color: #4A4A4A;
}
/deep/.el-submenu__title:hover {
@extend .xuanzhong;
}
/deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
@extend .xuanzhong;
}
/deep/.el-menu-item.is-active {
@extend .xuanzhong;
}
.navbar {
height: $headerHeight;
overflow: hidden;
position: relative;
// background: linear-gradient(270deg, #148CEE 0%, #1870E3 100%); //默认颜色
// box-shadow: 0 1px 0px rgba(0, 21, 41, 0.08);
background: #0D1230;
background: linear-gradient(180deg, #0D3DC9 0%, #3476E1 100%);
display: flex;
align-items: center;
padding-right: 20px;
padding: 0 20px;
justify-content: space-between;
margin-bottom: 10px;
.header-logo {
width: 300px;
}
.backdrop {
flex: 1;
width: 60%;
background-size: 100% 100%;
height: $headerHeight;
display: flex;
align-items: center;
}
.hamburger-container {
line-height: 43px;
height: 100%;
float: left;
cursor: pointer;
transition: background 0.3s;
-webkit-tap-highlight-color: transparent;
&:hover {
background: rgba(0, 0, 0, 0.025);
}
}
.breadcrumb-container {
float: left;
}
.right-menu {
float: right;
......@@ -166,11 +127,6 @@ export default {
display: flex;
align-items: center;
.function {
margin: 0 15px;
cursor: pointer;
}
.shutdown {
font-size: 20px;
margin-left: 15px;
......
......@@ -13,17 +13,8 @@ export default {
}
},
render (h, context) {
const { icon, title } = context.props
const { title } = context.props
const vnodes = []
if (icon) {
if (icon.includes('el-icon')) {
vnodes.push(<i class={[icon, 'sub-el-icon']} />)
} else {
vnodes.push(<svg-icon icon-class={icon} />)
}
}
if (title) {
vnodes.push(<span slot='title'>{(title)}</span>)
}
......@@ -31,11 +22,3 @@ export default {
}
}
</script>
<style scoped>
.sub-el-icon {
color: currentColor;
width: 1em;
height: 1em;
}
</style>
......
<template>
<div>
<el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu router :default-active="activeMenu" :background-color="variables.menuBg" :text-color="variables.menuText"
:unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false"
mode="vertical">
<el-menu router :default-active="activeMenu" mode="horizontal">
<!-- 权限菜单 -->
<!-- <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> -->
<sidebar-item v-for="route in permission_routes.slice(2, 5)" :key="route.path" :item="route"
:base-path="route.path" />
<!-- 菜单全部展示 -->
<sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" />
<!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> -->
</el-menu>
</el-scrollbar>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import Logo from './Logo'
import defaultSettings from '@/settings'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { asyncRoutes } from '@/router'
export default {
components: { SidebarItem, Logo },
data () {
return {
title: defaultSettings.title
}
},
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
......@@ -41,8 +30,14 @@ export default {
return variables
},
asyncRoutes () {
return asyncRoutes
return asyncRoutes.slice(0, 3)
}
}
}
</script>
<style scoped lang="scss">
.el-menu--horizontal {
display: flex;
background: none !important;
}
</style>
\ No newline at end of file
......
<template>
<el-menu router :default-active="activeMenu" mode="horizontal">
<!-- 权限菜单 -->
<sidebar-item v-for="route in permission_routes.slice(5, 7)" :key="route.path" :item="route"
:base-path="route.path" />
<!-- 菜单全部展示 -->
<!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> -->
</el-menu>
</template>
<script>
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { asyncRoutes } from '@/router'
export default {
components: { SidebarItem, Logo },
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
const route = this.$route
const { meta, path } = route
if (meta.activeMenu) {
return meta.activeMenu
}
return path
},
variables () {
return variables
},
asyncRoutes () {
return asyncRoutes.slice(3, 6)
}
}
}
</script>
<style scoped lang="scss">
.el-menu--horizontal {
display: flex;
background: none !important;
}
/deep/.el-menu-item:hover {
background: none;
font-weight: 700;
color: #fff !important;
}
/deep/.el-submenu__title {
color: #fff;
font-size: 18px;
}
/deep/.el-submenu__title:hover {
background: none;
font-weight: 700;
font-size: 20px;
}
/deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
background: none;
color: #fff;
font-size: 20px;
font-weight: 700 !important;
}
</style>
\ No newline at end of file
export { default as AppMain } from './AppMain'
export { default as Navbar } from './Navbar'
export { default as Sidebar } from './Sidebar/index.vue'
export { default as Sidebar } from './Sidebar/sidebarRight.vue'
export { default as TagsView } from './TagsView/index.vue'
......
<template>
<div class="app-wrapper">
<!-- <sidebar class="sidebar-container" />
<div class="main-container">
<navbar />
<app-main />
</div> -->
<navbar />
<div class="main-container">
<sidebar class="sidebar-container" />
<div class="appMain">
<app-main />
</div>
</div>
......@@ -42,7 +36,7 @@ export default {
position: relative;
height: 100%;
width: 100%;
background-color: $containerbg;
&.mobile.openSidebar {
position: fixed;
......@@ -50,23 +44,14 @@ export default {
}
}
.drawer-bg {
background: #000;
opacity: 0.3;
width: 100%;
top: 0;
height: 100%;
position: absolute;
z-index: 999;
}
.fixed-header {
width: 100%;
transition: width 0.28s;
}
.appMain {
height: calc(100vh - 65px);
background-color: $containerbg;
.el-dropdown-menu--small {
padding: 0;
width: 5px;
.app-main {
height: 100%;
padding: 10px;
box-sizing: border-box;
}
}
</style>
......
......@@ -16,14 +16,12 @@ export default {
}
</script>
<style lang="scss" scoped>
.hasTagsView {
.app-main {
overflow-x: auto;
padding: 5px;
.app-main {
height: calc(100vh - 84px);
overflow-x: hidden;
box-sizing: border-box;
background-color: #EDF1F7;
box-sizing: border-box;
}
flex: 1;
width: 100%;
margin-right: 15px;
}
</style>
\ No newline at end of file
......
<template>
<div class="navbar-con">
<div class="navbar">
<!-- <div class="backdrop">
<sidebar />
</div> -->
<div class="logo">
<img :src="require('@/image/logo.png')" alt="" />
</div>
<div class="backdrop">
<Breadcrumb />
</div>
<div class="right-menu">
<div class="dataView pointer" @click="handleDataView">大屏展示</div>
<div class="dataView d-center pointer" @click="handleDataView">大屏展示</div>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand">
<div class="avatar-wrapper">
<span style="padding-right:10px">{{ name }}</span>
......@@ -21,12 +24,12 @@
</div>
</template>
<script>
import defaultSettings from '@/settings'
import Sidebar from './Sidebar'
import { mapGetters } from 'vuex'
import Breadcrumb from './Breadcrumb'
import defaultSettings from '@/settings'
export default {
components: {
Sidebar,
Breadcrumb
},
computed: {
...mapGetters(['sidebar', 'avatar', 'name'])
......@@ -54,8 +57,23 @@ export default {
}
</script>
<style lang="scss" scoped>
.navbar-con {
position: relative;
.logo {
color: #fff;
font-size: 26px;
font-weight: 700;
}
}
.dataView {
color: #fff;
width: 120px;
height: 32px;
background: url('../../image/dp.png');
background-size: cover;
margin-right: 20px;
}
.NoticeBar {
......@@ -102,16 +120,28 @@ export default {
height: $headerHeight;
overflow: hidden;
position: relative;
background: linear-gradient(180deg, #0D3DC9 0%, #3476E1 100%);
// background: linear-gradient(270deg, #148CEE 0%, #1870E3 100%); //默认颜色
// box-shadow: 0 1px 0px rgba(0, 21, 41, 0.08);
background: #0D1230;
display: flex;
align-items: center;
padding: 0 20px;
padding-right: 20px;
justify-content: space-between;
margin-bottom: 10px;
.header-logo {
width: 300px;
}
.backdrop {
flex: 1;
width: 60%;
background-size: 100% 100%;
height: $headerHeight;
display: flex;
align-items: center;
}
.hamburger-container {
line-height: 43px;
height: 100%;
......
<template>
<div>
<el-menu router :default-active="activeMenu" mode="horizontal">
<el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu router :default-active="activeMenu" :background-color="variables.menuBg" :text-color="variables.menuText"
:unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false"
mode="vertical">
<!-- 权限菜单 -->
<!-- <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> -->
<!-- 菜单全部展示 -->
<sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" />
</el-menu>
</el-scrollbar>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import Logo from './Logo'
import defaultSettings from '@/settings'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { asyncRoutes1 } from '@/router'
import { asyncRoutes } from '@/router'
export default {
components: { SidebarItem, Logo },
data () {
return {
title: defaultSettings.title
}
},
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
......@@ -31,38 +41,8 @@ export default {
return variables
},
asyncRoutes () {
return asyncRoutes1
return asyncRoutes
}
}
}
</script>
\ No newline at end of file
<style scoped lang="scss">
.el-menu--horizontal {
display: flex;
background: none !important;
}
/deep/.el-menu-item:hover {
background: none;
font-weight: 700;
color: #fff !important;
}
/deep/.el-submenu__title {
color: #fff;
font-size: 18px;
}
/deep/.el-submenu__title:hover {
background: none;
font-weight: 700;
font-size: 20px;
}
/deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
background: none;
color: #fff;
font-size: 20px;
font-weight: 700 !important;
}
</style>
\ No newline at end of file
......
<template>
<div class="app-wrapper">
<navbar />
<div class="appMain">
<div class="main-container">
<sidebar class="sidebar-container" />
<app-main />
</div>
</div>
......@@ -36,7 +37,7 @@ export default {
position: relative;
height: 100%;
width: 100%;
background-color: $containerbg;
&.mobile.openSidebar {
position: fixed;
......@@ -44,14 +45,23 @@ export default {
}
}
.appMain {
height: calc(100vh - 65px);
background-color: $containerbg;
.app-main {
.drawer-bg {
background: #000;
opacity: 0.3;
width: 100%;
top: 0;
height: 100%;
padding: 10px;
box-sizing: border-box;
}
position: absolute;
z-index: 999;
}
.fixed-header {
width: 100%;
transition: width 0.28s;
}
.el-dropdown-menu--small {
padding: 0;
width: 5px;
}
</style>
......
......@@ -22,6 +22,12 @@ import 'vue-awesome/icons/align-left.js';
Vue.prototype.$startLoading = startLoadingAddCount
Vue.prototype.$endLoading = endLoadingSubCount
// 弹框
import { popupDialog, popupCacel } from "@/utils/popup.js";
// 全局加载
Vue.prototype.$popupDialog = popupDialog
Vue.prototype.$popupCacel = popupCacel
import { theme } from "@/directive/theme.js"
Vue.directive("theme", theme)
Vue.directive('fo', {
......
......@@ -17,21 +17,19 @@ router.beforeEach(async (to, from, next) => {
}
if (hasAddRoute) {
next()
} else {
const { result: getMenuData } = await getMenuInfo()
const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData)
// 获取用户信息
await store.dispatch('user/getUserInfo')
router.addRoutes([...accessRoutes, { path: '*', redirect: '/404', hidden: true }])
const routeTo = Cookies.get('routerTo')
if (routeTo && routeTo !== '/') {
next({ ...to, replace: true })
} else {
next('/jgHome')
}
}
// else {
// const { result: getMenuData } = await getMenuInfo()
// const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData)
// // 获取用户信息
// await store.dispatch('user/getUserInfo')
// router.addRoutes([...accessRoutes, { path: '*', redirect: '/404', hidden: true }])
// const routeTo = Cookies.get('routerTo')
// if (routeTo && routeTo !== '/') {
// next({ ...to, replace: true })
// } else {
// next('/home')
// }
// }
next()
NProgress.done()
})
router.afterEach(to => {
......
......@@ -3,8 +3,6 @@ import Router from 'vue-router'
Vue.use(Router)
/* Layout */
import Layout from '@/layout'
import Layout1 from '@/layout1'
/* Router Modules */
// import componentsRouter from './modules/components'
export const constantRoutes = [
......@@ -26,6 +24,21 @@ export const constantRoutes = [
path: '/dataView',
name: 'dataView',
component: () => import('@/views/dataView/index')
},
// 监管首页
{
path: '/',
component: Layout,
redirect: '/jgHome',
meta: { title: '首页' },
children: [
{
path: 'jgHome',
component: () => import('@/views/home/index'),
name: 'jgHome',
meta: { title: '首页', icon: 'workbench', affix: true }
}
]
}
]
/**
......@@ -33,17 +46,18 @@ export const constantRoutes = [
* the routes that need to be dynamically loaded based on user roles
*/
export const asyncRoutes = [
// 系统首页
// 监管首页
{
path: '/',
component: Layout,
redirect: '/home',
redirect: '/jgHome',
meta: { title: '首页' },
children: [
{
path: 'home',
path: 'jgHome',
component: () => import('@/views/home/index'),
name: 'home',
meta: { title: '工作台', icon: 'workbench', affix: true }
name: 'jgHome',
meta: { title: '首页', icon: 'workbench', affix: true }
}
]
},
......@@ -54,7 +68,7 @@ export const asyncRoutes = [
children: [
{
path: 'index',
component: () => import('@/views/jsbwcx/index'),
component: () => import('@/views/jsbwcx/index.vue'),
name: 'jsbwcx',
meta: { title: '接收报文查询', icon: 'zsgl' }
}
......@@ -296,110 +310,10 @@ export const asyncRoutes = [
}
]
export const asyncRoutes1 = [
// 监管首页
// {
// path: '/',
// component: Layout1,
// redirect: '/jgHome',
// meta: { title: '首页' },
// children: [
// {
// path: 'jgHome',
// component: () => import('@/views/jgHome/index'),
// name: 'jgHome',
// meta: { title: '首页', icon: 'workbench', affix: true }
// }
// ]
// },
{
path: '/',
component: Layout1,
redirect: '/jgHome',
meta: { title: '首页' },
children: [
{
path: 'jgHome',
component: () => import('@/views/home/index'),
name: 'jgHome',
meta: { title: '首页', icon: 'workbench', affix: true }
}
]
},
// 接收报文查询
{
path: '/jsbwcx1',
component: Layout1,
children: [
{
path: 'index',
component: () => import('@/views/jsbwcx/index'),
name: 'jsbwcx',
meta: { title: '接收报文查询1', icon: 'zsgl' }
}
]
},
// 上报报文查询
{
path: '/sbbwcx1',
component: Layout1,
children: [
{
path: 'index',
component: () => import('@/views/sbbwcx/index'),
name: 'sbbwcx',
meta: { title: '上报报文查询', icon: 'zsgl' }
}
]
},
// 登簿日志
{
path: '/dbrzcx1',
component: Layout1,
children: [
{
path: 'index',
component: () => import('@/views/dbrzcx/index'),
name: 'dbrzcx',
meta: { title: '登簿日志查询', icon: 'zhcx' }
}
]
},
// 系统管理
{
path: '/system1',
component: Layout1,
meta: { title: '系统管理', icon: 'sqcx', breadcrumb: false },
redirect: '/system/dictionaries',
alwaysShow: true,
name: 'system',
children: [
{
path: 'dictionaries',
component: () => import('@/views/system/dictionaries/dictionaries.vue'),
name: 'dictionaries',
meta: { title: '字典管理' }
},
{
path: 'validationRule',
component: () => import('@/views/system/validationRule'),
name: 'validationRule',
meta: { title: '上报效验规则配置' }
},
{
path: 'timedTask',
component: () => import('@/views/system/timedTask'),
name: 'timedTask',
meta: { title: '定时任务' }
}
]
}
]
const createRouter = () =>
new Router({
scrollBehavior: () => ({ y: 0 }),
routes: [...constantRoutes, ...asyncRoutes, ...asyncRoutes1]
routes: [...constantRoutes, ...asyncRoutes]
})
const router = createRouter()
......
import { asyncRoutes, constantRoutes, resetRouter } from '@/router'
import { constantRoutes } from '@/router'
import asyncRouter from '@/utils/asyncRouter.js'
const state = {
routes: [],
......
......@@ -106,14 +106,14 @@
::-webkit-scrollbar-track {
width: 7px;
background-color: rgba(255, 255, 255, 0);
background-color: #29409D;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px;
}
::-webkit-scrollbar-thumb {
background-color: rgb(207, 208, 209);
background-color: #355194;
background-clip: padding-box;
min-height: 28px;
-webkit-border-radius: 6px;
......
.tableClass {
/deep/.el-table {
border: none !important;
border-radius: 0 !important;
.el-table__header-wrapper {
border-right: 1px solid #103E99;
}
.cell {
color: #FFFFFF !important;
......@@ -108,6 +113,11 @@
color: #FFFFFF;
border: none;
}
.el-pager li {
background: #1F357A;
color: #FFFFFF;
}
}
/deep/.btn-next,
......
import Popup from '@/components/Popup/index'
export function popupDialog (title, url, params, width = '75%', height, btnShow = false, callback) {
Popup.install(title, url, {
// Popup.install
Popup(title, url, {
height: height,
width: width,
formData: params,
......@@ -13,3 +14,7 @@ export function popupDialog (title, url, params, width = '75%', height, btnShow
}
})
}
export function popupCacel () {
Popup1().close()
}
\ No newline at end of file
......
......@@ -36,7 +36,6 @@
</div>
</div>
</template>
<script>
import drawMixin from "../../utils/drawMixin";
import leftcard from './leftcard'
......
......@@ -35,7 +35,7 @@
</div>
<!-- 列表区域 -->
<div class="from-clues-content">
<lb-table :page-size="pageData.size" :heightNum="200" :current-page.sync="pageData.current"
<lb-table :page-size="pageData.size" :heightNum="210" :current-page.sync="pageData.current"
:total="tableData.total" @size-change="handleSizeChange" @p-current-change="handleCurrentChange"
:column="tableData.columns" :data="tableData.data">
</lb-table>
......
......@@ -241,10 +241,9 @@
.jrxxlb {
margin-top: 5px;
background-color: #000637;
/deep/tbody tr:nth-child(odd) {
background: #000637 !important;
background: #132E82 !important;
}
.title {
......
<template>
<!-- 编辑 -->
<dialogBox title="详情" @closeDialog="closeDialog" @submitForm="handleSubmit" v-model="myValue">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px">
<el-row>
<el-col :span="6">
<el-form-item label="行政区代码" prop="xzqdm">
<el-input v-model="ruleForm.xzqdm" placeholder="行政区代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="行政区名称" prop="xzqmc">
<el-input v-model="ruleForm.xzqmc" placeholder="行政区名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="不动产单元号" prop="bdcdyh">
<el-input v-model="ruleForm.bdcdyh" placeholder="不动产单元号"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="业务名称" prop="ywmc">
<el-input v-model="ruleForm.ywmc" placeholder="业务名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="操作时间" prop="czsj">
<el-date-picker v-model="ruleForm.czsj" class="width100" type="datetime" placeholder="操作时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
</dialogBox>
</template>
<script>
export default {
props: {
value: { type: Boolean, default: false },
},
data () {
return {
myValue: this.value,
ruleForm: {
xzqdm: '',
xzqmc: '',
bdcdyh: '',
ywmc: '',
czsj: ''
},
rules: {
xzqdm: [
{ required: true, message: '行政区代码', trigger: 'blur' }
],
xzqmc: [
{ required: true, message: '行政区名称', trigger: 'blur' }
],
bdcdyh: [
{ required: true, message: '不动产单元号', trigger: 'blur' }
],
ywmc: [
{ required: true, message: '业务名称', trigger: 'blur' }
],
czsj: [
{ required: true, message: '操作时间', trigger: 'blur' }
]
}
}
},
watch: {
value (val) {
this.myValue = val
}
},
methods: {
closeDialog () {
this.$emit('input', false)
},
handleSubmit () {
this.$emit('input', false)
}
}
}
</script>
\ No newline at end of file
......@@ -74,8 +74,6 @@
:data="tableData.data">
</lb-table>
</div>
<!-- 编辑 -->
<dataDetails ref="editLog" :bsmSjsb="bsmSjsb" :diaData="diaData" />
</div>
</template>
......@@ -85,18 +83,11 @@
import data from "./data"
// 引入table混入方法
import tableMixin from '@/mixins/tableMixin.js'
// 引入详情组件
import dataDetails from '@/components/dataDetails/edit-dialog'
export default {
name: "jsbwcx",
mixins: [tableMixin],
components: {
dataDetails
},
data () {
return {
diaData: {},
bsmSjsb: '',
// 开始结束日期限制
pickerOptionsStart: {
disabledDate: (time) => {
......@@ -220,16 +211,11 @@ export default {
resetForm () {
this.$refs.ruleForm.resetFields();
},
async featchData () {
featchData () {
},
// 详情
handleEdit (row) {
this.diaData.list = [{
chineseTable: '测试',
dataTable: '222',
soleUrl: 'acceptanceInfo'
}]
this.$refs.editLog.isShow()
handleEdit () {
this.$popupDialog('业务报文', 'components/JsonEditor/index', {}, '50%', '320px')
}
}
}
......
......@@ -51,7 +51,7 @@
<!-- 操作按钮 -->
<el-col :span="12" class="btnColRight">
<btn nativeType="cz" @click="resetForm('ruleForm')">重置</btn>
<btn nativeType="cx" @click="featchData">查询</btn>
<btn nativeType="cx" @click="queryClick">查询</btn>
<btn nativeType="sb" @click="handleEscalation">上报</btn>
</el-col>
</el-row>
......@@ -59,13 +59,12 @@
</div>
<!-- 列表 -->
<div class="from-clues-content">
<lb-table ref="table" @selection-change="handleSelectionChange" :page-size="pageData.size"
:current-page.sync="pageData.current" :total="tableData.total" @size-change="handleSizeChange"
@p-current-change="handleCurrentChange" :column="tableData.columns" :data="tableData.data">
<lb-table :page-size="pageData.pageSize" :current-page.sync="pageData.currentPage" :total="tableData.total"
@size-change="handleSizeChange" @p-current-change="handleCurrentChange" :column="tableData.columns"
:data="tableData.data">
</lb-table>
</div>
<!-- 引入详情组件 -->
<!-- <detailDialog v-model="isShow" /> -->
<!-- 编辑 -->
<dataDetails ref="editLog" />
</div>
......@@ -75,14 +74,14 @@
// 引入表头数据
import data from "./data"
// 引入表格混入方法
import tableMixin from '@/mixins/tableMixin.js'
import table from "@/utils/mixin/table"
// 引入详情弹框
import dataDetails from '@/components/dataDetails/edit-dialog'
import { getDataReportPage } from "@/api/sbbwcx.js";
export default {
name: "sbbwcx",
mixins: [tableMixin],
mixins: [table],
// 注册组件
components: {
dataDetails
......@@ -130,8 +129,8 @@ export default {
return (
<div>
<el-button
type="text"
size="mini"
type="primary"
onClick={() => { this.handleDetail(scope.row) }}
>
详情
......@@ -142,13 +141,7 @@ export default {
}
]),
total: 0,
data: [],
},
// 分页
pageData: {
total: 0,
pageSize: 15,
current: 1,
data: [{}],
},
// 行政区
xzqOptions: [
......@@ -177,7 +170,7 @@ export default {
this.$refs.ruleForm.resetFields();
},
// 初始化数据
featchData () {
queryClick () {
getDataReportPage({ ...this.form, ...this.pageData }).then(res => {
if (res.code === 200) {
let { total, records } = res.result
......@@ -188,7 +181,6 @@ export default {
},
// 多选
handleSelectionChange (val) {
},
// 上报
handleEscalation () { },
......