Browse Source

菜单搜索

master
[li_she] 5 years ago
parent
commit
d1a0722aaa
  1. 1
      src/api/userFavorite.js
  2. 8
      src/store/modules/user.js
  3. 10
      src/views/common/login.vue
  4. 8
      src/views/main-navbar.vue
  5. 119
      src/views/main-sidebar.vue
  6. 11
      src/views/main.vue
  7. 2
      src/views/modules/sys/language/common.vue
  8. 60
      src/views/modules/sys/user.vue

1
src/api/userFavorite.js

@ -9,3 +9,4 @@ export const saveUserFavorite = data => createAPI('userFavorite/save',"POST",da
// 取消收藏
export const removeUserFavorite = data => createAPI('userFavorite/remove',"POST",data)

8
src/store/modules/user.js

@ -4,6 +4,8 @@ export default {
id: 0,
name: '',
site: 0,
languageDefault: '',
userDisplay: ''
},
mutations: {
updateId (state, id) {
@ -12,8 +14,14 @@ export default {
updateName (state, name) {
state.name = name
},
updateLanguageDefault (state,languageDefault){
state.languageDefault = languageDefault
},
updateSite (state,site){
state.site = site
},
updateUserDisplay (state,userDisplay){
state.userDisplay = userDisplay
}
}
}

10
src/views/common/login.vue

@ -48,9 +48,13 @@
}
},
created () {
this.userName();
},
methods: {
//
userName(){
this.dataForm.userName = localStorage.getItem('userName')
},
//
dataFormSubmit () {
this.$refs['dataForm'].validate((valid) => {
@ -62,7 +66,6 @@
'username': this.dataForm.userName,
'password': this.dataForm.password,
'uuid': this.dataForm.uuid
})
}).then(({data}) => {
if (data && data.code === 0) {
@ -70,15 +73,14 @@
this.$router.replace({ name: 'home' })
localStorage.setItem('locale', data.language)
localStorage.setItem('refresh', "0")
localStorage.setItem('userName', this.dataForm.userName)
} else {
this.$message.error(data.msg)
}
})
}
})
},
}
}
</script>

8
src/views/main-navbar.vue

@ -6,7 +6,7 @@
class="site-navbar__menu"
mode="horizontal">
<el-menu-item class="site-navbar__switch" index="0" @click="sidebarFold = !sidebarFold">
<icon-svg name="zhedie"></icon-svg>
<icon-svg name="zhedie"></icon-svg>
</el-menu-item>
</el-menu>
<a class="site-navbar__brand-lg" href="javascript:;" >{{$t('commonSystemName')}}</a>
@ -145,7 +145,7 @@
},
userName: {
get() {
return this.$store.state.user.name
return this.$store.state.user.userDisplay
}
}
},
@ -206,7 +206,9 @@
color: #fff;
margin-left: -45px;
}
.el-menu--horizontal>.el-menu-item {
color: #3b4249;
}
</style>

119
src/views/main-sidebar.vue

@ -37,12 +37,12 @@
:dynamicMenuRoutes="dynamicMenuRoutes">
</sub-menu>
<sub-menu
v-for="menu in this.favoriteList"
:key="menu.menuId"
:menu="menu"
:dynamicMenuRoutes="dynamicMenuRoutes">
</sub-menu>
<sub-menu
v-for="menu in this.favoriteList"
:key="menu.menuId"
:menu="menu"
:dynamicMenuRoutes="dynamicMenuRoutes">
</sub-menu>
</el-menu>
</div>
@ -53,6 +53,7 @@
import SubMenu from './main-sidebar-sub-menu'
import {isURL} from '@/utils/validate'
import {userFavoriteList} from '@/api/userFavorite.js'
import {treeDataTranslate} from '@/utils'
export default {
data() {
@ -61,7 +62,9 @@ export default {
search: '',
categoryList: [],
uFavoriteList: [],
favoriteList: []
favoriteList: [],
newMenuList: [],
list: []
}
},
components: {
@ -117,81 +120,95 @@ export default {
$route: 'routeHandle'
},
created() {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId!=73)
this.favoriteList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId==73)
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId != 73)
this.favoriteList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId == 73)
this.userFavorites()
this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]')
this.routeHandle(this.$route)
},
methods: {
//
userFavorites(){
userFavorites() {
let query = {
userId:this.$store.state.user.id,
languageCode:this.$i18n.locale
userId: this.$store.state.user.id,
languageCode: this.$i18n.locale
}
userFavoriteList(query).then(({data})=> {
if (data.list.length>0){
userFavoriteList(query).then(({data}) => {
if (data.list.length > 0) {
this.favoriteList[0].list = data.list
}
})
},
// id
getParent(val, sum) {
if (val == 0) {
return;
}
let parent = this.list.filter(item => item.menuId == val)
if (parent.length > 0) {
parent[0].list.length = 0
sum.push(parent[0])
this.getParent(parent[0].parentId, sum)
}
},
// 1 start
searchMenu1() {
if (this.search == "") {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId != 73)
} else {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
let menuPlus = []
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId != 73)
// this.menuList = this.treeFindPath(this.menuList).filter(this.search)
// list
this.list = this.treeFindPath(this.menuList)
let list = this.treeFindPath(this.menuList)
list = this.distinct(list, list);
// list
this.menuList = list.filter(item => item.name.indexOf(this.search) != -1)
let menuSum = []
for (let data of this.menuList) {
menuSum.push(data)
this.getParent(data.parentId, menuSum)
}
menuSum = Array.from(new Set([...menuSum]))
if (menuSum.length > 0) {
let menuList = menuSum.filter(item => item.parentId == 0);
this.menuList=menuList
this.treeList(menuList,menuSum)
}
}
},
// list
//
treeList(menuList,menuSum) {
for (let m1 of menuList) {
for (let m2 of menuSum) {
if (m1.menuId == m2.parentId){
m1.list.push(m2)
this.treeList( m1.list,menuSum)
}
}
}
},
// 1 list
treeFindPath(tree, path = []) {
if (!tree) return []
for (const data of tree) {
path.push(data)
if (data.list != null) {
path.push(...data.list)
delete data.list
}
// if (data.list != null) {
// path.push(...data.list)
// delete data.list
// }
this.treeFindPath(data.list, path)
}
return path
},
// 1 end
// 1
distinct(a, b) {
return Array.from(new Set([...a, ...b]))
},
// 2 start
searchMenu() {
if (this.search == "") {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
} else {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
this.menuList = this.filterTree(this.menuList,this.search)
console.log(this.menuList)
}
},
filterTree (tree = [], map , arr = []) {
if (!tree.length)
return []
for (let item of tree) {
if (map.indexOf(item.name)>-1){
}
continue
let node = {...item, list: []}
arr.push(node)
if (item.list && item.list.length)
this.filterTree(item.list, map, node.list) }
return arr
},
//
routeHandle(route) {
if (route.meta.isTab) {
@ -222,10 +239,10 @@ export default {
}
}
</script>
<style >
<style>
.menu .el-input__inner {
background: transparent;
width: 100px;
width: 195px;
font-size: 12px;
color: #FFFFFF;
border: #0BB2D4;

11
src/views/main.vue

@ -59,6 +59,14 @@
site: {
get () { return this.$store.state.user.site },
set (val) { this.$store.commit('user/updateSite', val) }
},
languageDefault: {
get () { return this.$store.state.user.languageDefault },
set (val) { this.$store.commit('user/updateLanguageDefault', val) }
},
userDisplay: {
get () { return this.$store.state.user.userDisplay },
set (val) { this.$store.commit('user/updateUserDisplay', val) }
}
},
created () {
@ -86,7 +94,8 @@
this.loading = false
this.userId = data.user.userId
this.userName = data.user.username
this.site = data.user.site
this.languageDefault = data.user.languageDefault
this.userDisplay = data.user.userDisplay
}
})
}

2
src/views/modules/sys/language/common.vue

@ -476,7 +476,7 @@ import column from "../../common/column";
methods: {
//
printReport(){
alert(this.decimalUtil.mul(0.999999999,0.1123))
alert( this.$store.state.user.site)
//
// const LODOP = getLodop()
// if (LODOP) {

60
src/views/modules/sys/user.vue

@ -7,7 +7,6 @@
<el-form-item>
<el-button @click="getDataList()">查询</el-button>
<el-button v-if="isAuth('sys:user:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
<el-button v-if="isAuth('sys:user:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
</el-form-item>
</el-form>
<el-table
@ -16,19 +15,6 @@
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
prop="userId"
header-align="center"
align="center"
width="80"
label="ID">
</el-table-column>
<el-table-column
prop="username"
header-align="center"
@ -53,8 +39,8 @@
align="center"
label="状态">
<template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small" type="danger">禁用</el-tag>
<el-tag v-else size="small">正常</el-tag>
<span v-if="scope.row.status === 0" size="small" type="danger">禁用</span>
<span v-else size="small" type="primary">正常</span>
</template>
</el-table-column>
<el-table-column
@ -71,8 +57,12 @@
width="150"
label="操作">
<template slot-scope="scope">
<a v-if="isAuth('sys:user:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.userId)">修改</a>
<a v-if="isAuth('sys:user:delete')" type="text" size="small" @click="deleteHandle(scope.row.userId)">删除</a>
<span v-if="scope.row.userId !==1">
<a v-if="isAuth('sys:user:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.userId)">修改</a>
<!-- <a v-if="isAuth('sys:user:update')&&scope.row.status==1 " type="text" size="small" @click="updateHandle(scope.row.userId,0)">禁用</a>-->
<!-- <a v-if="isAuth('sys:user:update')&&scope.row.status==0 " type="text" size="small" @click="updateHandle(scope.row.userId,1)">启用</a>-->
<a v-if="isAuth('sys:user:delete')" type="text" size="small" @click="deleteHandle(scope.row.userId)">删除</a>
</span>
</template>
</el-table-column>
</el-table>
@ -114,6 +104,38 @@
this.getDataList()
},
methods: {
//
updateHandle(id,status){
let user = {
userId: id,
status: status
}
this.$confirm(status==0?`确定禁用选中的用户`:`确定启用选中的用户`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl('/sys/user/updateUserStatus'),
method: 'post',
data: this.$http.adornData(user, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList()
}
})
} else {
this.$message.error(data.msg)
}
})
}).catch(() => {})
},
//
getDataList () {
this.dataListLoading = true
@ -163,7 +185,7 @@
var userIds = id ? [id] : this.dataListSelections.map(item => {
return item.userId
})
this.$confirm(`确定对[id=${userIds.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
this.$confirm(`确定删除选中的数据`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'

Loading…
Cancel
Save