2024-04-23 11:03:51 +08:00
|
|
|
|
<template>
|
2025-08-22 18:28:25 +08:00
|
|
|
|
<view class="home-container">
|
|
|
|
|
|
<view v-for="type in 4" :key="type" class="section-container">
|
|
|
|
|
|
<view class="section-card">
|
|
|
|
|
|
<text class="section-title">{{ getSectionTitle(type) }}</text>
|
|
|
|
|
|
<view class="grid-container">
|
|
|
|
|
|
<view
|
|
|
|
|
|
v-for="(item, index) in getItemsByType(type)"
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
class="grid-item"
|
|
|
|
|
|
@click="gridCheck(item)"
|
|
|
|
|
|
>
|
|
|
|
|
|
<image
|
|
|
|
|
|
class="grid-icon"
|
|
|
|
|
|
:src="'../../static/images/material-icons/' + item.icon + '.svg'"
|
|
|
|
|
|
></image>
|
|
|
|
|
|
<text class="grid-text">{{ item.name }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<!-- 当一行不满4个时,添加占位元素以保持布局 -->
|
|
|
|
|
|
<view
|
|
|
|
|
|
v-for="index in (4 - getItemsByType(type).length % 4) % 4"
|
|
|
|
|
|
:key="`placeholder-${index}`"
|
|
|
|
|
|
class="grid-item placeholder"
|
|
|
|
|
|
>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="section-gap" v-if="type < 4"></view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
2024-04-23 11:03:51 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
export default {
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
// 页面按钮参数
|
2024-04-30 10:17:48 +08:00
|
|
|
|
gridItemList: [{
|
2024-04-24 14:54:20 +08:00
|
|
|
|
name: '仓库配料',
|
2025-08-23 14:01:23 +08:00
|
|
|
|
icon: 'warehouse-material',
|
2024-04-24 14:54:20 +08:00
|
|
|
|
url: '/pages/materialManagement/MaterialProductionInput/MaterialProductionInput',
|
2024-04-23 11:03:51 +08:00
|
|
|
|
type: 1,
|
|
|
|
|
|
},
|
2024-04-24 14:54:20 +08:00
|
|
|
|
{
|
2024-04-28 15:19:52 +08:00
|
|
|
|
name: '车间叫料',
|
2025-08-23 14:01:23 +08:00
|
|
|
|
icon: 'workshop-call-material',
|
2024-04-29 09:56:46 +08:00
|
|
|
|
url: '/pages/materialManagement/MaterialRequisition/MaterialRequisition',
|
2024-04-24 14:54:20 +08:00
|
|
|
|
type: 1,
|
2024-04-30 10:17:48 +08:00
|
|
|
|
},
|
2024-06-27 15:12:53 +08:00
|
|
|
|
{
|
|
|
|
|
|
name: '车间进料',
|
2025-08-23 14:01:23 +08:00
|
|
|
|
icon: 'workshop-feed-material',
|
2024-06-27 15:12:53 +08:00
|
|
|
|
url: '/pages/materialManagement/MaterialFeeding/MaterialFeeding',
|
|
|
|
|
|
type: 1,
|
|
|
|
|
|
},
|
2024-04-30 10:17:48 +08:00
|
|
|
|
{
|
2025-08-22 18:28:25 +08:00
|
|
|
|
name: '成品入库',
|
2025-08-23 14:01:23 +08:00
|
|
|
|
icon: 'finished-product-inbound',
|
2024-04-30 10:17:48 +08:00
|
|
|
|
url: '/pages/materialManagement/MaterialWarehousing/MaterialWarehousing',
|
|
|
|
|
|
type: 2,
|
2024-04-24 14:54:20 +08:00
|
|
|
|
},
|
2024-05-17 10:37:05 +08:00
|
|
|
|
{
|
|
|
|
|
|
name: '进箱',
|
2025-08-23 14:01:23 +08:00
|
|
|
|
icon: 'into-box',
|
2024-05-17 10:37:05 +08:00
|
|
|
|
url: '/pages/materialManagement/package/package',
|
|
|
|
|
|
type: 3,
|
|
|
|
|
|
},
|
2024-07-02 13:24:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
name: '全点位移动',
|
2025-08-23 14:01:23 +08:00
|
|
|
|
icon: 'full-position-move',
|
2024-07-02 13:24:20 +08:00
|
|
|
|
url: '/pages/materialManagement/AGVRemoteControl/AGVRemoteControl',
|
|
|
|
|
|
type: 4,
|
|
|
|
|
|
},
|
2024-04-23 11:03:51 +08:00
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
2025-08-22 18:28:25 +08:00
|
|
|
|
gridCheck(item) {
|
|
|
|
|
|
if (item.url === '') {
|
2024-04-23 11:03:51 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
uni.navigateTo({
|
2025-08-22 18:28:25 +08:00
|
|
|
|
url: item.url
|
2024-04-23 11:03:51 +08:00
|
|
|
|
});
|
|
|
|
|
|
},
|
2025-08-22 18:28:25 +08:00
|
|
|
|
getItemsByType(type) {
|
|
|
|
|
|
return this.gridItemList.filter(item => item.type === type);
|
|
|
|
|
|
},
|
|
|
|
|
|
getSectionTitle(type) {
|
|
|
|
|
|
const titles = ['', '原材料', '辅助材料', '油漆', 'AGV控制'];
|
|
|
|
|
|
return titles[type] || '';
|
|
|
|
|
|
}
|
2024-04-23 11:03:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
2025-08-22 18:28:25 +08:00
|
|
|
|
/* 主容器 */
|
|
|
|
|
|
.home-container {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
min-height: 100vh;
|
|
|
|
|
|
background: linear-gradient(135deg, #f0f2f5 0%, #e1e5ee 100%);
|
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 板块容器 */
|
|
|
|
|
|
.section-container {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
margin-bottom: 10rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 板块卡片 */
|
|
|
|
|
|
.section-card {
|
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
padding: 10rpx;
|
|
|
|
|
|
box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.08);
|
|
|
|
|
|
margin-bottom: 10rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 板块标题 */
|
|
|
|
|
|
.section-title {
|
|
|
|
|
|
font-size: 36rpx;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
margin: 0 0 20rpx 10rpx;
|
|
|
|
|
|
color: #2c3e50;
|
|
|
|
|
|
letter-spacing: 1rpx;
|
|
|
|
|
|
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 网格容器 */
|
|
|
|
|
|
.grid-container {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 网格项 */
|
|
|
|
|
|
.grid-item {
|
|
|
|
|
|
width: 24%; /* 一行4个,每个占24%宽度,留有间隙 */
|
|
|
|
|
|
background-color: #ffffff;
|
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
|
margin-bottom: 20rpx;
|
|
|
|
|
|
box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.08);
|
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
padding: 20rpx 0;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 网格项悬停效果 */
|
|
|
|
|
|
.grid-item:hover {
|
|
|
|
|
|
transform: translateY(-4rpx);
|
|
|
|
|
|
box-shadow: 0 10rpx 24rpx rgba(0, 0, 0, 0.12);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 网格项点击效果 */
|
|
|
|
|
|
.grid-item:active {
|
|
|
|
|
|
transform: scale(0.96);
|
|
|
|
|
|
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 图标 */
|
|
|
|
|
|
.grid-icon {
|
|
|
|
|
|
width: 80rpx;
|
|
|
|
|
|
height: 80rpx;
|
|
|
|
|
|
margin-bottom: 15rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 文字 */
|
|
|
|
|
|
.grid-text {
|
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
|
color: #4a5568;
|
|
|
|
|
|
letter-spacing: 0.5rpx;
|
|
|
|
|
|
line-height: 1.4;
|
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 板块间隔 */
|
|
|
|
|
|
.section-gap {
|
|
|
|
|
|
height: 40rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 响应式调整 */
|
|
|
|
|
|
@media screen and (max-width: 360px) {
|
|
|
|
|
|
.grid-item {
|
|
|
|
|
|
width: 23%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.grid-icon {
|
|
|
|
|
|
width: 70rpx;
|
|
|
|
|
|
height: 70rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.grid-text {
|
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-04-23 11:03:51 +08:00
|
|
|
|
</style>
|