Files
rd_mes_uniapp/pages/work/index.vue
2025-12-18 14:11:48 +08:00

409 lines
9.2 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="work-container" style="">
<!-- <uni-nav-bar shadow right-icon="plusempty" @clickRight="rightClick" :fixed="true" :shadow="false"
:border="false" title="工作台" /> -->
<u-sticky>
<!-- <view style="display: flex; width: 100vw;position: absolute;z-index: 1;"> -->
<uni-search-bar style="width: 100%;position: absolute;top: 10px;" bgColor="#FFFFFF" placeholder="请输入搜索内容"
ref="searchBar" cancelButton="none" @focus="goSearchClick" />
<!-- </view> -->
</u-sticky>
<u-back-top :scroll-top="scrollTop" style="bottom: 100px;"></u-back-top>
<view class="uni-flex uni-column">
<view class="flex-item flex-item-V">
<image :src="src" mode="aspectFill" style="width: 100%;height: 200rpx;" />
</view>
</view>
<view v-for="(item, index) in datalist" :key="index">
<u-grid v-if="shouldShowGrid(item.data)" :border="false" col="4"
style="background-color: #fff;margin: 10px 0;border-radius: 3px;">
<uni-title type="h3" :title="item.name" style="margin: 10px 10px;width: 100%;flex: auto;"></uni-title>
<u-grid-item v-for="(data,dataIndex) in item.data" :key="dataIndex" @click="selectgrid(data)"
v-if="checkPermi([data.permission])">
<uni-icons v-if="data.icon.includes('icon')" class="uni-icons"
:style="{'background': data.color,'-webkit-background-clip': 'text','-webkit-text-fill-color': 'transparent',}"
custom-prefix="iconfont" :type="data.icon" color="transparent" size="30" />
<uni-icons v-else class="uni-icons" :type="data.icon"
:style="{'background': data.color,'-webkit-background-clip': 'text','-webkit-text-fill-color': 'transparent'}"
color="transparent" size="30" />
<text class="text">{{data.style.navigationBarTitleText}}</text>
</u-grid-item>
</u-grid>
</view>
<!-- <u-picker :show="showMenu" @close="Menuclose" @confirm="confirm" @cancel="cancel" :columns="columns"
:closeOnClickOverlay="true"></u-picker> -->
<u-action-sheet :actions="columns" @select="confirm" cancelText="取消" @close="cancel" title="请选择模式"
:show="showMenu" :closeOnClickOverlay="true"></u-action-sheet>
<u-action-sheet :actions="list" @select="selectTask" cancelText='取消' @close="close" :closeOnClickOverlay="true"
:closeOnClickAction="true" description='请选择任务' :show="show"></u-action-sheet>
<u-action-sheet :actions="invQuicklist" @select="selectTask" cancelText='取消' @close="invQuickclose"
:closeOnClickOverlay="true" :closeOnClickAction="true" description='请选择盘点类型'
:show="invQuickshow"></u-action-sheet>
<!-- <view>
<u-sticky>
<u-tabs
:current="currentTab"
:list="datalist"
@click="handleTabClick"
></u-tabs>
</u-sticky>
<view v-for="(item, index) in datalist" :key="index"> -->
<!-- 锚点内容 -->
<!-- <view :id="'section'+index" class="section">
<view class="grid-body" style="background-color: #fff;margin: 10px 0;border-radius: 3px;">
<uni-title type="h3" :title="item.name" style="margin-left: 10px;"></uni-title>
<uni-grid :column="4" :showBorder="false" @change="changeGrid10" :open="true" v-for="(data,dataIndex) in item.data">
<uni-grid-item :index="dataIndex+1" >
<view class="grid-item-box" style="">
<uni-icons class="uni-icons" custom-prefix="iconfont" :type="data.icon" :color="data.color" size="30"></uni-icons>
</view>
<text class="text">{{data.style.navigationBarTitleText}}</text>
</uni-grid-item>
</uni-grid>
</view>
</view>
</view>
</view> -->
</view>
</template>
<script>
import {
version
} from "vue"
import datalist from "./indexList.json"
import {
checkPermi,
checkRole
} from "@/utils/permission";
export default {
mounted() {
// #ifdef APP-PLUS
var version = plus.runtime.version;
// #endif
},
components: {},
data() {
return {
invQuickshow: false,
showMenu: false,
scrollTop: 0,
src: '/static/images/banner/mes_banner.jpg',
datalist: datalist,
show: false,
list: [{
name: '保养任务',
path: '/pages/tpm/maintainTask'
},
{
name: '点检任务',
path: '/pages/tpm/checkTask'
},
{
name: '维修任务',
path: '/pages/tpm/repairTask'
}
],
invQuicklist: [{
name: '快速盘点',
path: '/pages/wms/stock/addInvQuick?key=1'
},
{
name: '期初盘点',
path: '/pages/wms/stock/addInvQuick?key=2'
}
],
// 右边菜单内容
options: [{
value: 'update',
text: '选修'
},
{
value: 'forbit',
text: '禁止'
}
],
// columns: [
// ['常规功能', 'MES智能终端']
// ],
columns: [{
name: '常规功能',
path: '/pages/work/index'
},
{
name: 'MES智能终端',
path: '/pages/work/mesIT'
},
],
}
},
onPageScroll(e) {
this.scrollTop = e.scrollTop;
},
methods: {
shouldShowGrid(dataList) {
for (const data of dataList) {
if (this.checkPermi([data.permission])) {
return true; // 如果有一个u-grid-item可以显示则显示u-grid
}
}
return false; // 如果没有一个u-grid-item可以显示则不显示u-grid
},
checkPermi,
Menuclose() {
this.showMenu = false
},
confirm(e) {
console.log(e)
// if (e.value == '常规功能') {
// this.$tab.reLaunch('/pages/work/index');
// } else if (e.value == 'MES智能终端') {
// this.$tab.reLaunch('/pages/work/mesIT');
// }
this.$tab.reLaunch(e.path);
},
cancel() {
this.showMenu = false
},
onNavigationBarButtonTap(e) {
console.log(e, "1231")
this.showMenu = !this.showMenu;
},
rightClick() {
console.log('rightClick');
},
selectgrid(item) {
if (item) {
if (item.path) {
this.$tab.navigateTo(item.path);
} else if (item.style.navigationBarTitleText == '任务查看') {
this.show = true;
} else if (item.style.navigationBarTitleText == '新增快速盘点') {
this.invQuickshow = true;
}
}
},
goSearchClick() {
this.$tab.navigateTo("/pages/work/searchIndex/searchIndex");
},
selectTask(e) {
console.log(e, "e");
this.$tab.navigateTo(e.path);
},
close() {
this.show = false;
},
invQuickclose() {
this.invQuickshow = false;
}
}
}
</script>
<style lang="scss">
.menu {
position: fixed;
top: 44px;
right: 0;
width: 120px;
background-color: #fff;
border: 1px solid #ccc;
}
.wrap {
height: 200vh;
}
.work-container {
// background: white;
min-height: 50vh;
}
.tabs {
position: sticky;
z-index: 970;
top: 0px;
background-color: #fff;
width: 100vw;
.tabsStyle {
box-shadow: 0 2rpx 6rpx 0 rgba(153, 153, 153, 0.2);
::v-deep {
.u-tabs {
box-shadow: 0px 4px 6px 0 rgba(153, 153, 153, 0.2);
}
}
}
}
/* #ifndef APP-NVUE */
page {
display: flex;
flex-direction: column;
box-sizing: border-box;
// background-color: #fff;
min-height: 100%;
height: auto;
}
view {
// font-size: 20px;
line-height: inherit;
}
/* #endif */
.text {
text-align: center;
// font-size: 30rpx;
margin-top: 10px;
// color: #fff;
position: relative;
bottom: 10px;
font-weight: bold;
}
.grid-item-box {
flex: 1;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
align-items: center;
justify-content: center;
// padding: 15px 0;
margin: 10px 21px;
// background-color: #0F6C8E;
border-radius: 7px;
}
.uni-margin-wrap {
width: 690rpx;
width: 100%;
;
}
.swiper {
height: 300rpx;
}
.swiper-box {
height: 150px;
}
.swiper-item {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
height: 300rpx;
line-height: 300rpx;
}
@media screen and (min-width: 320px) {
.uni-swiper-dot-box {
width: 400px;
/* #ifndef APP-NVUE */
margin: 0 auto;
/* #endif */
margin-top: 8px;
}
.image {
width: 100%;
}
}
//竖屏
@media screen and (min-width: 600px) and (orientation:portrait) {
.grid-item-box {
margin: 20px 40px;
}
.text {
bottom: 10px;
}
.uni-icons {
font-size: 50px !important;
}
}
//横屏
@media screen and (min-width: 600px) and (orientation:landscape) {
// .uni-swiper-dot-box {
// width: 400px;
// /* #ifndef APP-NVUE */
// margin: 0 auto;
// /* #endif */
// margin-top: 8px;
// }
.image {
width: 100%;
}
.grid-item-box {
margin: 50px 70px;
}
.text {
bottom: 10px;
font-size: 24px
}
.uni-icons {
font-size: 60px !important;
}
::v-deep .uni-btn-icon {
font-size: 60px !important;
}
::v-deep .uniui-search {
font-size: 40px
}
::v-deep .uni-h3 {
font-size: 24px;
}
::v-deep .uni-searchbar__box {
height: 50px;
}
::v-deep.uni-searchbar__text-placeholder {
font-size: 24px
}
::v-deep .u-action-sheet__header__title {
font-size: 24px
}
::v-deep .u-icon__icon .uicon-close {
font-size: 35px
}
::v-deep.u-action-sheet__item-wrap__item__name {
font-size: 24px
}
.u-action-sheet__cancel-text {
font-size: 24px
}
}
</style>