Browse Source

搜索菜单

master
[li_she] 5 years ago
parent
commit
29ecdd94ce
  1. 11
      src/api/userFavorite.js
  2. 36
      src/views/main-sidebar.vue
  3. 55
      src/views/modules/sys/language/common.vue
  4. 1
      src/views/modules/sys/menu-language.vue

11
src/api/userFavorite.js

@ -0,0 +1,11 @@
import { createAPI } from "@/utils/httpRequest.js";
// 收藏列表
export const userFavoriteList = data => createAPI('userFavorite/userFavoriteList/'+data.userId+'/'+data.languageCode,"GET",data)
// 收藏
export const saveUserFavorite = data => createAPI('userFavorite/save',"POST",data)
// 取消收藏
export const removeUserFavorite = data => createAPI('userFavorite/remove',"POST",data)

36
src/views/main-sidebar.vue

@ -2,14 +2,15 @@
<aside class="site-sidebar" :class="'site-sidebar--' + sidebarLayoutSkin"> <aside class="site-sidebar" :class="'site-sidebar--' + sidebarLayoutSkin">
<div class="site-sidebar__inner"> <div class="site-sidebar__inner">
<el-menu <el-menu
:default-active="menuActiveName || 'home'" :default-active="menuActiveName || 'home'"
:collapse="sidebarFold" :collapse="sidebarFold"
:collapseTransition="false" :collapseTransition="false"
class="site-sidebar__menu"> class="site-sidebar__menu">
<el-menu-item style=" padding-left: 15px;" class="menu"> <el-menu-item style=" padding-left: 15px;" class="menu">
<span slot="title"> <el-input v-model="search" placeholder="搜索" <span slot="title"> <el-input v-model="search" placeholder="搜索"
@keyup.enter.native="searchMenu"></el-input></span>
<i type="primary" class="el-icon-search" @click="searchMenu()"></i>
@keyup.enter.native="searchMenu1"></el-input></span>
<i type="primary" class="el-icon-search" @click="searchMenu1()"></i>
</el-menu-item> </el-menu-item>
<el-menu-item index="home" @click="$router.push({ name: 'home' })"> <el-menu-item index="home" @click="$router.push({ name: 'home' })">
<icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg> <icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
@ -35,6 +36,14 @@
:menu="menu" :menu="menu"
:dynamicMenuRoutes="dynamicMenuRoutes"> :dynamicMenuRoutes="dynamicMenuRoutes">
</sub-menu> </sub-menu>
<sub-menu
v-for="menu in this.favoriteList"
:key="menu.menuId"
:menu="menu"
:dynamicMenuRoutes="dynamicMenuRoutes">
</sub-menu>
</el-menu> </el-menu>
</div> </div>
</aside> </aside>
@ -43,13 +52,16 @@
<script> <script>
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'
export default { export default {
data() { data() {
return { return {
dynamicMenuRoutes: [], dynamicMenuRoutes: [],
search: '', search: '',
categoryList: []
categoryList: [],
uFavoriteList: [],
favoriteList: []
} }
}, },
components: { components: {
@ -85,6 +97,7 @@ export default {
}, },
mainTabs: { mainTabs: {
get() { get() {
return this.$store.state.common.mainTabs return this.$store.state.common.mainTabs
}, },
set(val) { set(val) {
@ -104,11 +117,24 @@ export default {
$route: 'routeHandle' $route: 'routeHandle'
}, },
created() { created() {
this.menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]')
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.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]')
this.routeHandle(this.$route) this.routeHandle(this.$route)
}, },
methods: { methods: {
//
userFavorites(){
let query = {
userId:this.$store.state.user.id,
languageCode:this.$i18n.locale
}
userFavoriteList(query).then(({data})=> {
this.favoriteList[0].list = data.list
})
},
// 1 start // 1 start
searchMenu1() { searchMenu1() {
@ -194,7 +220,7 @@ export default {
} }
} }
</script> </script>
<style>
<style >
.menu .el-input__inner { .menu .el-input__inner {
background: transparent; background: transparent;
width: 100px; width: 100px;

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

@ -32,7 +32,6 @@
:disabled="dataListSelections.length <= 0">{{ buttons.deleteList}} :disabled="dataListSelections.length <= 0">{{ buttons.deleteList}}
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-select filterable v-model="querySysLanguagePack.languageCode" clearable> <el-select filterable v-model="querySysLanguagePack.languageCode" clearable>
<el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList " <el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList "
@ -43,6 +42,13 @@
<el-button type="primary" @click="addLanguageFun()">{{buttons.add}} <el-button type="primary" @click="addLanguageFun()">{{buttons.add}}
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item >
<span @click="favoriteFunction()">
<icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg" ></icon-svg>
</span>
</el-form-item>
</el-form> </el-form>
<el-table <el-table
:data="dataList" :data="dataList"
@ -229,10 +235,12 @@
getTableDefaultListLanguage, getTableDefaultListLanguage,
getTableUserListLanguage getTableUserListLanguage
} from "@/api/table.js" } from "@/api/table.js"
import {userFavoriteList,saveUserFavorite,removeUserFavorite} from '@/api/userFavorite.js'
export default { export default {
data() { data() {
return { return {
//
favorite: false,
addLanguage: false, addLanguage: false,
functionId: 9001, functionId: 9001,
tableId: "common1001", tableId: "common1001",
@ -539,6 +547,42 @@
this.getLanguageList() this.getLanguageList()
}, },
methods: { methods: {
//
favoriteIsOk(){
let userFavorite ={
userId:this.$store.state.user.id,
languageCode:this.$i18n.locale
}
userFavoriteList(userFavorite).then(({data}) =>{
let size = data.list.filter(item => item.userId==userFavorite.menuId).length;
if (size>0){
this.favorite = true
}else {
this.favorite = false
}
})
},
// OR
favoriteFunction(){
let userFavorite ={
userId: this.$store.state.user.id,
functionId: this.$route.meta.menuId,
}
if (this.favorite){
//
removeUserFavorite(userFavorite).then(({data})=>{
this.$message.success(data.msg)
this.favorite = false
})
}else {
//
saveUserFavorite(userFavorite).then(({data})=>{
this.$message.success(data.msg)
this.favorite = true
})
}
},
// //
saveLanguageList(val) { saveLanguageList(val) {
saveSysLanguageOne(val).then(({data}) => { saveSysLanguageOne(val).then(({data}) => {
@ -783,10 +827,11 @@
this.getTableUserColumn() this.getTableUserColumn()
this.getSysLanguageParamList() this.getSysLanguageParamList()
this.getFunctionButtonList() this.getFunctionButtonList()
this.favoriteIsOk()
} }
} }
</script> </script>
<style>
<style >
.sl-input { .sl-input {
background-color: transparent; background-color: transparent;
border: 0 !important; border: 0 !important;
@ -802,5 +847,9 @@
outline: none; outline: none;
} }
.sl-svg{
overflow: hidden;
margin-left: 520px;
}
</style> </style>

1
src/views/modules/sys/menu-language.vue

@ -76,6 +76,7 @@ export default {
saveMenuLanguage(val).then(({data})=>{ saveMenuLanguage(val).then(({data})=>{
if (data.code == 0){ if (data.code == 0){
this.$message.success(data.msg) this.$message.success(data.msg)
this.$emit('refreshDataList')
}else { }else {
this.$message.error(data.msg) this.$message.error(data.msg)
} }

Loading…
Cancel
Save