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. 6
      src/views/main-navbar.vue
  5. 107
      src/views/main-sidebar.vue
  6. 11
      src/views/main.vue
  7. 2
      src/views/modules/sys/language/common.vue
  8. 56
      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) export const removeUserFavorite = data => createAPI('userFavorite/remove',"POST",data)

8
src/store/modules/user.js

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

10
src/views/common/login.vue

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

6
src/views/main-navbar.vue

@ -145,7 +145,7 @@
}, },
userName: { userName: {
get() { get() {
return this.$store.state.user.name
return this.$store.state.user.userDisplay
} }
} }
}, },
@ -206,7 +206,9 @@
color: #fff; color: #fff;
margin-left: -45px; margin-left: -45px;
} }
.el-menu--horizontal>.el-menu-item {
color: #3b4249;
}
</style> </style>

107
src/views/main-sidebar.vue

@ -53,6 +53,7 @@
import SubMenu from './main-sidebar-sub-menu' import SubMenu from './main-sidebar-sub-menu'
import {isURL} from '@/utils/validate' import {isURL} from '@/utils/validate'
import {userFavoriteList} from '@/api/userFavorite.js' import {userFavoriteList} from '@/api/userFavorite.js'
import {treeDataTranslate} from '@/utils'
export default { export default {
data() { data() {
@ -61,7 +62,9 @@ export default {
search: '', search: '',
categoryList: [], categoryList: [],
uFavoriteList: [], uFavoriteList: [],
favoriteList: []
favoriteList: [],
newMenuList: [],
list: []
} }
}, },
components: { components: {
@ -117,81 +120,95 @@ export default {
$route: 'routeHandle' $route: 'routeHandle'
}, },
created() { 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.userFavorites()
this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]') this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]')
this.routeHandle(this.$route) this.routeHandle(this.$route)
}, },
methods: { methods: {
// //
userFavorites(){
userFavorites() {
let query = { 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 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 // 1 start
searchMenu1() { searchMenu1() {
if (this.search == "") { if (this.search == "") {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]').filter(item => item.menuId != 73)
} else { } 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) // this.menuList = this.treeFindPath(this.menuList).filter(this.search)
// list
this.list = this.treeFindPath(this.menuList)
let list = this.treeFindPath(this.menuList) let list = this.treeFindPath(this.menuList)
list = this.distinct(list, list); list = this.distinct(list, list);
// list
this.menuList = list.filter(item => item.name.indexOf(this.search) != -1) 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 = []) { treeFindPath(tree, path = []) {
if (!tree) return [] if (!tree) return []
for (const data of tree) { for (const data of tree) {
path.push(data) 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) this.treeFindPath(data.list, path)
} }
return path return path
}, },
// 1 end
// 1
distinct(a, b) { distinct(a, b) {
return Array.from(new Set([...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) { routeHandle(route) {
if (route.meta.isTab) { if (route.meta.isTab) {
@ -222,10 +239,10 @@ export default {
} }
} }
</script> </script>
<style >
<style>
.menu .el-input__inner { .menu .el-input__inner {
background: transparent; background: transparent;
width: 100px;
width: 195px;
font-size: 12px; font-size: 12px;
color: #FFFFFF; color: #FFFFFF;
border: #0BB2D4; border: #0BB2D4;

11
src/views/main.vue

@ -59,6 +59,14 @@
site: { site: {
get () { return this.$store.state.user.site }, get () { return this.$store.state.user.site },
set (val) { this.$store.commit('user/updateSite', val) } 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 () { created () {
@ -86,7 +94,8 @@
this.loading = false this.loading = false
this.userId = data.user.userId this.userId = data.user.userId
this.userName = data.user.username 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: { methods: {
// //
printReport(){ printReport(){
alert(this.decimalUtil.mul(0.999999999,0.1123))
alert( this.$store.state.user.site)
// //
// const LODOP = getLodop() // const LODOP = getLodop()
// if (LODOP) { // if (LODOP) {

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

@ -7,7 +7,6 @@
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <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: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-item>
</el-form> </el-form>
<el-table <el-table
@ -16,19 +15,6 @@
v-loading="dataListLoading" v-loading="dataListLoading"
@selection-change="selectionChangeHandle" @selection-change="selectionChangeHandle"
style="width: 100%;"> 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 <el-table-column
prop="username" prop="username"
header-align="center" header-align="center"
@ -53,8 +39,8 @@
align="center" align="center"
label="状态"> label="状态">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -71,8 +57,12 @@
width="150" width="150"
label="操作"> label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<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')" 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> <a v-if="isAuth('sys:user:delete')" type="text" size="small" @click="deleteHandle(scope.row.userId)">删除</a>
</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -114,6 +104,38 @@
this.getDataList() this.getDataList()
}, },
methods: { 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 () { getDataList () {
this.dataListLoading = true this.dataListLoading = true
@ -163,7 +185,7 @@
var userIds = id ? [id] : this.dataListSelections.map(item => { var userIds = id ? [id] : this.dataListSelections.map(item => {
return item.userId return item.userId
}) })
this.$confirm(`确定对[id=${userIds.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
this.$confirm(`确定删除选中的数据`, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'

Loading…
Cancel
Save