Files
rd_mes_uniapp_deprecated/pages/work/index.vue

409 lines
9.2 KiB
Vue
Raw Normal View History

2025-11-17 10:01:33 +08:00
<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)
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);
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>