hldy_app_mini/pages/Warehouse/warehome.vue

628 lines
13 KiB
Vue
Raw 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>
<view class="home">
<image class="all-home" src="/static/index/warehouse/newhome/setting.png" mode="aspectFit"></image>
</view>
<view class="right-title">
<image class="title-imge" src="/static/index/indeximage.png" mode="aspectFit"></image>
<view class="title-font">
{{ uni.getStorageSync('nuName') }}
</view>
</view>
<view class="paizi tp">
<donghua width="18vw" height="18vw" :interval="300" :links="paiziarray" :playing="playall" :loop="true" />
</view>
<view class="jiankong tp" @click="housactive(3)">
<donghua width="17vw" height="17vw" :interval="150" :links="jiankongarray" :playing="playall"
:loop="true" />
</view>
<view class="jiankongtag tp" @click="housactive(3)">
<view class="blue-bgc">
监控室
<view class="triangle-middle"></view>
</view>
<image class="blue-imge" src="/static/index/warehouse/home/z.png" mode=""></image>
</view>
<view class="wanjie tp" @click="housactive(4)">
<donghua width="18vw" height="18vw" :interval="300" :links="wanjiearray" :playing="playall" :loop="true" />
</view>
<view class="wanjietag tp" @click="housactive(4)">
<view class="blue-bgc">
完结
<view class="triangle-middle"></view>
</view>
<image class="blue-imge" src="/static/index/warehouse/home/z.png" mode=""></image>
</view>
<view class="caigou tp" @click="housactive(0)">
<donghua width="18vw" height="18vw" :interval="150" :links="caigouarray" :playing="playall" :loop="true" />
</view>
<view class="caigoutag tp" @click="housactive(0)">
<view class="blue-bgc">
采购
<view class="triangle-middle"></view>
</view>
<image class="blue-imge" src="/static/index/warehouse/home/z.png" mode=""></image>
</view>
<view class="ruku tp">
<donghua width="11vw" height="11vw" :interval="300" :links="rukuarray" :playing="playall" :loop="true" />
</view>
<view class="chuku tp">
<donghua width="11vw" height="11vw" :interval="300" :links="rukuarray" :playing="playall" :loop="true" />
</view>
<view class="jianhuo tp">
<donghua width="40vw" height="40vw" :interval="150" :links="jianhuoarray" :playing="playall" :loop="true" />
</view>
<view class="pandan tp">
<image src="/static/index/warehouse/newhome/count.png" mode="widthFix"></image>
</view>
<view class="pandantag tp">
<view class="gray-bgc">
库存盘点
<view class="triangle-left"></view>
<view class="triangle-left-bgc"></view>
</view>
</view>
<view class="return tp" @click="housactive(8)">
<image src="/static/index/warehouse/newhome/return.png" mode="widthFix"></image>
</view>
<view class="leadtag tp" @click="housactive(8)">
<view class="gray-bgc">
退货入库
<view class="triangle-left"></view>
<view class="triangle-left-bgc"></view>
</view>
</view>
<view class="lead tp" @click="housactive(7)">
<image src="/static/index/warehouse/newhome/lead.png" mode="widthFix"></image>
</view>
<view class="returntag tp" @click="housactive(7)">
<view class="gray-bgc">
请领出库
<view class="triangle-left"></view>
<view class="triangle-left-bgc"></view>
</view>
</view>
<view class="picking tp" @click="housactive(2)">
<image src="/static/index/warehouse/newhome/picking.png" mode="widthFix"></image>
</view>
<view class="pickingtag tp" @click="housactive(2)">
<view class="blue-bgc">
拣货
<view class="triangle-left-bgc"></view>
</view>
</view>
<view :style="moverStyle">
<image style="width: 100%;height: 100%;" :src="cararray[cartarget]" mode="widthFix"></image>
</view>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick } from 'vue';
const cararray =
genPaths(
'/static/index/warehouse/newhome/',
'train',
10, // 张数
'png',
1, // 起始索引为 1
false // 不补零
)
const cartarget = ref(0)
const paiziarray =
genPaths(
'/static/index/warehouse/newhome/',
'logo',
3, // 张数
'png',
1, // 起始索引为 1
false // 不补零
)
const jiankongarray =
genPaths(
'/static/index/warehouse/newhome/',
'monitor',
8, // 张数
'png',
0, // 起始索引为 1
false // 不补零
)
const wanjiearray =
genPaths(
'/static/index/warehouse/newhome/',
'end',
6, // 张数
'png',
0, // 起始索引为 1
false // 不补零
)
const caigouarray = genPaths(
'/static/index/warehouse/newhome/',
'purchase',
8, // 张数
'png',
0, // 起始索引为 1
false // 不补零
)
const rukuarray = genPaths(
'/static/index/warehouse/newhome/',
'unit1-',
5, // 张数
'png',
0, // 起始索引为 1
false // 不补零
)
const jianhuoarray = genPaths(
'/static/index/warehouse/newhome/',
'Warehouse',
8, // 张数
'png',
1, // 起始索引为 1
false // 不补零
)
const playall = ref(false);
onMounted(() => {
playall.value = true;
ceshi()
})
const housedex = ref(0);
const navurl = ref('')
const housactive = (index : number) => {
console.log(index)
housedex.value = index;
if (index == 0) {
navurl.value = 'pages/procurement/material'
uni.navigateTo({
url: '/' + navurl.value
})
}
if (index == 1) {
navurl.value = 'pages/Warehouse/paymoney'
uni.navigateTo({
url: '/' + navurl.value
})
}
if (index == 2) {
navurl.value = 'pages/Warehouse/picking'
uni.navigateTo({
url: '/' + navurl.value
})
}
if (index === 3) {
uni.navigateTo({
url: "/pages/watch/full"
})
}
if (index == 4) {
navurl.value = 'pages/Warehouse/finish'
uni.navigateTo({
url: '/' + navurl.value
})
}
if (index == 7) {
navurl.value = 'pages/procurement/outbound?code=0'
uni.navigateTo({
url: '/' + navurl.value
})
}
if (index == 8) {
navurl.value = 'pages/procurement/outbound?code=1'
uni.navigateTo({
url: '/' + navurl.value
})
}
}
function genPaths(base, prefix, count, ext = 'png', startIndex = 0, pad = false) {
return Array.from({ length: count }, (_, i) => {
const idx = pad
? String(i + startIndex).padStart(2, '0')
: i + startIndex
return `${base}/${prefix}${idx}.${ext}`
})
}
// 当前坐标px
const x = ref(63)
const y = ref(59)
// 默认过渡时长s
const duration = ref(0.7)
const easing = 'linear' // 柔和的 easing
// 样式绑定translate3d + transitionGPU 加速)
const moverStyle = computed(() => {
return {
position: 'fixed',
left: '0',
top: '0',
width: '7vw', // 图片宽高按需改
height: '7vw',
transform: `translate3d(${x.value}vw, ${y.value}vw, 0)`,
transition: `transform ${duration.value}s ${easing}`,
willChange: 'transform'
}
})
// 调用函数moveTo(pxX, pxY, seconds)
function moveTo(pxX, pxY, seconds = 0.6) {
// 设置时长(秒),然后直接改坐标
duration.value = seconds
x.value = pxX
y.value = pxY
}
const ceshi = () => {
moveTo(21, 43, 3);
cartarget.value = 0
setTimeout(() => {
cartarget.value = 1
moveTo(21, 40, 0.5); // 6 秒后执行这个
}, 3000);
setTimeout(() => {
cartarget.value = 2
moveTo(34, 31.5, 2); // 6 秒后执行这个
}, 3500);
setTimeout(() => {
cartarget.value = 3
moveTo(38, 30, 0.5); // 6 秒后执行这个
}, 5500);
setTimeout(() => {
cartarget.value = 4
moveTo(65, 39, 3); // 6 秒后执行这个
}, 6000);
setTimeout(() => {
cartarget.value = 5
moveTo(93, 20, 3); // 6 秒后执行这个
}, 9000);
setTimeout(() => {
cartarget.value = 6
moveTo(92, 16, 0.5); // 6 秒后执行这个
}, 12000);
setTimeout(() => {
cartarget.value = 7
moveTo(91, 15, 0.5); // 6 秒后执行这个
}, 12500);
setTimeout(() => {
cartarget.value = 8
moveTo(48, 0.5, 3); // 6 秒后执行这个
}, 13000);
setTimeout(() => {
cartarget.value = 9
moveTo(-11, 35, 4); // 6 秒后执行这个
}, 16000);
setTimeout(() => {
cartarget.value = 0
moveTo(63, 59, 0.0001);
}, 20000);
setTimeout(() => {
ceshi()
}, 21000);
}
</script>
<style scoped lang="less">
.home {
width: 100vw;
height: 100vh;
overflow: hidden;
position: fixed;
z-index: 0;
.all-home {
width: 100%;
height: 100%;
}
}
.tp {
image {
width: 100%;
height: 100%;
}
}
.paizi {
width: 18vw;
height: 18vw;
position: fixed;
bottom: 0.3vw;
left: 10vw;
}
.jiankong {
width: 17vw;
height: 17vw;
position: fixed;
top: 1.5vw;
left: 12vw;
z-index: 50;
}
.wanjie {
width: 18vw;
height: 18vw;
position: fixed;
top: 19vw;
left: 12vw;
z-index: 50;
}
.pandan {
width: 9.3vw;
height: 9.3vw;
position: fixed;
top: 23vw;
left: 29vw;
z-index: 50;
}
.caigou {
width: 18vw;
height: 18vw;
position: fixed;
top: 34vw;
left: 37vw;
z-index: 50;
}
.ruku {
width: 11vw;
height: 11vw;
position: fixed;
bottom: 9vw;
right: 17vw;
z-index: 50;
}
.chuku {
width: 11vw;
height: 11vw;
position: fixed;
bottom: 20.5vw;
right: 2.5vw;
z-index: 50;
}
.return {
width: 7vw;
height: 7vw;
position: fixed;
bottom: 8.8vw;
right: 25vw;
z-index: 50;
}
.lead {
width: 7vw;
height: 7vw;
position: fixed;
bottom: 20vw;
right: 10vw;
z-index: 50;
}
.jianhuo {
width: 40vw;
height: 40vw;
position: fixed;
top: 0vw;
right: 23vw;
z-index: 50;
}
.picking {
width: 12vw;
height: 12vw;
position: fixed;
top: 24vw;
right: 27vw;
z-index: 50;
}
.blue-bgc {
background: linear-gradient(to right, #0385fa, #0195f3);
border: 1rpx solid #fff;
width: 6.2vw;
height: 2.8vw;
font-size: 28rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 2vw;
color: #fff;
position: relative;
.triangle-middle {
position: absolute;
top: 2.6vw;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: 0.5vw solid transparent;
border-right: 0.5vw solid transparent;
border-top: 0.5vw solid #0385fa;
}
.triangle-left-bgc{
position: absolute;
top: 2.68vw;
left: 1.17vw;
width: 0;
height: 0;
/* 左上是直角的三角形 —— 只要两个边有颜色 */
border-top: 0.45vw solid #0385fa;
/* 上边 */
border-left: 0.55vw solid #0385fa;
/* 左边 */
/* 另外两个边透明(保持三角形形状) */
border-right: 0.55vw solid transparent;
border-bottom: 0.55vw solid transparent;
}
}
.gray-bgc {
background: #e4efff;
border: 1rpx solid #60a1ff;
width: 7.5vw;
height: 2.8vw;
font-size: 26rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 2vw;
color: #0385fa;
position: relative;
.triangle-left-bgc{
position: absolute;
top: 2.68vw;
left: 1.17vw;
width: 0;
height: 0;
/* 左上是直角的三角形 —— 只要两个边有颜色 */
border-top: 0.45vw solid #60a1ff;
/* 上边 */
border-left: 0.55vw solid #60a1ff;
/* 左边 */
/* 另外两个边透明(保持三角形形状) */
border-right: 0.55vw solid transparent;
border-bottom: 0.55vw solid transparent;
}
.triangle-left {
position: absolute;
top: 2.68vw;
left: 1.2vw;
width: 0;
height: 0;
/* 左上是直角的三角形 —— 只要两个边有颜色 */
border-top: 0.4vw solid #e4efff;
/* 上边 */
border-left: 0.5vw solid #e4efff;
/* 左边 */
/* 另外两个边透明(保持三角形形状) */
border-right: 0.5vw solid transparent;
border-bottom: 0.5vw solid transparent;
z-index: 1;
}
}
.jiankongtag {
position: fixed;
top: 2.8vw;
left: 16vw;
z-index: 51;
.blue-imge {
position: absolute;
top: 2.2vw;
left: 50%;
transform: translateX(-50%);
width: 3vw;
height: 5vw;
}
}
.pickingtag{
position: fixed;
top: 24vw;
left: 67vw;
z-index: 51;
.blue-imge {
position: absolute;
top: 2.2vw;
left: 50%;
transform: translateX(-50%);
width: 3vw;
height: 5vw;
}
}
.wanjietag {
position: fixed;
top: 22vw;
left: 18vw;
z-index: 51;
.blue-imge {
position: absolute;
top: 2.2vw;
left: 50%;
transform: translateX(-50%);
width: 3vw;
height: 5vw;
}
}
.caigoutag {
position: fixed;
top: 36vw;
left: 42vw;
z-index: 51;
.blue-imge {
position: absolute;
top: 2.2vw;
left: 50%;
transform: translateX(-50%);
width: 3vw;
height: 5vw;
}
}
.pandantag {
position: fixed;
top: 22vw;
left: 35.5vw;
z-index: 51;
}
.returntag {
position: fixed;
top: 32.5vw;
left: 84vw;
z-index: 51;
}
.leadtag{
position: fixed;
top: 44vw;
left: 71vw;
z-index: 51;
}
.right-title{
position: fixed;
right: 2vw;
top: 3vw;
display: flex;
align-items: center;
.title-imge{
width: 2vw;
height: 2vw;
// margin-top: -0.3vw;
}
.title-font{
font-size: 30rpx;
// margin-left: 3vw;
font-weight: 600;
}
}
// <view class="right-title">
// <image class="title-imge" src="/static/index/indeximage.png" mode="aspectFit"></image>
// <view class="title-font">
// {{ uni.getStorageSync('nuName') }}
// </view>
// </view>
</style>