405 lines
9.2 KiB
Vue
405 lines
9.2 KiB
Vue
<template>
|
|
<view class="work-container">
|
|
<!--顶部个人信息栏-->
|
|
<view class="header-section ">
|
|
<view class="flex justify-between">
|
|
<view class="flex align-center">
|
|
<view v-if="!avatar" class="cu-avatar xl round bg-white">
|
|
<view class="iconfont icon-people text-gray icon"></view>
|
|
</view>
|
|
<image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round"
|
|
mode="widthFix">
|
|
</image>
|
|
<view v-if="!name" @click="handleToLogin" class="login-tip">
|
|
点击登录
|
|
</view>
|
|
<view v-if="name" @click="handleToInfo" class="user-info">
|
|
<view class="u_title">
|
|
Hi.{{ name }}
|
|
</view>
|
|
<view class="s_text">
|
|
欢迎使用RF
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- <view @click="handleToInfo" class="flex align-center">
|
|
<text>个人信息</text>
|
|
<view class="iconfont icon-right"></view>
|
|
</view> -->
|
|
</view>
|
|
</view>
|
|
<!-- 轮播图 -->
|
|
<swiper class="work-swiper" :class="dotStyle?'square-dot':'round-dot'" :indicator-dots="true" :circular="true"
|
|
:autoplay="true" interval="5000" duration="500">
|
|
<swiper-item v-for="(item,index) in swiperList" :key="index">
|
|
<image :src="item.url" v-if="item.type=='image'"></image>
|
|
<video :src="item.url" autoplay loop muted :show-play-btn="false" :controls="false" objectFit="cover"
|
|
v-if="item.type=='video'"></video>
|
|
</swiper-item>
|
|
</swiper>
|
|
<view class="grid-body">
|
|
<view class="bodytitle">
|
|
业务操作
|
|
</view>
|
|
<view class="bodybox">
|
|
<view v-for="(item,index) in wmsRouter" class="bodyboxitem" :key="index">
|
|
<view class="grid-item-box" @click="navChange(item)">
|
|
<!-- <uni-icons :class='item.icon' size="30"></uni-icons> -->
|
|
<image :src="item.icon" ></image>
|
|
<text class="text">{{item.title}}</text>
|
|
</view>
|
|
</view>
|
|
<view style="width: 140rpx;"></view>
|
|
<view style="width: 140rpx;"></view>
|
|
<view style="width: 140rpx;"></view>
|
|
</view>
|
|
</view>
|
|
<view class="grid-body" v-if="userRoutes.length>0">
|
|
<template v-for="oneMenuList in userRoutes">
|
|
<view class="bodytitle">
|
|
{{oneMenuList.title}}
|
|
</view>
|
|
<view class="bodybox">
|
|
<view v-for="(item,index) in oneMenuList.children" class="bodyboxitem" :key="index">
|
|
<view class="grid-item-box" @click="navChange(item)">
|
|
<uni-icons :class='item.icon' size="30"></uni-icons>
|
|
|
|
<text class="text">{{item.title}}</text>
|
|
</view>
|
|
</view>
|
|
<view style="width: 140rpx;"></view>
|
|
<view style="width: 140rpx;"></view>
|
|
<view style="width: 140rpx;"></view>
|
|
</view>
|
|
</template>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import store from '@/store'
|
|
import {
|
|
data as wmsRouter
|
|
} from "@/static/json/dynamicRouter.json";
|
|
export default {
|
|
data() {
|
|
return {
|
|
wmsRouter,
|
|
name: this.$store.state.user.name,
|
|
swiperList: [
|
|
// {
|
|
// id: 0,
|
|
// type: 'image',
|
|
// url: '/static/images/banner/banner01.jpg'
|
|
// }, {
|
|
// id: 1,
|
|
// type: 'image',
|
|
// url: '/static/images/banner/banner02.jpg',
|
|
// }, {
|
|
// id: 2,
|
|
// type: 'image',
|
|
// url: '/static/images/banner/banner03.jpg'
|
|
// },
|
|
{
|
|
id: 3,
|
|
type: 'image',
|
|
url: '/static/images/banner/banner04.jpg'
|
|
}, {
|
|
id: 4,
|
|
type: 'image',
|
|
url: '/static/images/banner/banner05.jpg'
|
|
}, {
|
|
id: 5,
|
|
type: 'image',
|
|
url: '/static/images/banner/banner06.jpg'
|
|
}, {
|
|
id: 6,
|
|
type: 'image',
|
|
url: '/static/images/banner/banner07.jpg'
|
|
},
|
|
],
|
|
towerStart: 0,
|
|
direction: '',
|
|
dotStyle: true,
|
|
userRoutes: []
|
|
}
|
|
},
|
|
computed: {
|
|
avatar() {
|
|
return this.$store.state.user.avatar
|
|
},
|
|
windowHeight() {
|
|
return uni.getSystemInfoSync().windowHeight - 50
|
|
},
|
|
warehouseinfo() {
|
|
if (Array.isArray(this.warehouse) && this.warehouse.length > 0) {
|
|
return '【' + this.warehouse[0].warehouseCode + '】' + this.warehouse[0].warehouseName
|
|
}
|
|
}
|
|
},
|
|
onLoad() {
|
|
this.TowerSwiper('swiperList');
|
|
this.direction = 'left';
|
|
// 初始化towerSwiper 传已有的数组名即可
|
|
//获取缓存内容
|
|
console.log(store)
|
|
console.log(store.getters.userRoutes)
|
|
this.userRoutes = store.getters.userRoutes;
|
|
},
|
|
methods: {
|
|
changeGrid(e) {
|
|
this.$modal.showToast('模块建设中~')
|
|
console.log(e)
|
|
},
|
|
navChange(e) {
|
|
console.log("navChange", e)
|
|
//todo 校验是否有权限
|
|
var path = e.path;
|
|
console.log(path)
|
|
//this.PageCur = e.currentTarget.dataset.cur
|
|
this.$tab.navigateTo(path)
|
|
},
|
|
// 初始化towerSwiper
|
|
TowerSwiper(name) {
|
|
let list = this[name];
|
|
console.log(list)
|
|
for (let i = 0; i < list.length; i++) {
|
|
list[i].zIndex = parseInt(list.length / 2) + 1 - Math.abs(i - parseInt(list.length / 2))
|
|
list[i].mLeft = i - parseInt(list.length / 2)
|
|
}
|
|
this.swiperList = list
|
|
},
|
|
// towerSwiper触摸开始
|
|
TowerStart(e) {
|
|
console.log(e)
|
|
this.towerStart = e.touches[0].pageX
|
|
},
|
|
// towerSwiper计算方向
|
|
TowerMove(e) {
|
|
this.direction = e.touches[0].pageX - this.towerStart > 0 ? 'right' : 'left'
|
|
},
|
|
// towerSwiper计算滚动
|
|
TowerEnd(e) {
|
|
let direction = this.direction;
|
|
let list = this.swiperList;
|
|
if (direction == 'right') {
|
|
let mLeft = list[0].mLeft;
|
|
console.log(list[0])
|
|
let zIndex = list[0].zIndex;
|
|
for (let i = 1; i < this.swiperList.length; i++) {
|
|
this.swiperList[i - 1].mLeft = this.swiperList[i].mLeft
|
|
this.swiperList[i - 1].zIndex = this.swiperList[i].zIndex
|
|
}
|
|
this.swiperList[list.length - 1].mLeft = mLeft;
|
|
this.swiperList[list.length - 1].zIndex = zIndex;
|
|
} else {
|
|
let mLeft = list[list.length - 1].mLeft;
|
|
let zIndex = list[list.length - 1].zIndex;
|
|
for (let i = this.swiperList.length - 1; i > 0; i--) {
|
|
this.swiperList[i].mLeft = this.swiperList[i - 1].mLeft
|
|
this.swiperList[i].zIndex = this.swiperList[i - 1].zIndex
|
|
}
|
|
this.swiperList[0].mLeft = mLeft;
|
|
this.swiperList[0].zIndex = zIndex;
|
|
}
|
|
this.direction = ""
|
|
this.swiperList = this.swiperList
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
@import url("../../components/colorui/main.css");
|
|
@import url("../../components/colorui/icon.css");
|
|
|
|
/* #ifndef APP-NVUE */
|
|
page {
|
|
display: flex;
|
|
flex-direction: column;
|
|
box-sizing: border-box;
|
|
background-color: #fff;
|
|
min-height: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
view {
|
|
font-size: 14px;
|
|
line-height: inherit;
|
|
}
|
|
|
|
.work-swiper {
|
|
width: 686rpx;
|
|
height: 180rpx;
|
|
margin: 0 auto;
|
|
border-radius: 24rpx;
|
|
|
|
image {
|
|
width: 686rpx;
|
|
height: 180rpx;
|
|
border-radius: 24rpx;
|
|
}
|
|
|
|
video {
|
|
width: 686rpx;
|
|
height: 180rpx;
|
|
border-radius: 24rpx;
|
|
}
|
|
}
|
|
|
|
.header-section {
|
|
padding: 40rpx 32rpx;
|
|
color: white;
|
|
|
|
.login-tip {
|
|
font-size: 18px;
|
|
margin-left: 10px;
|
|
}
|
|
|
|
.cu-avatar {
|
|
width: 80rpx;
|
|
height: 80rpx;
|
|
border: 2px solid #eaeaea;
|
|
border-radius: 24rpx;
|
|
|
|
.icon {
|
|
font-size: 40px;
|
|
}
|
|
}
|
|
|
|
.user-info {
|
|
margin-left: 36rpx;
|
|
|
|
.u_title {
|
|
|
|
color: rgb(255, 255, 255);
|
|
font-family: 苹方-简;
|
|
font-size: 42rpx;
|
|
font-weight: 500;
|
|
line-height: 59rpx;
|
|
letter-spacing: 0%;
|
|
text-align: left;
|
|
}
|
|
|
|
.s_text {
|
|
color: rgb(255, 255, 255);
|
|
font-family: 苹方-简;
|
|
font-size: 24rpx;
|
|
font-weight: 400;
|
|
line-height: 34rpx;
|
|
letter-spacing: 0%;
|
|
text-align: left;
|
|
margin-top: 10rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* #endif */
|
|
.work-container {
|
|
background: linear-gradient(180.00deg, rgb(181, 202, 245) 0%, rgb(184, 204, 245) 40.449%, rgba(213, 227, 249, 0) 87.96%);
|
|
width: 100%;
|
|
height: 90vh;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.text {
|
|
text-align: center;
|
|
font-size: 28rpx;
|
|
font-weight: 400;
|
|
margin-top: 10rpx;
|
|
}
|
|
|
|
.grid-item-box {
|
|
flex: 1;
|
|
/* #ifndef APP-NVUE */
|
|
display: flex;
|
|
/* #endif */
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 15px 0;
|
|
image{
|
|
width: 100rpx;
|
|
height: 100rpx;
|
|
}
|
|
}
|
|
|
|
.uni-margin-wrap {
|
|
width: 690rpx;
|
|
width: 100%;
|
|
;
|
|
}
|
|
|
|
.swiper {
|
|
height: 300rpx;
|
|
}
|
|
|
|
.swiper-box {
|
|
height: 150px;
|
|
}
|
|
|
|
.grid-body {
|
|
width: 686rpx;
|
|
border-radius: 24rpx;
|
|
padding: 32rpx;
|
|
margin: 32rpx auto;
|
|
box-shadow: 0px 4rpx 11rpx 0px rgba(111, 150, 198, 0.09), 0px 4px 84px 0px rgba(130, 154, 190, 0.11);
|
|
background: rgb(255, 255, 255);
|
|
|
|
.bodytitle {
|
|
color: rgb(29, 33, 41);
|
|
font-family: 苹方-简;
|
|
font-size: 32rpx;
|
|
font-weight: 500;
|
|
line-height: 45rpx;
|
|
letter-spacing: 0px;
|
|
text-align: left;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
|
|
.bodybox {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
justify-content: space-evenly;
|
|
}
|
|
|
|
.bodyboxitem {
|
|
width: 140rpx;
|
|
height: 195rpx;
|
|
}
|
|
}
|
|
|
|
.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: 500px) {
|
|
.uni-swiper-dot-box {
|
|
width: 400px;
|
|
/* #ifndef APP-NVUE */
|
|
margin: 0 auto;
|
|
/* #endif */
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.image {
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
.tower-swiper .tower-item {
|
|
transform: scale(calc(0.5 + var(--index) / 10));
|
|
margin-left: calc(var(--left) * 100upx - 150upx);
|
|
z-index: var(--index);
|
|
}
|
|
</style> |