This commit is contained in:
Teng 2025-10-14 15:14:24 +08:00
commit 77b05f2359
20 changed files with 328 additions and 97 deletions

View File

@ -1,10 +1,29 @@
<template> <template>
<view :class="darkFans?`darkbackgroundContainer`:`backgroundContainer`" v-show="isShow"> <view :class="darkFans?`darkbackgroundContainer`:`backgroundContainer`" v-show="isShow">
<view class="wareaitem"> <view class="wareaitem">
<view class="tp" v-for="(item,index) in 12" :key='index'> <view class="wareaitem-item">
<image :src="'/static/index/warehouse/w'+index+'.png'" mode="aspectFill"></image> <view class="tp" v-for="(item,index) in 9" :key='index' >
<image :src="'/static/index/warehouse/w'+index+'.png'" mode="aspectFill"></image>
</view>
<view class="tp" :class="'itemact'+item" v-for="(item,index) in 7" :key='index' @click.stop="housactive(index)">
<image :src="'/static/index/warehouse/active/i'+index+'.png'" mode="aspectFill" v-if="index>5||housedex==index"></image>
</view>
<view class="tp ys" >
<image :src="'/static/index/warehouse/active/i7.png'" mode="aspectFill" ></image>
</view>
<view class="tp gifs" >
<image src="/static/index/warehouse/ys.gif" mode="aspectFill"></image>
</view>
<view class="tp w11" >
<image src="/static/index/warehouse/w11.png" mode="aspectFill"></image>
</view>
<view class="tp wclik" @click.stop="housactive(1)">
<!-- 采购增加层级高度方便点击 -->
</view>
</view> </view>
<view class="annotation" v-for="(v,i) in ['付款','采购','结账','护理单元','中控室']" :key='i'> <view class="annotation" :class="'annotation'+(i+1)" v-for="(v,i) in ['付款','采购','结账','拣货','护理单元','中控室']" :key='i'>
<view>{{v}}</view> <view>{{v}}</view>
<view class="tp"> <view class="tp">
<image src="/static/index/warehouse/y1.png" mode="aspectFill"></image> <image src="/static/index/warehouse/y1.png" mode="aspectFill"></image>
@ -13,6 +32,13 @@
<image src="/static/index/warehouse/y0.png" mode="aspectFill"></image> <image src="/static/index/warehouse/y0.png" mode="aspectFill"></image>
</view> </view>
</view> </view>
<arrowkeys @movecard="movecard" :getblue="getblue" :moveleft="125" />
<view class="operationbtn">
<view v-for="(v,i) in ['请领出库','退货入库','库存盘点','实时监控']"
@tap="onTap(i)"
:class="beblue === i ? 'click-box-target grad-text' : 'click-box'">{{v}}</view>
</view>
</view> </view>
</view> </view>
</template> </template>
@ -20,12 +46,69 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, computed, nextTick,defineProps } from 'vue'; import { ref, onMounted, onBeforeUnmount, computed, nextTick,defineProps } from 'vue';
const darkFans = ref(false); const darkFans = ref(false);
const getblue = ref(false);
const props = defineProps({ const props = defineProps({
isShow: { isShow: {
type: Boolean, type: Boolean,
required: true, required: true,
}, },
}); });
const housedex = ref(-1);
const housactive = (index : number) => {
if(index>5){return}
housedex.value = index;
console.log(index)
}
const movecard = (type : number) => {
console.log(type)
switch (type){
case 0:
//
housedex.value>0?housedex.value--:housedex.value = 5
break;
case 1:
housedex.value>4?housedex.value = 0:housedex.value++
//
break;
case 2:
housedex.value>4?housedex.value = 0:housedex.value++
//
break;
case 3:
housedex.value>0?housedex.value--:housedex.value = 5
//
break;
case 4:
//
break;
case 5:
//
uni.navigateBack()
break;
default:
break;
}
}
const beblue = ref<number>(-1);
let clickResetTimer : ReturnType<typeof setTimeout> | null = null;
//
function onTap(dir : number) {
clearClickResetTimer()
beblue.value = dir
clickResetTimer = setTimeout(() => {
beblue.value = -1
clickResetTimer = null
}, 500)
}
function clearClickResetTimer() {
if (clickResetTimer) {
clearTimeout(clickResetTimer)
clickResetTimer = null
}
}
</script> </script>
<style lang="less"> <style lang="less">
@ -42,142 +125,290 @@
height: 100%; height: 100%;
} }
} }
.annotation{ .operationbtn{
width: 7vw; width: 20vw;
height: 8vw; height: 10vw;
z-index: 20; position: absolute;
right: 3vw;
bottom: 2vw;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
>view{ >view{
position: relative; width: 9vw;
&:nth-child(1){ height: 4vw;
width: 7vw; border-radius: 1vw;
height: 2vw; border: 2rpx solid #D9DADC;
background: #F2F3F7; display: flex;
box-shadow: 0rpx 0rpx 0rpx 0rpx rgba(182,186,196,0.35); justify-content: center;
border: 2rpx solid #FFFFFF; align-items: center;
font-weight: 400; font-weight: 400;
font-size: 1vw; font-size: 1vw;
color: #333333; color: #888D99;
display: flex; margin: 0 0.3vw;
align-items: center; transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.25s ease;
justify-content: center; -webkit-tap-highlight-color: transparent;
z-index: 3; }
} .click-box {
&:nth-child(2){ color: #888d99;
width: 4vw; background: rgba(255, 255, 255, 0.43);
height: 2vw; }
z-index: 2;
margin: -2rpx auto 0; .click-box-target {
z-index: 2; color: transparent;
} animation: scalePulse 360ms cubic-bezier(.2, .8, .2, 1);
&:nth-child(3){ transform-origin: center center;
width: 3vw; }
height: 5vw; .grad-text {
z-index: 1; background: linear-gradient(90deg, #5b8bb3, #87a1bd);
margin: -1vw auto 0; background-size: 200% 100%;
} background-position: 0% 50%;
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
transition: background-position 0.8s linear;
}
@keyframes scalePulse {
0% { transform: scale(1); }
25% { transform: scale(0.94); }
65% { transform: scale(1.08); }
100% { transform: scale(1); }
} }
} }
>view{ .wareaitem-item{
position: absolute; width: 100%;
&:nth-child(1){ height: 100%;
width: 26vw; position: fixed;
height: 22vw; top: 0;
top: 17vw; left: 0;
background: url('/static/index/warehouse/bg.png')no-repeat;
background-size:cover cover;
.itemact1 {
width: 25vw;
height: 19vw;
top: 21vw;
left: 8vw; left: 8vw;
z-index: 10; z-index: 31;
} }
&:nth-child(2){ .itemact2{
width: 68vw;
height: 22vw;
top: 4vw;
left: 18vw;
}
&:nth-child(3){
width: 20vw; width: 20vw;
height: 13vw; height: 13vw;
top: 15vw; top: 15vw;
left: 43vw; left: 43vw;
z-index: 27;
} }
&:nth-child(4){ .itemact3{
width: 20vw; width: 20vw;
height: 14vw; height: 14vw;
top: 26vw; top: 26vw;
left: 45vw; left: 45vw;
z-index: 10; z-index: 35;
} }
&:nth-child(5){ .itemact4{
width: 11vw;
height: 7vw;
top: 28vw;
left: 56vw;
}
&:nth-child(6){
width: 11vw; width: 11vw;
height: 9vw; height: 9vw;
top: 23vw; top: 23vw;
left: 63vw; left: 63vw;
z-index: 5; z-index: 36;
} }
&:nth-child(7){ .itemact6{
width: 13vw; width: 15vw;
height: 11vw; height: 10vw;
top: 25vw; top: 25vw;
left: 80vw; left: 80vw;
z-index: 35;
} }
&:nth-child(8){ .itemact5{
width: 15vw; width: 16vw;
height: 14vw; height: 13vw;
top: 31vw; top: 31vw;
left: 67vw; left: 67vw;
z-index: 35;
} }
&:nth-child(9){ .itemact7{
width: 48vw; width: 48vw;
height: 22vw; height: 22vw;
top: 34vw; top: 35vw;
left: 21vw; left: 22vw;
z-index: 11; z-index: 31;
} }
&:nth-child(10){
width: 17vw; .itemact8{
height: 10vw;
top: 48vw;
left: 26vw;
z-index: 12;
}
&:nth-child(11){
width: 11vw; width: 11vw;
height: 8vw; height: 8vw;
top: 22vw; top: 22vw;
left: 56vw; left: 56vw;
z-index: 17;
} }
&:nth-child(12){ .itemact9{
width: 11vw;
height: 9vw;
top: 23vw;
left: 63vw;
z-index: 22;
}
.wclik{
width: 20vw;
height: 13vw;
top: 15vw;
left: 43vw;
z-index: 47;
}
.gifs{
width: 38vw;
height:19.5vw;
top: 19vw;
left: 26vw;
z-index: 29;
}
.w11{
width: 3vw; width: 3vw;
height: 3vw; height:3vw;
top: 21vw; top: 22.5vw;
left: 57vw; left: 58vw;
} z-index: 35;
// title
&:nth-child(13){
top: 15.5vw;
left: 21.5vw;
} }
&:nth-child(14){ .ys{
width: 11vw;
height: 8vw;
top: 22vw;
left: 56vw;
z-index: 28;
}
>view{
position: absolute;
&:nth-child(1){
width: 25vw;
height: 19vw;
top: 21vw;
left: 8vw;
z-index: 30;
}
&:nth-child(2){
width: 72vw;
height: 36vw;
top: 3vw;
left: 13.5vw;
z-index: 15;
}
&:nth-child(3){
width: 20vw;
height: 13vw;
top: 15vw;
left: 43vw;
z-index: 20;
}
&:nth-child(4){
width: 20vw;
height: 14vw;
top: 26vw;
left: 45vw;
z-index: 10;
}
&:nth-child(5){
width: 11vw;
height: 7vw;
top: 27vw;
left: 58vw;
}
&:nth-child(6){
width: 11vw;
height: 9vw;
top: 23vw;
left: 63vw;
z-index: 31;
}
&:nth-child(7){
width: 15vw;
height: 10vw;
top: 25vw;
left: 80vw;
}
&:nth-child(8){
width: 16vw;
height: 13vw;
top: 31vw;
left: 67vw;
}
&:nth-child(9){
width: 25vw;
height: 8vw;
top: 27vw;
left: 19.8vw;
}
}
}
.annotation1{
top: 18.2vw;
left: 20.5vw;
}
.annotation2{
top: 12vw; top: 12vw;
left: 48vw; left: 48vw;
} }
&:nth-child(15){ .annotation3{
top: 20vw; top: 21vw;
left: 47vw; left: 49vw;
} }
&:nth-child(16){ .annotation4{
top: 27vw; top: 17.5vw;
left: 71vw; left: 65vw;
} }
&:nth-child(17){ .annotation5{
top: 28vw;
left: 70vw;
}
.annotation6{
top: 21vw; top: 21vw;
left: 83vw; left: 83vw;
} }
} // title
.annotation {
width: 7vw;
height: 8vw;
z-index: 20;
position: fixed;
>view{
position: relative;
&:nth-child(1){
width: 7vw;
height: 2vw;
background: #F2F3F7;
box-shadow: 0rpx 0rpx 0rpx 0rpx rgba(182,186,196,0.35);
border: 2rpx solid #FFFFFF;
font-weight: 400;
font-size: 1vw;
color: #333333;
display: flex;
align-items: center;
justify-content: center;
z-index: 3;
}
&:nth-child(2){
width: 4vw;
height: 2vw;
z-index: 2;
margin: -2rpx auto 0;
z-index: 2;
}
&:nth-child(3){
width: 3vw;
height: 5vw;
z-index: 1;
margin: -1vw auto 0;
}
}
}
} }
.backgroundContainer { .backgroundContainer {
display: flex; display: flex;

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB