c293da23
刘淇
新园林init
|
1
|
<template>
|
37c26bd3
刘淇
巡查计划
|
2
|
<!-- 外层容器:包含蓝色块 + 原始内容 -->
|
c293da23
刘淇
新园林init
|
3
|
<view class="workbench-container">
|
37c26bd3
刘淇
巡查计划
|
4
5
|
<!-- 蓝色装饰块:#577ee3 -->
<view class="blue-decor-block"></view>
|
c293da23
刘淇
新园林init
|
6
|
|
37c26bd3
刘淇
巡查计划
|
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<!-- 原始内容容器:仅添加定位和顶部偏移实现压边 -->
<view class="content-wrap">
<!-- uview-plus空状态组件 -->
<u-empty
v-if="!moduleList.length"
mode="list"
text="暂无菜单数据"
color="#999"
font-size="28rpx"
></u-empty>
<!-- 菜单卡片列表(修复header插槽语法,恢复标题显示) -->
<view v-else class="menu-card-wrap">
<up-card
:title-size="18"
v-for="(parentModule, index) in moduleList"
:key="parentModule.id"
:title="parentModule.name"
>
|
c293da23
刘淇
新园林init
|
27
|
|
37c26bd3
刘淇
巡查计划
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<template #body>
<view>
<up-grid
:border="false"
col="4"
>
<up-grid-item
v-for="(listItem,listIndex) in parentModule.children"
:key="listItem.id"
@click="handleMenuClick(listItem)"
>
<u-image
:src="listItem.icon "
mode="aspectFit"
width="80rpx"
height="80rpx"
lazy-load
radius="16rpx"
></u-image>
<text class="grid-text">{{ listItem.name }}</text>
</up-grid-item>
</up-grid>
<up-toast ref="uToastRef"/>
</view>
</template>
</up-card>
|
c293da23
刘淇
新园林init
|
54
55
56
57
58
|
</view>
</view>
</view>
</template>
|
37c26bd3
刘淇
巡查计划
|
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
<script setup lang="ts">
// 原始代码完全保留
import {ref, nextTick} from 'vue';
import {onShow} from '@dcloudio/uni-app';
import {useUserStore} from '@/pinia/user';
interface MenuItem {
id: number;
name: string;
subtitle?: string;
type: number;
sort: number;
parentId: number;
icon: string;
jumpUrl: string;
miniAppId?: string;
badgeText?: string;
badgeColor?: string;
statisticCount: number | null;
hasStatistic: boolean;
extra: any;
children: MenuItem[];
}
|
c293da23
刘淇
新园林init
|
82
83
|
const userStore = useUserStore();
|
37c26bd3
刘淇
巡查计划
|
84
85
86
87
88
89
90
91
92
93
|
const moduleList = ref<MenuItem[]>([]);
// 无用变量(保留避免警告)
const subTitle = ref('');
const thumb = ref('');
const border = ref(true);
const click = () => {
};
const headClick = () => {
};
|
c293da23
刘淇
新园林init
|
94
|
|
37c26bd3
刘淇
巡查计划
|
95
|
onShow(async () => {
|
c293da23
刘淇
新园林init
|
96
|
try {
|
37c26bd3
刘淇
巡查计划
|
97
98
99
100
101
102
103
104
|
const rawMenuData = userStore.moduleListInfo as MenuItem[];
const menuData = rawMenuData || [];
moduleList.value = menuData;
await nextTick();
console.log('菜单数据:', moduleList.value);
} catch (error) {
console.error('获取菜单数据失败:', error);
moduleList.value = [];
|
c293da23
刘淇
新园林init
|
105
|
}
|
37c26bd3
刘淇
巡查计划
|
106
|
});
|
c293da23
刘淇
新园林init
|
107
|
|
37c26bd3
刘淇
巡查计划
|
108
109
110
111
112
113
114
115
|
const handleMenuClick = (item: MenuItem) => {
if (!item.jumpUrl) {
uni.showToast({
title: '暂无跳转链接',
icon: 'none',
duration: 2000
});
return;
|
c293da23
刘淇
新园林init
|
116
|
}
|
37c26bd3
刘淇
巡查计划
|
117
118
119
120
121
122
123
124
125
126
127
128
|
console.log(item.jumpUrl)
uni.navigateTo({
url: item.jumpUrl,
fail: (err) => {
console.error('页面跳转失败:', err);
uni.showToast({
title: '页面路径错误',
icon: 'none',
duration: 2000
});
}
});
|
c293da23
刘淇
新园林init
|
129
130
131
132
|
};
</script>
<style scoped>
|
37c26bd3
刘淇
巡查计划
|
133
|
/* 仅新增/保留必要样式,不修改卡片核心样式 */
|
c293da23
刘淇
新园林init
|
134
|
.workbench-container {
|
37c26bd3
刘淇
巡查计划
|
135
|
width: 100%;
|
c293da23
刘淇
新园林init
|
136
|
min-height: 100vh;
|
37c26bd3
刘淇
巡查计划
|
137
138
|
position: relative;
background-color: #fff;
|
c293da23
刘淇
新园林init
|
139
|
}
|
37c26bd3
刘淇
巡查计划
|
140
141
142
143
144
145
146
147
148
149
|
/* 蓝色块样式 */
.blue-decor-block {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 200px;
background-color: #577ee3;
z-index: 1;
|
c293da23
刘淇
新园林init
|
150
|
}
|
37c26bd3
刘淇
巡查计划
|
151
152
153
154
155
156
157
|
/* 内容容器样式 */
.content-wrap {
position: relative;
z-index: 2;
padding: 0 20rpx;
padding-top: 160px;
|
c293da23
刘淇
新园林init
|
158
|
}
|
37c26bd3
刘淇
巡查计划
|
159
160
161
162
163
|
/* 第一张卡片层级 */
.first-card-position {
position: relative;
z-index: 3;
|
c293da23
刘淇
新园林init
|
164
|
}
|
37c26bd3
刘淇
巡查计划
|
165
166
167
168
169
170
|
/* 仅补充标题文字基础样式(确保显示,不修改卡片其他样式) */
.card-title-text {
font-size: 32rpx;
color: #333;
font-weight: 600;
|
c293da23
刘淇
新园林init
|
171
|
}
|
37c26bd3
刘淇
巡查计划
|
172
173
174
|
/* 网格文字样式(保留原始) */
.grid-text {
|
c293da23
刘淇
新园林init
|
175
|
font-size: 24rpx;
|
37c26bd3
刘淇
巡查计划
|
176
177
178
|
color: #333;
text-align: center;
margin-top: 10rpx;
|
c293da23
刘淇
新园林init
|
179
|
}
|
37c26bd3
刘淇
巡查计划
|
180
|
</style>
|