You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

375 lines
8.7 KiB

<template>
<page-meta root-font-size="18px"></page-meta>
<view class="content">
<view class="index_top" style="position: relative;">
<view class="serch" style="height: 50px;">
<uni-search-bar class="flex1" @confirm="search" cancelButton="none" v-model="serchval"
@clear="clearfilterlist">
</uni-search-bar>
<button class="mini-btn index_btn" type="primary" size="mini" @click="search">搜索</button>
</view>
<view style="height: 100rpx;"></view>
</view>
<view class="common_icons">
<view class="common_info">
<view class="common_title">常用菜单</view>
<view class="uni-flex uni-row">
<view class="common_cell" @click="purchasePutawayClick">
<view class="cell_icon">
<image src="../../static/icons_ui/icons_common_sjadd.svg"></image>
</view>
<text class="font_xs">采购上架</text>
</view>
<!-- <view class="common_cell" @click="test">
<view class="cell_icon">
<image src="../../static/icons_ui/icons_common_sjadd.svg"></image>
</view>
<text class="font_xs">声音测试</text>
</view> -->
<!-- <view class="common_cell">
<view class="cell_icon">
<image src="../../static/icons_ui/icons_common_recceipt.svg"></image>
</view>
<text class="font_xs">上架后退货</text>
</view>
<view class="common_cell">
<view class="cell_icon">
<image src="../../static/icons_ui/icons_common_recceipt.svg"></image>
</view>
<text class="font_xs">上架后退货</text>
</view>
<view class="common_cell cell_last">
<view class="cell_icon">
<image src="../../static/icons_ui/icons_common_recceipt.svg"></image>
</view>
<text class="font_xs">上架后退货</text>
</view> -->
</view>
</view>
</view>
<view class="menu" v-if="filterList.length>0">
<view v-for="item in filterList" class="seachlist" @click="openFilterMenu(item.path)">
<view>
<image class="serchpic" mode="aspectFill" :src="item.url"></image>
</view>
<view class="serchtxt">{{ item.name }}</view>
</view>
</view>
<view class="index_menu">
<view class="menu_ab">
<view class="menu_content">
<!-- 标题 -->
<view :class="menuIndex == index ? 'index_title tit_active' : 'index_title'"
v-for="(item,index) in menu" :data-current="index" @click="ontabtap($event,item)">{{item.title}}
</view>
</view>
<!-- 菜单 -->
<view class="index_menuinfo">
<view class="icon_block" v-for="menuItem in selectedMenus" :key="menuItem.id"
@click="openCheck(menuItem.path)">
<text class="index_badge"
v-if="menuItem.JobCount>0">{{menuItem.JobCount>9?'9+':menuItem.JobCount}}</text>
<image :src="menuItem.url"></image>
<text>{{menuItem.name}}</text>
</view>
</view>
</view>
</view>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
mapState
} from 'vuex'
import {
menus,
getJobCountAsync,
testService,
getMenus,
getUserInfo,
getUserInfoAsync,
} from '@/api/index.js'
import {
getJobType
} from '@/common/basic.js'
import comMessage from '@/mycomponents/common/comMessage.vue'
export default {
computed: mapState(['forcedLogin', 'hasLogin', 'userName']),
components: {
comMessage
},
data() {
return {
title: 'WMS仓库管理系统',
indicatorDots: true,
autoplay: true,
interval: 2000,
duration: 500,
serchval: "",
nomore: false,
menu: [],
filterList: [],
menuIndex: 0,
selectedMenus: [],
userMenus: [],
max: 5,
min: 0,
rand: 0,
timer: null
};
},
created() {
},
onLoad() {
let that = this;
let menuIndex = localStorage.getItem('selectMenuIndex');
this.menuIndex = Number(menuIndex);
that.InitData();
that.timerRefresh();
},
onHide() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
},
onShow() {
let that = this;
if (that.timer != null)
return;
//刷新任务菜单数量
uni.showLoading({
title: "刷新中...",
mask: true
});
that.timerRefresh();
uni.hideLoading();
},
mounted() {
uni.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: "#5A7CF3 !important"
})
if (sessionStorage.hasLogin !== 'true') {
uni.showModal({
title: '未登录',
content: '您未登录需要登录后才能继续', //如果需要强制登录,不显示取消按钮
showCancel: !this.forcedLogin,
success: (res) => {
if (res.confirm) {
//如果需要强制登录,使用reLanch方式
if (this.forcedLogin) {
uni.reLaunch({
url: '../login/index'
})
} else {
uni.navigateTo({
url: '../login/index'
})
}
}
}
})
}
},
methods: {
async InitData() {
uni.showLoading({
title: "加载中....",
mask: true
});
let that = this;
// let userWorkgroups = await getWorkgroups();
let param =localStorage.getItem('userId')
let menus = await getMenus(param);
if (menus.length > 0) {
that.userMenus = menus;
that.selectedMenus = menus[this.menuIndex].list;
// that.menu = menus
await that.refreshJobMenu(menus);
} else {
that.menu = null;
}
uni.hideLoading();
},
//刷新任务菜单上的任务数量
async refreshJobMenu(menus) {
//生成随机数
// this.rand = Math.floor(Math.random() * (this.max - this.min + 1)) + this.min
// menus[1].list[2].JobCount = this.rand;
let that = this;
let isToday = this.$isReceiptToday;
let jobItems = await getJobCountAsync(isToday,localStorage.getItem('userId'));
let jobTypes = jobItems.items; //类型
if (menus != null && jobTypes != null) {
for (var g = 0; g < menus.length; g++) {
let group = menus[g];
for (var m = 0; m < group.list.length; m++) {
let menu = group.list[m];
if (menu.countUrl != '' && menu.countUrl != null) {
let jobMenu = jobTypes.find(r => {
return getJobType(r.jobType) == menu.countUrl
})
if (jobMenu != null) {
menu.JobCount = jobMenu.count;
}
}
if (that.menuIndex > 0 && that.menuIndex == g) {
that.selectedMenus = group.list;
}
}
}
}
setTimeout(() => {
that.menu = menus
}, 0);
this.$forceUpdate();
},
search() {
let that = this
that.filterList = []
that.nomore = false
if (that.serchval.length !== 0) {
this.menu.forEach((v) => {
v.list.forEach((i) => {
if (i.name.indexOf(that.serchval) !== -1) {
// console.log("dddd", i)
that.filterList.push(i)
}
})
})
if (that.filterList == 0) {
that.nomore = true
}
}
},
clearfilterlist() {
let that = this;
that.filterList = [];
},
input(v) {
this.serchval = v
this.nomore = false
},
openCheck(url) {
// that.timer
uni.navigateTo({
url: url
});
},
openFilterMenu(url) {
uni.navigateTo({
url: url
});
this.serchval = '';
this.filterList = [];
},
ontabtap(e, item) {
this.selectedMenus = [];
let index = e.target.dataset.current || e.currentTarget.dataset.current;
this.menuIndex = index;
localStorage.setItem('selectMenuIndex', index); //选择的菜单
this.selectedMenus = item.list;
},
// 常用菜单,采购上架
purchasePutawayClick() {
uni.navigateTo({
url: '/pages/putaway/purchasePutaway'
});
},
timerRefresh() {
let that = this;
that.timer = setInterval(async function() {
await that.refreshJobMenu(that.userMenus);
console.log('刷新菜单');
}, 60000)
},
// test() {
// this.ScanErrorAudio();//播放语音
// }
}
};
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background-color: #F4F6F8;
}
.serch {
width: 100%;
display: flex;
/* height: 130upx; */
align-items: center;
}
.seachlist {
display: flex;
padding: 20rpx;
border-bottom: 1px solid #eee;
background: #fff;
}
.serchpic {
width: 60upx;
height: 60upx;
border-radius: 10upx;
}
.serchtxt {
font-size: .825rem;
color: #000000;
padding-left: 20upx;
line-height: 60upx;
}
.flex1 {
flex: 1;
font-size: 18px;
}
.menu {
width: 100%;
float: left;
z-index: 999;
position: fixed;
top: 94px;
background-color: rgba(0, 0, 0, 0.5);
height: 100%;
/* in-height: 300px; */
/* box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); */
}
uni-modal .uni-modal__bd {
padding: 1.3em 1.6em 1.3em;
min-height: 40px;
/* font-size: 15px; */
line-height: 1.4;
/* color: #999; */
max-height: 400px;
overflow-x: hidden;
overflow-y: auto;
}
</style>