hldy_app_mini/pages/Warehouse/warehome.vue

688 lines
14 KiB
Vue
Raw Normal View History

2025-12-01 17:13:29 +08:00
<template>
<view>
2025-12-05 10:09:24 +08:00
<view class="home">
<image class="all-home" src="/static/index/warehouse/newhome/setting.png" mode="aspectFit"></image>
</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" />
2025-12-01 17:13:29 +08:00
</view>
2025-12-05 10:09:24 +08:00
<view class="chuku tp">
<donghua width="11vw" height="11vw" :interval="300" :links="rukuarray" :playing="playall" :loop="true" />
2025-12-01 17:13:29 +08:00
</view>
2025-12-05 10:09:24 +08:00
<view class="jianhuo tp">
<donghua width="40vw" height="40vw" :interval="150" :links="jianhuoarray" :playing="playall" :loop="true" />
2025-12-01 17:13:29 +08:00
</view>
2025-12-05 10:09:24 +08:00
<view class="pandan tp">
<image src="/static/index/warehouse/newhome/count.png" mode="widthFix"></image>
2025-12-01 17:13:29 +08:00
</view>
2025-12-05 10:09:24 +08:00
<view class="pandantag tp">
<view class="gray-bgc">
库存盘点
<view class="triangle-left"></view>
<view class="triangle-left-bgc"></view>
</view>
2025-12-01 17:13:29 +08:00
</view>
2025-12-05 10:09:24 +08:00
<view class="return tp" @click="housactive(8)">
<image src="/static/index/warehouse/newhome/return.png" mode="widthFix"></image>
2025-12-01 17:13:29 +08:00
</view>
2025-12-05 10:09:24 +08:00
<view class="leadtag tp" @click="housactive(8)">
<view class="gray-bgc">
退货入库
<view class="triangle-left"></view>
<view class="triangle-left-bgc"></view>
2025-12-01 17:13:29 +08:00
</view>
</view>
2025-12-05 10:09:24 +08:00
<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>
2025-12-01 17:13:29 +08:00
</view>
</view>
2025-12-05 10:09:24 +08:00
<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>
2025-12-01 17:13:29 +08:00
</view>
</view>
2025-12-05 10:09:24 +08:00
<view :style="moverStyle">
<image style="width: 100%;height: 100%;" :src="cararray[cartarget]" mode="widthFix"></image>
</view>
2025-12-01 17:13:29 +08:00
</view>
</template>
<script setup lang="ts">
2025-12-02 13:34:13 +08:00
import { ref, onMounted, reactive, onBeforeUnmount, computed, nextTick } from 'vue';
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
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()
})
2025-12-01 17:13:29 +08:00
const housedex = ref(0);
const navurl = ref('')
const housactive = (index : number) => {
console.log(index)
housedex.value = index;
2025-12-05 10:09:24 +08:00
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
})
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
if (index === 3) {
uni.navigateTo({
url: "/pages/watch/full"
})
}
if (index == 4) {
navurl.value = 'pages/Warehouse/finish'
uni.navigateTo({
url: '/' + navurl.value
})
}
2025-12-05 16:13:49 +08:00
if (index == 8) {
navurl.value = 'pages/procurement/retstock'
2025-12-05 10:09:24 +08:00
uni.navigateTo({
url: '/' + navurl.value
})
}
2025-12-05 16:13:49 +08:00
if (index == 7) {
2025-12-05 10:09:24 +08:00
navurl.value = 'pages/procurement/outbound?code=1'
uni.navigateTo({
url: '/' + navurl.value
})
}
2025-12-01 17:13:29 +08:00
}
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}`
})
}
2025-12-05 10:09:24 +08:00
// const animArray = ref([
// {
// url: genPaths(
// '/static/index/warehouse/home/',
// 'Procurement',
// 5, // 张数
// 'png',
// 0, // 起始索引为 1
// false // 不补零
// ),
// width: '22.3vw',
// height: '13.6vw'
// },
// {
// url: genPaths(
// '/static/index/warehouse/home',
// 'inventory',
// 4, // 张数
// 'png',
// 0, // 起始索引为 1
// false // 不补零
// ),
// width: '11vw',
// height: '10vw'
// },
// {
// url: genPaths(
// '/static/index/warehouse/home',
// 'pick',
// 4, // 张数
// 'png',
// 0, // 起始索引为 1
// false // 不补零
// ),
// width: '11vw',
// height: '9vw'
// },
// {
// url: genPaths(
// '/static/index/warehouse/home',
// 'unit1-',
// 5, // 张数
// 'png',
// 0, // 起始索引为 1
// false // 不补零
// ),
// width: '14.3vw',
// height: '13vw'
// },
// {
// url: genPaths(
// '/static/index/warehouse/home',
// 'unit1-',
// 5, // 张数
// 'png',
// 0, // 起始索引为 1
// false // 不补零
// ),
// width: '14.3vw',
// height: '13vw'
// },
// {
// url: genPaths(
// '/static/index/warehouse/home',
// 'unit11-',
// 5, // 张数
// 'png',
// 0, // 起始索引为 1
// false // 不补零
// ),
// width: '14.3vw',
// height: '13vw'
// },
// ])
// const logoval = reactive({
// url: genPaths(
// '/static/index/warehouse/home',
// 'logo',
// 3, // 张数
// 'png',
// 1, // 起始索引为 1
// false // 不补零
// )
// })
// const goback = () => {
// uni.navigateBack()
// }
// 当前坐标px
const x = ref(63)
const y = ref(59)
// const x = ref(50)
// const y = ref(5)
// 默认过渡时长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'
}
2025-12-01 17:13:29 +08:00
})
2025-12-05 10:09:24 +08:00
// 调用函数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);
2025-12-01 17:13:29 +08:00
}
</script>
<style scoped lang="less">
2025-12-05 10:09:24 +08:00
.home {
2025-12-01 17:13:29 +08:00
width: 100vw;
2025-12-05 10:09:24 +08:00
height: 100vh;
2025-12-01 17:13:29 +08:00
overflow: hidden;
2025-12-05 10:09:24 +08:00
position: fixed;
z-index: 0;
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.all-home {
width: 100%;
height: 100%;
2025-12-01 17:13:29 +08:00
}
}
2025-12-05 10:09:24 +08:00
.tp {
image {
width: 100%;
height: 100%;
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.paizi {
width: 18vw;
height: 18vw;
position: fixed;
bottom: 0.3vw;
left: 10vw;
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.jiankong {
width: 17vw;
height: 17vw;
position: fixed;
top: 1.5vw;
left: 12vw;
z-index: 50;
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.wanjie {
width: 18vw;
height: 18vw;
position: fixed;
top: 19vw;
left: 12vw;
z-index: 50;
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
.pandan {
width: 9.3vw;
height: 9.3vw;
2025-12-01 17:13:29 +08:00
position: fixed;
2025-12-05 10:09:24 +08:00
top: 23vw;
left: 29vw;
z-index: 50;
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.caigou {
width: 18vw;
height: 18vw;
position: fixed;
top: 34vw;
left: 37vw;
z-index: 50;
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
.ruku {
width: 11vw;
height: 11vw;
2025-12-01 17:13:29 +08:00
position: fixed;
2025-12-05 10:09:24 +08:00
bottom: 9vw;
right: 17vw;
z-index: 50;
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.chuku {
width: 11vw;
height: 11vw;
position: fixed;
bottom: 20.5vw;
right: 2.5vw;
z-index: 50;
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
.return {
width: 7vw;
height: 7vw;
2025-12-01 17:13:29 +08:00
position: fixed;
2025-12-05 10:09:24 +08:00
bottom: 8.8vw;
right: 25vw;
z-index: 50;
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.lead {
width: 7vw;
height: 7vw;
position: fixed;
bottom: 20vw;
right: 10vw;
z-index: 50;
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
.jianhuo {
width: 40vw;
height: 40vw;
2025-12-01 17:13:29 +08:00
position: fixed;
2025-12-05 10:09:24 +08:00
top: 0vw;
right: 23vw;
2025-12-01 17:13:29 +08:00
z-index: 50;
}
2025-12-05 10:09:24 +08:00
.picking {
width: 12vw;
height: 12vw;
2025-12-01 17:13:29 +08:00
position: fixed;
2025-12-05 10:09:24 +08:00
top: 24vw;
right: 27vw;
z-index: 50;
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.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;
}
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
.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;
2025-12-01 17:13:29 +08:00
position: relative;
2025-12-05 10:09:24 +08:00
.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;
}
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
.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;
2025-12-01 17:13:29 +08:00
}
}
2025-12-05 10:09:24 +08:00
.caigoutag {
2025-12-01 17:13:29 +08:00
position: fixed;
2025-12-05 10:09:24 +08:00
top: 36vw;
left: 42vw;
z-index: 51;
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.blue-imge {
position: absolute;
top: 2.2vw;
left: 50%;
transform: translateX(-50%);
width: 3vw;
height: 5vw;
2025-12-01 17:13:29 +08:00
}
2025-12-05 10:09:24 +08:00
}
2025-12-01 17:13:29 +08:00
2025-12-05 10:09:24 +08:00
.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;
2025-12-01 17:13:29 +08:00
}
2025-11-28 13:13:17 +08:00
</style>