Merge remote-tracking branch 'origin/feature-ui-fix' into feature-ui-fix
This commit is contained in:
@@ -205,9 +205,9 @@ jero :
|
|||||||
uploadType: local
|
uploadType: local
|
||||||
path :
|
path :
|
||||||
#文件上传根目录 设置
|
#文件上传根目录 设置
|
||||||
upload: D://opt//upFiles
|
upload: G://opt//upFiles
|
||||||
#webapp文件路径
|
#webapp文件路径
|
||||||
webapp: D://opt//webapp
|
webapp: G://opt//webapp
|
||||||
shiro:
|
shiro:
|
||||||
excludeUrls: /test/jeroDemo/demo3,/test/jeroDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
|
excludeUrls: /test/jeroDemo/demo3,/test/jeroDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
|
||||||
#阿里云oss存储配置
|
#阿里云oss存储配置
|
||||||
|
|||||||
Vendored
+5
-2
@@ -2352,7 +2352,9 @@ i.trigger:hover {
|
|||||||
background-color: white;
|
background-color: white;
|
||||||
}
|
}
|
||||||
.sider.light .logo {
|
.sider.light .logo {
|
||||||
background-color: @primary-color !important;
|
//顶部logo背景的颜色变化 注释
|
||||||
|
//background-color: @primary-color !important;
|
||||||
|
background-color: #001529 !important;
|
||||||
box-shadow: 1px 1px 0 0 #e8e8e8;
|
box-shadow: 1px 1px 0 0 #e8e8e8;
|
||||||
}
|
}
|
||||||
.sider.light .logo h1 {
|
.sider.light .logo h1 {
|
||||||
@@ -5347,7 +5349,8 @@ form .ant-upload {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
.ant-menu-submenu > .ant-menu {
|
.ant-menu-submenu > .ant-menu {
|
||||||
background-color: #fff;
|
//background-color: #fff;
|
||||||
|
background: none;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
|
.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.4 KiB |
@@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
|
||||||
<a-layout-sider
|
<a-layout-sider
|
||||||
:class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null ]"
|
:class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null ]"
|
||||||
width="208px"
|
width="208px"
|
||||||
@@ -15,6 +16,8 @@
|
|||||||
:mode="mode"
|
:mode="mode"
|
||||||
:style="smenuStyle">
|
:style="smenuStyle">
|
||||||
</s-menu>
|
</s-menu>
|
||||||
|
<!-- <div style='width: 100px;height:100px;background: pink'></div>-->
|
||||||
|
<img src='../../assets/bgImg.png' alt='' class='bgImg'>
|
||||||
</a-layout-sider>
|
</a-layout-sider>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
@@ -149,29 +152,75 @@ export default {
|
|||||||
|
|
||||||
<!-- update_begin author:sunjianlei date:20190530 for: 选中首页的时候不显示背景颜色 -->
|
<!-- update_begin author:sunjianlei date:20190530 for: 选中首页的时候不显示背景颜色 -->
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
|
.sider.light {
|
||||||
|
background-color: #001529 !important;
|
||||||
|
}
|
||||||
|
.bgImg {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 208px;
|
||||||
|
z-index: -1;
|
||||||
|
transition: width 1.5s linear 1s;
|
||||||
|
}
|
||||||
|
.ant-layout-sider-children{
|
||||||
|
//background-color: #001529;
|
||||||
|
background: none;
|
||||||
|
|
||||||
|
}
|
||||||
|
.ant-menu{
|
||||||
|
color: hsla(0, 0%, 100%, 0.8);;
|
||||||
|
background: none;
|
||||||
|
|
||||||
|
li ,a{
|
||||||
|
color:hsla(0, 0%, 100%, 0.8)!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
|
||||||
|
background-color: @primary-color !important;
|
||||||
|
}
|
||||||
|
.ant-menu-submenu > .ant-menu {
|
||||||
|
background: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
.ant-menu.ant-menu-root {
|
.ant-menu.ant-menu-root {
|
||||||
|
background: none;
|
||||||
|
|
||||||
|
//li {
|
||||||
|
// background-color: #001529;
|
||||||
|
// & > a{
|
||||||
|
// color: #fff;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
& > .ant-menu-item:first-child {
|
& > .ant-menu-item:first-child {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
||||||
& > a, & > a:hover {
|
& > a, & > a:hover {
|
||||||
color: rgba(0, 0, 0, 0.65);
|
//color: rgba(0, 0, 0, 0.65);
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.ant-menu-item-selected {
|
&.ant-menu-item-selected {
|
||||||
& > a, & > a:hover {
|
& > a, & > a:hover {
|
||||||
color: @primary-color;
|
color: @primary-color;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.ant-menu-dark > .ant-menu-item:first-child {
|
&.ant-menu-dark > .ant-menu-item:first-child {
|
||||||
& > a, & > a:hover {
|
& > a, & > a:hover {
|
||||||
color: rgba(255, 255, 255, 0.65);
|
//color: rgba(255, 255, 255, 0.65);
|
||||||
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.ant-menu-item-selected {
|
&.ant-menu-item-selected {
|
||||||
& > a, & > a:hover {
|
& > a, & > a:hover {
|
||||||
color: rgba(255, 255, 255, 1);
|
//color: rgba(255, 255, 255, 1);
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,18 @@
|
|||||||
:type="collapsed ? 'menu-unfold' : 'menu-fold'"
|
:type="collapsed ? 'menu-unfold' : 'menu-fold'"
|
||||||
@click="toggle"/>
|
@click="toggle"/>
|
||||||
|
|
||||||
<span v-if="device === 'desktop'">欢迎进入 Jero-Boot 平台</span>
|
<!-- <span v-if="device === 'desktop'">欢迎进入 Jero-Boot 平台</span>-->
|
||||||
<span v-else>Jero-Boot</span>
|
<!-- <span v-else>Jero-Boot</span>-->
|
||||||
|
<span class='bread'>
|
||||||
|
<a-breadcrumb class="breadcrumb">
|
||||||
|
<a-breadcrumb-item v-for="(item, index) in breadList" :key="index">
|
||||||
|
<router-link v-if="item.name !== name" :to="{ path: item.path }">
|
||||||
|
{{ item.meta.title }}
|
||||||
|
</router-link>
|
||||||
|
<span v-else>{{ item.meta.title }}</span>
|
||||||
|
</a-breadcrumb-item>
|
||||||
|
</a-breadcrumb>
|
||||||
|
</span>
|
||||||
|
|
||||||
<user-menu :theme="theme"/>
|
<user-menu :theme="theme"/>
|
||||||
</div>
|
</div>
|
||||||
@@ -26,7 +36,7 @@
|
|||||||
<div v-else :class="['top-nav-header-index', theme]">
|
<div v-else :class="['top-nav-header-index', theme]">
|
||||||
<div class="header-index-wide">
|
<div class="header-index-wide">
|
||||||
<div class="header-index-left" :style="topMenuStyle.headerIndexLeft">
|
<div class="header-index-left" :style="topMenuStyle.headerIndexLeft">
|
||||||
<logo class="top-nav-header" :show-title="device !== 'mobile'" :style="topMenuStyle.topNavHeader"/>
|
<!-- <logo class="top-nav-header" :show-title="device !== 'mobile'" :style="topMenuStyle.topNavHeader"/>-->
|
||||||
<div v-if="device !== 'mobile'" :style="topMenuStyle.topSmenuStyle">
|
<div v-if="device !== 'mobile'" :style="topMenuStyle.topSmenuStyle">
|
||||||
<s-menu
|
<s-menu
|
||||||
mode="horizontal"
|
mode="horizontal"
|
||||||
@@ -34,6 +44,7 @@
|
|||||||
:theme="theme"
|
:theme="theme"
|
||||||
@updateMenuTitle="handleUpdateMenuTitle"
|
@updateMenuTitle="handleUpdateMenuTitle"
|
||||||
></s-menu>
|
></s-menu>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<a-icon
|
<a-icon
|
||||||
v-else
|
v-else
|
||||||
@@ -90,6 +101,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
breadList:[],
|
||||||
headerBarFixed: false,
|
headerBarFixed: false,
|
||||||
// update-begin--author:sunjianlei---date:20190508------for: 顶部导航栏过长时显示更多按钮-----
|
// update-begin--author:sunjianlei---date:20190508------for: 顶部导航栏过长时显示更多按钮-----
|
||||||
topMenuStyle: {
|
topMenuStyle: {
|
||||||
@@ -122,9 +134,20 @@ export default {
|
|||||||
if (this.mode === 'topmenu') {
|
if (this.mode === 'topmenu') {
|
||||||
this.buildTopMenuStyle()
|
this.buildTopMenuStyle()
|
||||||
}
|
}
|
||||||
|
this.getBreadcrumb()
|
||||||
// update-end--author:sunjianlei---date:20190508------for: 顶部导航栏过长时显示更多按钮-----
|
// update-end--author:sunjianlei---date:20190508------for: 顶部导航栏过长时显示更多按钮-----
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getBreadcrumb () {
|
||||||
|
this.breadList = []
|
||||||
|
// this.breadList.push({name: 'index', path: '/dashboard/', meta: {title: '首页'}})
|
||||||
|
|
||||||
|
this.name = this.$route.name
|
||||||
|
this.$route.matched.forEach((item) => {
|
||||||
|
// item.name !== 'index' && this.breadList.push(item)
|
||||||
|
this.breadList.push(item)
|
||||||
|
})
|
||||||
|
},
|
||||||
handleScroll () {
|
handleScroll () {
|
||||||
if (this.autoHideHeader) {
|
if (this.autoHideHeader) {
|
||||||
const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
|
const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
|
||||||
@@ -171,6 +194,17 @@ export default {
|
|||||||
@height: 59px;
|
@height: 59px;
|
||||||
|
|
||||||
.layout {
|
.layout {
|
||||||
|
.bread {
|
||||||
|
display: inline-block;
|
||||||
|
.ant-breadcrumb {
|
||||||
|
a {
|
||||||
|
color:#efefef;
|
||||||
|
}
|
||||||
|
span{
|
||||||
|
color: #1D2129;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.top-nav-header-index {
|
.top-nav-header-index {
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<div class="page-header-index-wide">
|
<div class="page-header-index-wide">
|
||||||
<a-breadcrumb class="breadcrumb">
|
<!-- <a-breadcrumb class="breadcrumb">-->
|
||||||
<a-breadcrumb-item v-for="(item, index) in breadList" :key="index">
|
<!-- <a-breadcrumb-item v-for="(item, index) in breadList" :key="index">-->
|
||||||
<router-link v-if="item.name !== name" :to="{ path: item.path }">
|
<!-- <router-link v-if="item.name !== name" :to="{ path: item.path }">-->
|
||||||
{{ item.meta.title }}
|
<!-- {{ item.meta.title }}-->
|
||||||
</router-link>
|
<!-- </router-link>-->
|
||||||
<span v-else>{{ item.meta.title }}</span>
|
<!-- <span v-else>{{ item.meta.title }}</span>-->
|
||||||
</a-breadcrumb-item>
|
<!-- </a-breadcrumb-item>-->
|
||||||
</a-breadcrumb>
|
<!-- </a-breadcrumb>-->
|
||||||
|
|
||||||
<div class="detail">
|
<div class="detail">
|
||||||
<div class="main" v-if="!$route.meta.hiddenHeaderContent">
|
<div class="main" v-if="!$route.meta.hiddenHeaderContent">
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
title: {
|
title: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'Jero-Boot Pro',
|
default: 'Design System',
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
showTitle: {
|
showTitle: {
|
||||||
@@ -58,7 +58,8 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.light .logo {
|
&.light .logo {
|
||||||
background-color: @primary-color;
|
//background-color: @primary-color;
|
||||||
|
background-color: #001529;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
<div class="user-wrapper" :class="theme">
|
<div class="user-wrapper" :class="theme">
|
||||||
<!-- update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
|
<!-- update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
|
||||||
<!-- update-begin author:sunjianlei date:20191@20 for: 解决全局样式冲突的问题 -->
|
<!-- update-begin author:sunjianlei date:20191@20 for: 解决全局样式冲突的问题 -->
|
||||||
<span class="action" @click="showClick">
|
<!-- <span class="action" @click="showClick">-->
|
||||||
<a-icon type="search"></a-icon>
|
<!-- <a-icon type="search"></a-icon>-->
|
||||||
</span>
|
<!-- </span>-->
|
||||||
<!-- update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 -->
|
<!-- update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 -->
|
||||||
<component :is="searchMenuComp" v-show="searchMenuVisible || isMobile()" class="borders" :visible="searchMenuVisible" title="搜索菜单" :footer="null" @cancel="searchMenuVisible=false">
|
<!-- <component :is="searchMenuComp" v-show="searchMenuVisible || isMobile()" class="borders" :visible="searchMenuVisible" title="搜索菜单" :footer="null" @cancel="searchMenuVisible=false">-->
|
||||||
<a-select
|
<a-select
|
||||||
class="search-input"
|
class="search-input"
|
||||||
showSearch
|
showSearch
|
||||||
@@ -20,9 +20,10 @@
|
|||||||
@change="searchMethods"
|
@change="searchMethods"
|
||||||
@blur="hiddenClick"
|
@blur="hiddenClick"
|
||||||
>
|
>
|
||||||
|
<a-icon slot="suffixIcon" type="search" />
|
||||||
<a-select-option v-for="(site,index) in searchMenuOptions" :key="index" :value="site.id">{{site.meta.title}}</a-select-option>
|
<a-select-option v-for="(site,index) in searchMenuOptions" :key="index" :value="site.id">{{site.meta.title}}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</component>
|
<!-- </component>-->
|
||||||
<!-- update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 -->
|
<!-- update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 -->
|
||||||
<!-- update-end author:sunjianlei date:20191220 for: 解决全局样式冲突的问题 -->
|
<!-- update-end author:sunjianlei date:20191220 for: 解决全局样式冲突的问题 -->
|
||||||
<!-- update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
|
<!-- update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
|
||||||
@@ -266,15 +267,16 @@ export default {
|
|||||||
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
|
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
|
||||||
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
|
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
|
||||||
.user-wrapper .search-input {
|
.user-wrapper .search-input {
|
||||||
width: 180px;
|
width: 210px;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
|
|
||||||
/deep/ .ant-select-selection {
|
/deep/ .ant-select-selection {
|
||||||
background-color: inherit;
|
background-color: #F7F8FA !important;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-bottom: 1px solid white;
|
border-bottom: 1px solid white;
|
||||||
|
color: #86909C ;
|
||||||
&__placeholder, &__field__placeholder {
|
&__placeholder, &__field__placeholder {
|
||||||
color: inherit;
|
color: #86909C ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,11 +50,13 @@
|
|||||||
|
|
||||||
import { postAction } from '@/api/manage'
|
import { postAction } from '@/api/manage'
|
||||||
import { mapActions } from 'vuex'
|
import { mapActions } from 'vuex'
|
||||||
|
import { JSEncrypt } from 'jsencrypt'
|
||||||
|
import { getRSAPublicKey } from '@/utils/encryption.js'
|
||||||
export default {
|
export default {
|
||||||
name: 'UserPassword',
|
name: 'UserPassword',
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
rsaPublicKey: '',
|
||||||
passwordType1: 'password',
|
passwordType1: 'password',
|
||||||
passwordType2: 'password',
|
passwordType2: 'password',
|
||||||
passwordType3: 'password',
|
passwordType3: 'password',
|
||||||
@@ -118,30 +120,48 @@ export default {
|
|||||||
this.disableSubmit = false
|
this.disableSubmit = false
|
||||||
this.selectedRole = []
|
this.selectedRole = []
|
||||||
},
|
},
|
||||||
|
// 获取RSA公钥
|
||||||
|
getPublicKey () {
|
||||||
|
// 获取公钥
|
||||||
|
getRSAPublicKey().then(res => {
|
||||||
|
this.rsaPublicKey = res.result
|
||||||
|
})
|
||||||
|
},
|
||||||
handleOk () {
|
handleOk () {
|
||||||
const that = this
|
const that = this
|
||||||
// 触发表单验证
|
// 触发表单验证
|
||||||
this.form.validateFields((err, values) => {
|
getRSAPublicKey().then(res => {
|
||||||
if (!err) {
|
this.rsaPublicKey = res.result
|
||||||
that.confirmLoading = true
|
this.form.validateFields((err, values) => {
|
||||||
const params = Object.assign({ username: this.username }, values)
|
if (!err) {
|
||||||
console.log('修改密码提交数据', params)
|
that.confirmLoading = true
|
||||||
postAction(this.url, params).then((res) => {
|
const params = Object.assign({ username: this.username, rsaPublicKey:this.rsaPublicKey}, values)
|
||||||
if (res.success) {
|
console.log('修改密码提交数据', params)
|
||||||
console.log(res)
|
const encrypt = new JSEncrypt()
|
||||||
that.$message.success(res.message)
|
encrypt.setPublicKey(this.rsaPublicKey)
|
||||||
that.close()
|
// 公钥加密
|
||||||
that.Logout().then(()=>{
|
params.confirmpassword = encrypt.encrypt(values.confirmpassword)
|
||||||
window.location.replace('/user/login')
|
params.password = encrypt.encrypt(values.password)
|
||||||
})
|
params.oldpassword = encrypt.encrypt(values.oldpassword)
|
||||||
} else {
|
|
||||||
that.$message.warning(res.message)
|
postAction(this.url, params).then((res) => {
|
||||||
}
|
if (res.success) {
|
||||||
}).finally(() => {
|
console.log(res)
|
||||||
that.confirmLoading = false
|
that.$message.success(res.message)
|
||||||
})
|
that.close()
|
||||||
}
|
that.Logout().then(()=>{
|
||||||
|
window.location.replace('/user/login')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
that.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
that.confirmLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
validateToNextPassword (rule, value, callback) {
|
validateToNextPassword (rule, value, callback) {
|
||||||
const form = this.form
|
const form = this.form
|
||||||
|
|||||||
Reference in New Issue
Block a user