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">
<div class="site-sidebar__inner">
<el-menu
:default-active="menuActiveName || 'home'"
:collapse="sidebarFold"
:collapseTransition="false"
class="site-sidebar__menu">
<el-menu-item style=" padding-left: 15px;" class="menu">
<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 index="home" @click="$router.push({ name: 'home' })">
<icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
@ -35,6 +36,14 @@
: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>
</aside>
@ -43,13 +52,16 @@
<script>
import SubMenu from './main-sidebar-sub-menu'
import {isURL} from '@/utils/validate'
import {userFavoriteList} from '@/api/userFavorite.js'
export default {
data() {
return {
dynamicMenuRoutes: [],
search: '',
categoryList: []
categoryList: [],
uFavoriteList: [],
favoriteList: []
}
},
components: {
@ -85,6 +97,7 @@ export default {
},
mainTabs: {
get() {
return this.$store.state.common.mainTabs
},
set(val) {
@ -104,11 +117,24 @@ export default {
$route: 'routeHandle'
},
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.routeHandle(this.$route)
},
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
searchMenu1() {
@ -194,7 +220,7 @@ export default {
}
}
</script>
<style>
<style >
.menu .el-input__inner {
background: transparent;
width: 100px;

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

@ -32,7 +32,6 @@
:disabled="dataListSelections.length <= 0">{{ buttons.deleteList}}
</el-button>
</el-form-item>
<el-form-item>
<el-select filterable v-model="querySysLanguagePack.languageCode" clearable>
<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>
</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-table
:data="dataList"
@ -229,10 +235,12 @@
getTableDefaultListLanguage,
getTableUserListLanguage
} from "@/api/table.js"
import {userFavoriteList,saveUserFavorite,removeUserFavorite} from '@/api/userFavorite.js'
export default {
data() {
return {
//
favorite: false,
addLanguage: false,
functionId: 9001,
tableId: "common1001",
@ -539,6 +547,42 @@
this.getLanguageList()
},
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) {
saveSysLanguageOne(val).then(({data}) => {
@ -783,10 +827,11 @@
this.getTableUserColumn()
this.getSysLanguageParamList()
this.getFunctionButtonList()
this.favoriteIsOk()
}
}
</script>
<style>
<style >
.sl-input {
background-color: transparent;
border: 0 !important;
@ -802,5 +847,9 @@
outline: none;
}
.sl-svg{
overflow: hidden;
margin-left: 520px;
}
</style>

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

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

Loading…
Cancel
Save