15 changed files with 1411 additions and 107 deletions
@ -0,0 +1,589 @@ |
|||||
|
@import "~@/element-ui/theme-variables.scss"; |
||||
|
@import "./variables.scss"; |
||||
|
|
||||
|
// $navbar--height: 60px; |
||||
|
|
||||
|
/* Reset element-ui |
||||
|
------------------------------ */ |
||||
|
.g-bd { |
||||
|
.el-card + .el-card { |
||||
|
margin-top: 15px; |
||||
|
} |
||||
|
.el-input__prefix .el-input__icon { |
||||
|
display: inline-block; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
.el-date-editor .el-range-separator { |
||||
|
width: 8%; |
||||
|
} |
||||
|
.el-table th { |
||||
|
color: $--color-text-primary; |
||||
|
background-color: $--background-color-base; |
||||
|
} |
||||
|
.el-pagination { |
||||
|
margin-top: 15px; |
||||
|
text-align: right; |
||||
|
} |
||||
|
.el-table__expand-icon { |
||||
|
display: inline-block; |
||||
|
width: 14px; |
||||
|
vertical-align: middle; |
||||
|
margin-right: 5px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Common |
||||
|
------------------------------ */ |
||||
|
// 图标 |
||||
|
.icon-svg { |
||||
|
width: 1em; |
||||
|
height: 1em; |
||||
|
fill: currentColor; |
||||
|
vertical-align: middle; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
// 卡片 |
||||
|
.aui-card--fill .el-card__header { |
||||
|
height: $content--card-header-height; |
||||
|
line-height: $content--card-header-height - 36px; |
||||
|
} |
||||
|
.aui-card__title { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
// 表单 |
||||
|
.aui-form__label-icon { |
||||
|
display: inline-block; |
||||
|
margin: 0 3px; |
||||
|
vertical-align: middle; |
||||
|
font-size: 18px; |
||||
|
color: $--color-text-secondary; |
||||
|
} |
||||
|
// 按钮 |
||||
|
.aui-button--dashed { |
||||
|
border-style: dashed; |
||||
|
&:focus, |
||||
|
&:hover { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
&-add { |
||||
|
> span > *[class*="el-icon-"], |
||||
|
> span > *[class*="icon"] { |
||||
|
vertical-align: middle; |
||||
|
font-size: 18px; |
||||
|
margin-right: 5px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Layout |
||||
|
------------------------------ */ |
||||
|
.g-bd { |
||||
|
position: relative; |
||||
|
padding-top: $navbar--height; |
||||
|
|
||||
|
/* Sidebar fold |
||||
|
------------------------------ */ |
||||
|
&.z-sidebar--fold { |
||||
|
.navbar { |
||||
|
&__header, |
||||
|
&__brand { |
||||
|
width: $sidebar--width-fold; |
||||
|
} |
||||
|
&__brand { |
||||
|
&-lg { |
||||
|
display: none; |
||||
|
} |
||||
|
&-mini { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
} |
||||
|
&__icon-menu--switch { |
||||
|
transform: rotateZ(180deg); |
||||
|
} |
||||
|
} |
||||
|
.aui-sidebar { |
||||
|
&__inner { |
||||
|
width: $sidebar--width-fold + 20px; |
||||
|
} |
||||
|
&, |
||||
|
&__menu { |
||||
|
width: $sidebar--width-fold; |
||||
|
} |
||||
|
&__menu > li > .el-submenu__title { |
||||
|
text-align: center; |
||||
|
} |
||||
|
&__menu-icon { |
||||
|
margin-right: 0; |
||||
|
font-size: 18px; |
||||
|
} |
||||
|
} |
||||
|
.g-cnt { |
||||
|
&__wrapper { |
||||
|
margin-left: $sidebar--width-fold; |
||||
|
} |
||||
|
&--tabs > .el-tabs > .el-tabs__header { |
||||
|
left: $sidebar--width-fold; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.z-sidebar--noside { |
||||
|
.aui-sidebar { |
||||
|
display: none !important; |
||||
|
} |
||||
|
.g-cnt { |
||||
|
&__wrapper { |
||||
|
margin-left: 0 !important; |
||||
|
} |
||||
|
&--tabs > .el-tabs > .el-tabs__header { |
||||
|
left: 0 !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Navbar |
||||
|
------------------------------ */ |
||||
|
.m-navbar { |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
right: 0; |
||||
|
left: 0; |
||||
|
z-index: 1030; |
||||
|
display: flex; |
||||
|
align-items: stretch; |
||||
|
height: $navbar--height; |
||||
|
// background-color: $--color-primary; |
||||
|
// box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.05); |
||||
|
background: linear-gradient(180deg, #00023f, #176dec); |
||||
|
box-shadow: 0px 3px 16px 0px rgba(187, 187, 227, 0.35); |
||||
|
|
||||
|
.navbar--colorful { |
||||
|
.navbar__body { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
.navbar__menu { |
||||
|
> .el-menu-item, |
||||
|
> .el-submenu > .el-submenu__title { |
||||
|
color: #fff; |
||||
|
&:focus, |
||||
|
&:hover { |
||||
|
color: #fff; |
||||
|
background-color: mix(#000, $--color-primary, 15%); |
||||
|
} |
||||
|
} |
||||
|
> .el-menu-item.is-active, |
||||
|
> .el-submenu.is-active > .el-submenu__title { |
||||
|
color: #fff; |
||||
|
&:focus, |
||||
|
&:hover { |
||||
|
color: #fff; |
||||
|
} |
||||
|
} |
||||
|
.el-menu-item i, |
||||
|
.el-submenu__title i, |
||||
|
.el-menu-item svg, |
||||
|
.el-submenu__title svg, |
||||
|
.el-menu-item .el-dropdown { |
||||
|
color: #fff !important; |
||||
|
} |
||||
|
.el-button { |
||||
|
color: #fff; |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
} |
||||
|
.navbar__search { |
||||
|
&-txt { |
||||
|
.el-input__inner { |
||||
|
color: #fff; |
||||
|
border-color: #fff; |
||||
|
&::-webkit-input-placeholder { |
||||
|
color: #fff; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.navbar__header { |
||||
|
position: relative; |
||||
|
width: $sidebar--width; |
||||
|
height: $navbar--height; |
||||
|
transition: width 0.3s; |
||||
|
} |
||||
|
.navbar__brand { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
padding: 5px; |
||||
|
margin: 0; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
font-size: 24px; |
||||
|
text-transform: uppercase; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
transition: width 0.3s; |
||||
|
font-family: FZZCHJW; |
||||
|
font-weight: normal; |
||||
|
color: #ffffff; |
||||
|
background: linear-gradient(0deg, #03c7ff 24.609375%, #ffffff 81.0791015625%); |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: rgba(#fff, 0.7); |
||||
|
|
||||
|
&-lg, |
||||
|
&-mini { |
||||
|
max-width: 100%; |
||||
|
color: #fff; |
||||
|
cursor: pointer; |
||||
|
&:focus, |
||||
|
&:hover { |
||||
|
color: #fff; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
} |
||||
|
&-mini { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
.navbar__body { |
||||
|
position: relative; |
||||
|
display: flex; |
||||
|
flex: 1; |
||||
|
// background-color: #fff; |
||||
|
background-color: transparent; |
||||
|
// overflow: hidden; |
||||
|
} |
||||
|
.navbar__menu { |
||||
|
background-color: transparent; |
||||
|
border-bottom: 0 !important; |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
&.z-div { |
||||
|
.el-menu-item { |
||||
|
position: relative; |
||||
|
|
||||
|
&.is-active { |
||||
|
&::before { |
||||
|
position: absolute; |
||||
|
content: ""; |
||||
|
display: block; |
||||
|
bottom: -6px; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
margin: 0 auto; |
||||
|
width: 50px; |
||||
|
height: 4px; |
||||
|
border: 0; |
||||
|
border-radius: 0 0 2px 2px; |
||||
|
background: #1effff; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&:last-child { |
||||
|
&::after { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&::after { |
||||
|
position: absolute; |
||||
|
content: ""; |
||||
|
right: 0; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
margin: auto 0; |
||||
|
width: 1px; |
||||
|
height: 18px; |
||||
|
background-color: rgba(#ffffff, 0.6); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-menu-item, |
||||
|
.el-submenu > .el-submenu__title { |
||||
|
height: $navbar--height; |
||||
|
padding: 0 15px; |
||||
|
line-height: $navbar--height; |
||||
|
border-color: transparent !important; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.el-menu-item.is-active, |
||||
|
.el-submenu.is-active > .el-submenu__title { |
||||
|
color: #fff; |
||||
|
font-weight: bold; |
||||
|
&:focus, |
||||
|
&:hover { |
||||
|
} |
||||
|
} |
||||
|
.el-menu-item { |
||||
|
&:focus, |
||||
|
&:hover { |
||||
|
background-color: transparent !important; |
||||
|
|
||||
|
.navbar__icon-menu { |
||||
|
color: #fff; |
||||
|
} |
||||
|
.el-dropdown { |
||||
|
color: #fff; |
||||
|
.el-icon-arrow-down { |
||||
|
transform: rotateZ(180deg); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
* { |
||||
|
vertical-align: initial; |
||||
|
} |
||||
|
.navbar__icon-menu { |
||||
|
vertical-align: middle; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.el-dropdown { |
||||
|
color: #fff; |
||||
|
.el-icon-arrow-down { |
||||
|
width: auto; |
||||
|
font-size: 12px; |
||||
|
margin: 0 0 0 5px; |
||||
|
transition: transform 0.3s; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-badge { |
||||
|
display: inline; |
||||
|
z-index: 2; |
||||
|
&__content { |
||||
|
line-height: 16px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.navbar__search { |
||||
|
> *[class*="el-icon-"], |
||||
|
> *[class*="icon"] { |
||||
|
display: inline-block; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
&-txt { |
||||
|
width: 0; |
||||
|
transition: width 0.3s, margin-left 0.3s; |
||||
|
&.is-show { |
||||
|
width: 210px; |
||||
|
margin-left: 8px; |
||||
|
} |
||||
|
.el-input__inner { |
||||
|
height: $navbar--height - 20px; |
||||
|
padding: 0; |
||||
|
line-height: $navbar--height - 20px; |
||||
|
border-color: $--color-text-primary; |
||||
|
border-top: 0; |
||||
|
border-right: 0; |
||||
|
border-left: 0; |
||||
|
border-radius: 0; |
||||
|
background: transparent; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.navbar__avatar { |
||||
|
.el-dropdown-link { |
||||
|
> img { |
||||
|
width: 36px; |
||||
|
height: auto; |
||||
|
margin-right: 5px; |
||||
|
border-radius: 100%; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* Content |
||||
|
------------------------------ */ |
||||
|
.g-cnt { |
||||
|
position: relative; |
||||
|
padding: $content--padding; |
||||
|
min-height: calc(100vh - #{$navbar--height}); |
||||
|
background-color: #000; |
||||
|
|
||||
|
&__wrapper { |
||||
|
position: relative; |
||||
|
margin-left: $sidebar--width; |
||||
|
min-height: calc(100vh - #{$navbar--height}); |
||||
|
background-color: $content--background-color; |
||||
|
transition: margin-left 0.3s; |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__body { |
||||
|
min-height: calc(#{$content--fill-height} - 2px); |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__header + .el-card__body { |
||||
|
min-height: calc(#{$content--fill-height} - #{$content--card-header-height} - 2px); |
||||
|
} |
||||
|
&--tabs { |
||||
|
padding: $content--tabs-header-height 0 0; |
||||
|
} |
||||
|
&--tabs-tools { |
||||
|
position: fixed; |
||||
|
top: $navbar--height; |
||||
|
right: 0; |
||||
|
z-index: 931; |
||||
|
min-width: $content--tabs-header-height; |
||||
|
height: $content--tabs-header-height; |
||||
|
padding: 0 12px; |
||||
|
text-align: center; |
||||
|
font-size: 16px; |
||||
|
line-height: $content--tabs-header-height; |
||||
|
background-color: $--background-color-base; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
&--tabs-icon-nav { |
||||
|
display: inline-block; |
||||
|
vertical-align: middle; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
> .el-tabs { |
||||
|
> .el-tabs__header { |
||||
|
position: fixed; |
||||
|
top: $navbar--height; |
||||
|
left: $sidebar--width; |
||||
|
right: 0; |
||||
|
z-index: 930; |
||||
|
padding: 0 55px 0 15px; |
||||
|
margin: 0; |
||||
|
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); |
||||
|
background-color: #fff; |
||||
|
transition: left 0.3s; |
||||
|
> .el-tabs__nav-wrap { |
||||
|
margin-bottom: 0; |
||||
|
&:after { |
||||
|
display: none; |
||||
|
} |
||||
|
> .el-tabs__nav-next, |
||||
|
> .el-tabs__nav-prev { |
||||
|
line-height: $content--tabs-header-height; |
||||
|
} |
||||
|
> .el-tabs__nav-scroll > .el-tabs__nav { |
||||
|
& > .el-tabs__active-bar { |
||||
|
display: none; |
||||
|
} |
||||
|
& > .el-tabs__item { |
||||
|
height: $content--tabs-header-height; |
||||
|
padding: 0 15px; |
||||
|
line-height: $content--tabs-header-height; |
||||
|
border: 0; |
||||
|
color: $--color-text-regular; |
||||
|
&:focus, |
||||
|
&:hover, |
||||
|
&.is-active { |
||||
|
color: $--color-text-primary; |
||||
|
background-color: $--background-color-base; |
||||
|
&:after { |
||||
|
display: block; |
||||
|
} |
||||
|
> .el-icon-close { |
||||
|
color: $--color-text-primary; |
||||
|
} |
||||
|
} |
||||
|
&:after { |
||||
|
display: none; |
||||
|
position: absolute; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
content: ""; |
||||
|
width: 100%; |
||||
|
height: 2px; |
||||
|
background-color: $--color-primary; |
||||
|
} |
||||
|
+ .el-tabs__item { |
||||
|
margin-left: 1px; |
||||
|
} |
||||
|
> .el-icon-close { |
||||
|
width: 14px; |
||||
|
margin-left: 15px; |
||||
|
color: $--color-text-secondary; |
||||
|
} |
||||
|
> i.icon { |
||||
|
display: inline-block; |
||||
|
vertical-align: middle; |
||||
|
font-size: 18px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
> .el-tabs__content { |
||||
|
padding: $content--padding; |
||||
|
.el-loading-mask { |
||||
|
z-index: 830; |
||||
|
} |
||||
|
> .el-tab-pane { |
||||
|
min-height: calc(#{$content--fill-height-tabs}); |
||||
|
> .aui-card--fill > .el-card__body { |
||||
|
min-height: calc(#{$content--fill-height-tabs} - 2px); |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__header + .el-card__body { |
||||
|
min-height: calc(#{$content--fill-height-tabs} - #{$content--card-header-height} - 2px); |
||||
|
} |
||||
|
&.is-iframe { |
||||
|
height: calc(#{$content--fill-height-tabs} + #{$content--padding * 2}); |
||||
|
margin: -$content--padding; |
||||
|
min-height: auto; |
||||
|
> .aui-card--fill { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__header { |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__body { |
||||
|
height: calc(#{$content--fill-height-tabs} - 2px); |
||||
|
margin: $content--padding; |
||||
|
min-height: auto; |
||||
|
border: $--border-base; |
||||
|
border-color: $--border-color-lighter; |
||||
|
border-radius: $--border-radius-base; |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__header + .el-card__body { |
||||
|
height: calc(#{$content--fill-height-tabs} - #{$content--card-header-height} - 2px); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// quill富文本编辑器 |
||||
|
.ql-toolbar { |
||||
|
line-height: 20px; |
||||
|
&.ql-snow { |
||||
|
border-color: $--border-color-base; |
||||
|
} |
||||
|
.ql-formats { |
||||
|
margin: 0 5px; |
||||
|
} |
||||
|
} |
||||
|
.ql-container { |
||||
|
height: 150px; |
||||
|
&.ql-snow { |
||||
|
border-color: $--border-color-base; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-loading-mask { |
||||
|
z-index: 5001 !important; |
||||
|
} |
||||
|
|
||||
|
/* Page |
||||
|
------------------------------ */ |
||||
|
*[class*="aui-page__"] { |
||||
|
padding-top: 0; |
||||
|
.aui-content { |
||||
|
min-height: auto; |
||||
|
&__wrapper { |
||||
|
min-height: 100vh; |
||||
|
margin-left: 0; |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__body { |
||||
|
min-height: calc(100vh - #{$content--padding * 2} - 2px); |
||||
|
} |
||||
|
> .aui-card--fill > .el-card__header + .el-card__body { |
||||
|
min-height: calc(100vh - #{$content--padding * 2} - #{$content--card-header-height} - 2px); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -1,49 +1,54 @@ |
|||||
import Vue from 'vue' |
import Vue from "vue"; |
||||
import Vuex from 'vuex' |
import Vuex from "vuex"; |
||||
import cloneDeep from 'lodash/cloneDeep' |
import cloneDeep from "lodash/cloneDeep"; |
||||
import user from './modules/user' |
import user from "./modules/user"; |
||||
import app from './modules/app' |
import app from "./modules/app"; |
||||
import tagsView from './modules/tagsView' |
import tagsView from "./modules/tagsView"; |
||||
|
|
||||
Vue.use(Vuex) |
Vue.use(Vuex); |
||||
|
|
||||
export default new Vuex.Store({ |
export default new Vuex.Store({ |
||||
namespaced: true, |
namespaced: true, |
||||
state: { |
state: { |
||||
// 导航条, 布局风格, defalut(白色) / colorful(鲜艳)
|
// 导航条, 布局风格, defalut(白色) / colorful(鲜艳)
|
||||
navbarLayoutType: 'colorful', |
navbarLayoutType: "colorful", |
||||
// 侧边栏, 布局皮肤, default(白色) / dark(黑色)
|
// 侧边栏, 布局皮肤, default(白色) / dark(黑色)
|
||||
sidebarLayoutSkin: 'dark', |
sidebarLayoutSkin: "dark", |
||||
// 侧边栏, 折叠状态
|
// 侧边栏, 折叠状态
|
||||
sidebarFold: false, |
sidebarFold: false, |
||||
// 侧边栏, 菜单
|
// 侧边栏, 菜单
|
||||
sidebarMenuList: [], |
sidebarMenuList: [], |
||||
sidebarMenuActiveName: '', |
sidebarMenuActiveName: "", |
||||
LevelOneMenuActiveName: '', |
LevelOneMenuActiveName: "", |
||||
sidebarActiveSubMenuList: [], |
sidebarActiveSubMenuList: [], |
||||
// 内容, 是否需要刷新
|
// 内容, 是否需要刷新
|
||||
contentIsNeedRefresh: false, |
contentIsNeedRefresh: false, |
||||
// 内容, 标签页(默认添加首页)
|
// 内容, 标签页(默认添加首页)
|
||||
contentTabs: [ |
contentTabs: [ |
||||
{ |
{ |
||||
...window.SITE_CONFIG['contentTabDefault'], |
...window.SITE_CONFIG["contentTabDefault"], |
||||
'name': 'home', |
name: "home", |
||||
'title': 'home' |
title: "home", |
||||
} |
}, |
||||
], |
], |
||||
contentTabsActiveName: 'home' |
contentTabsActiveName: "home", |
||||
|
|
||||
|
mainShuju: { |
||||
|
menuList: [], |
||||
|
activeName: "", |
||||
|
}, |
||||
}, |
}, |
||||
modules: { |
modules: { |
||||
user, |
user, |
||||
app, |
app, |
||||
tagsView |
tagsView, |
||||
}, |
}, |
||||
mutations: { |
mutations: { |
||||
// 重置vuex本地储存状态
|
// 重置vuex本地储存状态
|
||||
resetStore(state) { |
resetStore(state) { |
||||
Object.keys(state).forEach((key) => { |
Object.keys(state).forEach((key) => { |
||||
state[key] = cloneDeep(window.SITE_CONFIG['storeState'][key]) |
state[key] = cloneDeep(window.SITE_CONFIG["storeState"][key]); |
||||
}) |
}); |
||||
} |
}, |
||||
} |
}, |
||||
}) |
}); |
||||
|
@ -0,0 +1,95 @@ |
|||||
|
<template> |
||||
|
<main :class="['aui-content']"> |
||||
|
<!-- 其他方式, 展示内容 --> |
||||
|
<template> |
||||
|
<keep-alive> |
||||
|
<router-view /> |
||||
|
</keep-alive> |
||||
|
</template> |
||||
|
</main> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { isURL } from '@/utils/validate' |
||||
|
import Cookie from 'js-cookie' |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
iframeUrl: '', |
||||
|
token: '', |
||||
|
customerId: '' |
||||
|
} |
||||
|
}, |
||||
|
created () { |
||||
|
// this.$nextTick(() => { |
||||
|
// this.sendMessage() |
||||
|
// }) |
||||
|
this.token = Cookie.get('token') |
||||
|
this.customerId = localStorage.getItem('customerId') |
||||
|
}, |
||||
|
methods: { |
||||
|
changeCustomerName (customerName) { |
||||
|
this.$emit('changeCustomerName', customerName) |
||||
|
}, |
||||
|
// tabs, 是否通过iframe展示 |
||||
|
tabIsIframe (url) { |
||||
|
// this.appendIframe(url) |
||||
|
this.iframeUrl = url + '?token=' + Cookie.get('token') + '&customerId=' + localStorage.getItem('customerId') |
||||
|
return isURL(url) |
||||
|
}, |
||||
|
// tabs, 选中tab |
||||
|
tabSelectedHandle (tab) { |
||||
|
tab = this.$store.state.contentTabs.filter(item => item.name === tab.name)[0] |
||||
|
if (tab) { |
||||
|
this.$router.push({ |
||||
|
'name': tab.name, |
||||
|
'params': { ...tab.params }, |
||||
|
'query': { ...tab.query } |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
// tabs, 删除tab |
||||
|
tabRemoveHandle (tabName) { |
||||
|
if (tabName === 'home') { |
||||
|
return false |
||||
|
} |
||||
|
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name !== tabName) |
||||
|
if (this.$store.state.contentTabs.length <= 0) { |
||||
|
this.$store.state.sidebarMenuActiveName = this.$store.state.contentTabsActiveName = 'home' |
||||
|
return false |
||||
|
} |
||||
|
// 当前选中tab被删除 |
||||
|
if (tabName === this.$store.state.contentTabsActiveName) { |
||||
|
let tab = this.$store.state.contentTabs[this.$store.state.contentTabs.length - 1] |
||||
|
this.$router.push({ |
||||
|
name: tab.name, |
||||
|
params: { ...tab.params }, |
||||
|
query: { ...tab.query } |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
// tabs, 关闭其它 |
||||
|
tabsCloseOtherHandle () { |
||||
|
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => { |
||||
|
return item.name === 'home' || item.name === this.$store.state.contentTabsActiveName |
||||
|
}) |
||||
|
}, |
||||
|
// tabs, 关闭全部 |
||||
|
tabsCloseAllHandle () { |
||||
|
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name === 'home') |
||||
|
this.$router.push({ name: 'home' }) |
||||
|
}, |
||||
|
sendMessage () { |
||||
|
// const iframe = this.$refs.iframes.contentWindow |
||||
|
const iframe = document.getElementsByClassName('iframes')[0].contentWindow |
||||
|
|
||||
|
console.log('iframe', iframe) |
||||
|
// iframe.postMessage({ |
||||
|
// token: Cookie.get('token'), |
||||
|
// customerId: localStorage.getItem('customerId') |
||||
|
// }, '*') |
||||
|
iframe.postMessage({ name: 'lalalal' }, '*') |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
@ -0,0 +1,148 @@ |
|||||
|
<template> |
||||
|
<el-dialog |
||||
|
:visible.sync="visible" |
||||
|
:title="$t('updatePassword.title')" |
||||
|
:close-on-click-modal="false" |
||||
|
:close-on-press-escape="false" |
||||
|
:append-to-body="true" |
||||
|
> |
||||
|
<el-form |
||||
|
:model="dataForm" |
||||
|
:rules="dataRule" |
||||
|
ref="dataForm" |
||||
|
@keyup.enter.native="dataFormSubmitHandle()" |
||||
|
label-width="120px" |
||||
|
> |
||||
|
<el-form-item :label="$t('updatePassword.username')"> |
||||
|
<span>{{ $store.state.user.realName }}</span> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item prop="password" :label="$t('updatePassword.password')"> |
||||
|
<el-input |
||||
|
v-model="dataForm.password" |
||||
|
type="password" |
||||
|
:placeholder="$t('updatePassword.password')" |
||||
|
></el-input> |
||||
|
</el-form-item> --> |
||||
|
<el-form-item |
||||
|
prop="newPassword" |
||||
|
:label="$t('updatePassword.newPassword')" |
||||
|
> |
||||
|
<el-input |
||||
|
v-model="dataForm.newPassword" |
||||
|
type="password" |
||||
|
:placeholder="$t('updatePassword.newPassword')" |
||||
|
></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item |
||||
|
prop="confirmPassword" |
||||
|
:label="$t('updatePassword.confirmPassword')" |
||||
|
> |
||||
|
<el-input |
||||
|
v-model="dataForm.confirmPassword" |
||||
|
type="password" |
||||
|
:placeholder="$t('updatePassword.confirmPassword')" |
||||
|
></el-input> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<template slot="footer"> |
||||
|
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
||||
|
<el-button type="primary" @click="dataFormSubmitHandle()">{{ |
||||
|
$t('confirm') |
||||
|
}}</el-button> |
||||
|
</template> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import debounce from 'lodash/debounce' |
||||
|
import { clearLoginInfo } from '@/utils' |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
visible: false, |
||||
|
dataForm: { |
||||
|
password: '', |
||||
|
newPassword: '', |
||||
|
confirmPassword: '' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
dataRule() { |
||||
|
var validateConfirmPassword = (rule, value, callback) => { |
||||
|
if (this.dataForm.newPassword !== value) { |
||||
|
return callback( |
||||
|
new Error(this.$t('updatePassword.validate.confirmPassword')) |
||||
|
) |
||||
|
} |
||||
|
callback() |
||||
|
} |
||||
|
return { |
||||
|
// password: [ |
||||
|
// { |
||||
|
// required: true, |
||||
|
// message: this.$t('validate.required'), |
||||
|
// trigger: 'blur' |
||||
|
// } |
||||
|
// ], |
||||
|
newPassword: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: this.$t('validate.required'), |
||||
|
trigger: 'blur' |
||||
|
} |
||||
|
], |
||||
|
confirmPassword: [ |
||||
|
{ |
||||
|
required: true, |
||||
|
message: this.$t('validate.required'), |
||||
|
trigger: 'blur' |
||||
|
}, |
||||
|
{ validator: validateConfirmPassword, trigger: 'blur' } |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
init() { |
||||
|
this.visible = true |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs['dataForm'].resetFields() |
||||
|
}) |
||||
|
}, |
||||
|
// 表单提交 |
||||
|
dataFormSubmitHandle: debounce( |
||||
|
function () { |
||||
|
this.$refs['dataForm'].validate((valid) => { |
||||
|
if (!valid) { |
||||
|
return false |
||||
|
} |
||||
|
this.$http |
||||
|
.post('/gov/mine/mine/resetpassword', { |
||||
|
newPassword: this.dataForm.newPassword, |
||||
|
confirmNewPassword: this.dataForm.confirmPassword |
||||
|
}) |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} |
||||
|
this.$message({ |
||||
|
message: this.$t('prompt.success'), |
||||
|
type: 'success', |
||||
|
duration: 500, |
||||
|
onClose: () => { |
||||
|
this.visible = false |
||||
|
clearLoginInfo() |
||||
|
this.$router.replace({ name: 'loginWork' }) |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
.catch(() => {}) |
||||
|
}) |
||||
|
}, |
||||
|
1000, |
||||
|
{ leading: true, trailing: false } |
||||
|
) |
||||
|
} |
||||
|
} |
||||
|
</script> |
@ -0,0 +1,246 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<nav |
||||
|
v-if="showHeader" |
||||
|
class="m-navbar" |
||||
|
> |
||||
|
<div class="navbar__header"> |
||||
|
<h1 class="navbar__brand" @click="$router.push({ name: 'home' })"> |
||||
|
<a class="navbar__brand-lg" href="javascript:;">{{ |
||||
|
userType === 'work' ? customerName : $t('brand.lg') |
||||
|
}}</a> |
||||
|
<a class="navbar__brand-mini" href="javascript:;">{{ |
||||
|
$t('brand.mini') |
||||
|
}}</a> |
||||
|
</h1> |
||||
|
</div> |
||||
|
<div class="navbar__body"> |
||||
|
<el-menu class="navbar__menu mr-auto" mode="horizontal"> |
||||
|
<el-menu-item |
||||
|
index="1" |
||||
|
@click="$store.state.sidebarFold = !$store.state.sidebarFold" |
||||
|
> |
||||
|
<svg |
||||
|
class=" |
||||
|
icon-svg |
||||
|
navbar__icon-menu navbar__icon-menu--switch |
||||
|
" |
||||
|
aria-hidden="true" |
||||
|
> |
||||
|
<use xlink:href="#icon-outdent"></use> |
||||
|
</svg> |
||||
|
</el-menu-item> |
||||
|
|
||||
|
<el-menu-item index="2" @click="refresh()"> |
||||
|
<svg class="icon-svg navbar__icon-menu" aria-hidden="true"> |
||||
|
<use xlink:href="#icon-sync"></use> |
||||
|
</svg> |
||||
|
</el-menu-item> |
||||
|
</el-menu> |
||||
|
|
||||
|
<el-menu |
||||
|
:default-active="$store.state.mainShuju.activeName" |
||||
|
:unique-opened="true" |
||||
|
:collapseTransition="false" |
||||
|
mode="horizontal" |
||||
|
class="navbar__menu mr-auto z-div" |
||||
|
> |
||||
|
<el-menu-item |
||||
|
@click="toIndexPage" |
||||
|
> |
||||
|
<span>首页</span> |
||||
|
</el-menu-item> |
||||
|
|
||||
|
<el-menu-item |
||||
|
v-for="(menu, idx) in $store.state.mainShuju.menuList" |
||||
|
:key="menu.id" |
||||
|
:menu="menu" |
||||
|
:index="menu.id" |
||||
|
@click="gotoRouteHandle(menu.id, idx)" |
||||
|
> |
||||
|
<span>{{ menu.name }}</span> |
||||
|
</el-menu-item> |
||||
|
</el-menu> |
||||
|
|
||||
|
<el-menu class="navbar__menu" mode="horizontal"> |
||||
|
<!-- <el-menu-item index="1"> |
||||
|
<el-dropdown placement="bottom" |
||||
|
:show-timeout="0"> |
||||
|
<el-button size="mini">{{ $t('_lang') }}</el-button> |
||||
|
<el-dropdown-menu slot="dropdown"> |
||||
|
<el-dropdown-item v-for="(val, key) in i18nMessages" |
||||
|
:key="key" |
||||
|
@click.native="$i18n.locale = key">{{ val._lang }}</el-dropdown-item> |
||||
|
</el-dropdown-menu> |
||||
|
</el-dropdown> |
||||
|
</el-menu-item> --> |
||||
|
<!-- <el-menu-item index="2"> |
||||
|
<a href="//www.renren.io/" |
||||
|
target="_blank"> |
||||
|
<svg class="icon-svg navbar__icon-menu" |
||||
|
aria-hidden="true"> |
||||
|
<use xlink:href="#icon-earth"></use> |
||||
|
</svg> |
||||
|
</a> |
||||
|
</el-menu-item> --> |
||||
|
<el-menu-item index="3" |
||||
|
@click="fullscreenHandle()"> |
||||
|
<svg class="icon-svg navbar__icon-menu" |
||||
|
aria-hidden="true"> |
||||
|
<use xlink:href="#icon-fullscreen"></use> |
||||
|
</svg> |
||||
|
</el-menu-item> |
||||
|
|
||||
|
<el-menu-item index="4" class="navbar__avatar"> |
||||
|
<el-dropdown placement="bottom" :show-timeout="0"> |
||||
|
<span class="el-dropdown-link"> |
||||
|
<img |
||||
|
v-if="$store.state.user.gender === '2'" |
||||
|
src="~@/assets/img/staff-default-avatar-girl.png" |
||||
|
/> |
||||
|
<img v-else src="~@/assets/img/staff-default-avatar-boy.png" /> |
||||
|
<span>{{ $store.state.user.realName }}</span> |
||||
|
<i class="el-icon-arrow-down"></i> |
||||
|
</span> |
||||
|
<el-dropdown-menu slot="dropdown"> |
||||
|
<el-dropdown-item |
||||
|
@click.native="updatePasswordHandle()" |
||||
|
>{{ $t('updatePassword.title') }}</el-dropdown-item |
||||
|
> |
||||
|
<el-dropdown-item @click.native="logoutHandle()">{{ |
||||
|
$t('logout') |
||||
|
}}</el-dropdown-item> |
||||
|
</el-dropdown-menu> |
||||
|
</el-dropdown> |
||||
|
</el-menu-item> |
||||
|
</el-menu> |
||||
|
</div> |
||||
|
<!-- 弹窗, 修改密码 --> |
||||
|
<update-password-work |
||||
|
v-if="updatePassowrdVisible" |
||||
|
ref="updatePassowrd" |
||||
|
></update-password-work> |
||||
|
</nav> |
||||
|
<nav v-else class="navbar main-line"></nav> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { messages } from '@/i18n' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import screenfull from 'screenfull' |
||||
|
import UpdatePasswordWork from './main-navbar-update-password-work' |
||||
|
import { clearLoginInfo } from '@/utils' |
||||
|
export default { |
||||
|
inject: ['refresh'], |
||||
|
data() { |
||||
|
return { |
||||
|
showHeader: true, |
||||
|
i18nMessages: messages, |
||||
|
updatePassowrdVisible: false, |
||||
|
customerName: localStorage.getItem('customerName') |
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
UpdatePasswordWork |
||||
|
}, |
||||
|
created() { |
||||
|
let platformToken = localStorage.getItem('showHeader') || '' |
||||
|
if ( |
||||
|
typeof platformToken !== 'undefined' && |
||||
|
platformToken !== 'undefined' && |
||||
|
platformToken !== '' |
||||
|
) { |
||||
|
this.showHeader = false |
||||
|
} |
||||
|
console.log('=============================', this.userType) |
||||
|
this.$store.state.mainShuju.menuList = window.SITE_CONFIG['menuShujuList'] |
||||
|
}, |
||||
|
computed: { |
||||
|
userType() { |
||||
|
return localStorage.getItem('userType') |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
toIndexPage(){ |
||||
|
this.$router.replace('/indexWork') |
||||
|
}, |
||||
|
// 通过menuId与动态(菜单)路由进行匹配跳转至指定路由 |
||||
|
gotoRouteHandle(menuId, idx) { |
||||
|
var route = window.SITE_CONFIG['dynamicMenuRoutesShuju'].filter( |
||||
|
(item) => item.meta.menuId === menuId |
||||
|
)[0] |
||||
|
if (route) { |
||||
|
this.$router.push({ name: route.name }) |
||||
|
} |
||||
|
this.$store.state.mainShuju.activeName = menuId |
||||
|
}, |
||||
|
changeCustomerName(customerName) { |
||||
|
this.customerName = localStorage.getItem('customerName') |
||||
|
}, |
||||
|
// 全屏 |
||||
|
fullscreenHandle() { |
||||
|
if (!screenfull.enabled) { |
||||
|
return this.$message({ |
||||
|
message: this.$t('fullscreen.prompt'), |
||||
|
type: 'warning', |
||||
|
duration: 500 |
||||
|
}) |
||||
|
} |
||||
|
screenfull.toggle() |
||||
|
}, |
||||
|
// 修改密码 |
||||
|
updatePasswordHandle() { |
||||
|
this.updatePassowrdVisible = true |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.updatePassowrd.init() |
||||
|
}) |
||||
|
}, |
||||
|
// 退出 |
||||
|
logoutHandle() { |
||||
|
this.$confirm( |
||||
|
this.$t('prompt.info', { handle: this.$t('logout') }), |
||||
|
this.$t('prompt.title'), |
||||
|
{ |
||||
|
confirmButtonText: this.$t('confirm'), |
||||
|
cancelButtonText: this.$t('cancel'), |
||||
|
type: 'warning' |
||||
|
} |
||||
|
) |
||||
|
.then(() => { |
||||
|
//关闭所有标签页 |
||||
|
// tabs, 关闭全部 |
||||
|
this.$store.state.contentTabs = this.$store.state.contentTabs.filter( |
||||
|
(item) => item.name === 'home2' |
||||
|
) |
||||
|
|
||||
|
this.$http |
||||
|
.post('/auth/login/logout') |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
//别处登陆时 退出不提示 直接跳登陆页即可 |
||||
|
if (res.code !== 10007) { |
||||
|
this.$message.error(res.msg) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
clearLoginInfo() |
||||
|
|
||||
|
this.$router.push({ name: 'login' }) |
||||
|
}) |
||||
|
.catch(() => {}) |
||||
|
}) |
||||
|
.catch(() => {}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.main-line { |
||||
|
height: 50px; |
||||
|
background: #eeeeee; |
||||
|
} |
||||
|
</style> |
||||
|
<style lang="scss" src="@/assets/scss/main-shuju.scss" scoped></style> |
||||
|
|
@ -0,0 +1,157 @@ |
|||||
|
<template> |
||||
|
<div |
||||
|
v-loading.fullscreen.lock="loading" |
||||
|
:element-loading-text="$t('loading')" |
||||
|
:class="[ |
||||
|
'g-bd', |
||||
|
{ 'z-sidebar--fold': $store.state.sidebarFold }, |
||||
|
{ |
||||
|
'z-sidebar--noside':true |
||||
|
} |
||||
|
]" |
||||
|
> |
||||
|
<template v-if="!loading"> |
||||
|
<main-navbar ref="ref_navbar" /> |
||||
|
<div class="g-cnt"> |
||||
|
<main-content |
||||
|
v-if="!$store.state.contentIsNeedRefresh" |
||||
|
@changeCustomerName="changeCustomerName" |
||||
|
/> |
||||
|
</div> |
||||
|
</template> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import MainNavbar from './main-navbar' |
||||
|
import MainContent from './main-content' |
||||
|
import debounce from 'lodash/debounce' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import nextTick from 'dai-js/tools/nextTick' |
||||
|
|
||||
|
export default { |
||||
|
provide() { |
||||
|
return { |
||||
|
// 刷新 |
||||
|
refresh() { |
||||
|
this.$store.state.contentIsNeedRefresh = true |
||||
|
this.$nextTick(() => { |
||||
|
this.$store.state.contentIsNeedRefresh = false |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
loading: true, |
||||
|
userType: localStorage.getItem('userType') |
||||
|
} |
||||
|
}, |
||||
|
components: { |
||||
|
MainNavbar, |
||||
|
MainContent, |
||||
|
}, |
||||
|
|
||||
|
watch: { |
||||
|
$route: 'routeHandle' |
||||
|
}, |
||||
|
async created() { |
||||
|
this.windowResizeHandle() |
||||
|
this.routeHandle(this.$route) |
||||
|
Promise.all([this.getWorkUserInfo()]).then(() => { |
||||
|
this.loading = false |
||||
|
}) |
||||
|
}, |
||||
|
computed: {}, |
||||
|
methods: { |
||||
|
changeCustomerName(customerName) { |
||||
|
this.$refs['ref_navbar'].changeCustomerName(customerName) |
||||
|
}, |
||||
|
// 窗口改变大小 |
||||
|
windowResizeHandle() { |
||||
|
this.$store.state.sidebarFold = |
||||
|
document.documentElement['clientWidth'] <= 992 || false |
||||
|
window.addEventListener( |
||||
|
'resize', |
||||
|
debounce(() => { |
||||
|
this.$store.state.sidebarFold = |
||||
|
document.documentElement['clientWidth'] <= 992 || false |
||||
|
}, 150) |
||||
|
) |
||||
|
}, |
||||
|
// 路由, 监听 |
||||
|
routeHandle(route) { |
||||
|
if (!route.meta.isTab) { |
||||
|
return false |
||||
|
} |
||||
|
var tab = this.$store.state.contentTabs.filter( |
||||
|
(item) => item.name === route.name |
||||
|
)[0] |
||||
|
if (!tab) { |
||||
|
tab = { |
||||
|
...window.SITE_CONFIG['contentTabDefault'], |
||||
|
...route.meta, |
||||
|
name: route.name, |
||||
|
params: { ...route.params }, |
||||
|
query: { ...route.query } |
||||
|
} |
||||
|
this.$store.state.contentTabs = |
||||
|
this.$store.state.contentTabs.concat(tab) |
||||
|
} |
||||
|
|
||||
|
this.$store.state.mainShuju.activeName = tab.menuId |
||||
|
this.$store.state.mainShuju.contentTabsActiveName = tab.name |
||||
|
}, |
||||
|
// 获取当前管理员信息 |
||||
|
getUserInfo() { |
||||
|
const url = '/epmetuser/operuser/queryOperUserDto' |
||||
|
|
||||
|
return this.$http |
||||
|
.get(url) |
||||
|
.then(({ data: res }) => { |
||||
|
if (res.code !== 0) { |
||||
|
return this.$message.error(res.msg) |
||||
|
} |
||||
|
|
||||
|
this.$store.state.user.id = res.data.id |
||||
|
this.$store.state.user.realName = res.data.realName |
||||
|
this.$store.state.user.superAdmin = res.data.superAdmin |
||||
|
this.$store.state.user.gender = data.gender |
||||
|
localStorage.setItem('customerId', '') |
||||
|
}) |
||||
|
.catch(() => {}) |
||||
|
}, |
||||
|
// 获取当前管理员信息 |
||||
|
getWorkUserInfo() { |
||||
|
const url = '/epmetuser/customerstaff/staffbasicinfo' |
||||
|
let params = {} |
||||
|
window.app.ajax.post( |
||||
|
url, |
||||
|
params, |
||||
|
(data, rspMsg) => { |
||||
|
this.$store.state.user = { ...data } |
||||
|
// this.$store.state.user.id = data.id |
||||
|
// this.$store.state.user.realName = data.realName |
||||
|
// this.$store.state.user.superAdmin = data.superAdmin |
||||
|
// this.$store.state.user.gender = data.gender |
||||
|
localStorage.setItem('roleList', data.roleList) |
||||
|
localStorage.setItem('customerId', data.customerId) |
||||
|
// this.$store.state.user.roleList = data.roleList |
||||
|
// this.$store.state.user.customerId = data.customerId |
||||
|
}, |
||||
|
(rspMsg, data) => { |
||||
|
this.$message.error(rspMsg) |
||||
|
} |
||||
|
) |
||||
|
// return this.$http.get(url).then(({ data: res }) => { |
||||
|
// if (res.code !== 0) { |
||||
|
// return this.$message.error(res.msg) |
||||
|
// } |
||||
|
|
||||
|
// }).catch(() => { }) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" src="@/assets/scss/main-shuju.scss"></style> |
Loading…
Reference in new issue