From cbb23429b8beed72b58cbb57f9b3c56a0fb2b5d2 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 09 五月 2025 13:31:26 +0800
Subject: [PATCH] 修改

---
 src/views/home/index.vue |  149 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 139 insertions(+), 10 deletions(-)

diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 0771f90..91d40aa 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,15 +1,144 @@
 <template>
-<div>
-    123
-</div>
+	<div class="system-menu-container layout-pd">
+		<el-card shadow="hover">
+			<div class="system-menu-search mb15">
+				<el-input size="default" placeholder="请输入菜单名称" style="max-width: 180px"> </el-input>
+				<el-button size="default" type="primary" class="ml10">
+					<el-icon>
+						<ele-Search />
+					</el-icon>
+					查询
+				</el-button>
+				<el-button size="default" type="success" class="ml10" @click="onOpenAddMenu">
+					<el-icon>
+						<ele-FolderAdd />
+					</el-icon>
+					新增菜单
+				</el-button>
+			</div>
+			<el-table
+				:data="state.tableData.data"
+				v-loading="state.tableData.loading"
+				style="width: 100%"
+				row-key="path"
+				:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+			>
+				<el-table-column label="菜单名称" show-overflow-tooltip>
+					<template #default="scope">
+						<SvgIcon :name="scope.row.meta.icon" />
+						<span class="ml10">{{ $t(scope.row.meta.title) }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column prop="path" label="路由路径" show-overflow-tooltip></el-table-column>
+				<el-table-column label="组件路径" show-overflow-tooltip>
+					<template #default="scope">
+						<span>{{ scope.row.component }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="权限标识" show-overflow-tooltip>
+					<template #default="scope">
+						<span>{{ scope.row.meta.roles }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="排序" show-overflow-tooltip width="80">
+					<template #default="scope">
+						{{ scope.$index }}
+					</template>
+				</el-table-column>
+				<el-table-column label="类型" show-overflow-tooltip width="80">
+					<template #default="scope">
+						<el-tag type="success" size="small">{{ scope.row.xx }}菜单</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column label="操作" show-overflow-tooltip width="140">
+					<template #default="scope">
+						<el-button size="small" text type="primary" @click="onOpenAddMenu('add')">新增</el-button>
+						<el-button size="small" text type="primary" @click="onOpenEditMenu('edit', scope.row)">修改</el-button>
+						<el-button size="small" text type="primary" @click="onTabelRowDel(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+		</el-card>
+		<MenuDialog ref="menuDialogRef" @refresh="getTableData()" />
+	</div>
 </template>
 
-<script>
-export default {
-    name: "index"
+<script setup lang="ts" name="systemMenu">
+import { defineAsyncComponent, ref, onMounted, reactive } from 'vue';
+import { RouteRecordRaw } from 'vue-router';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import { storeToRefs } from 'pinia';
+import { useRoutesList } from '/@/stores/routesList';
+import { useMenuApi } from "/@/api/systemManage/menu";
+import { initBackEndControlRoutes } from "/@/router/backEnd";
+import {roomApi} from "/@/api/basic/room";
+// import { setBackEndControlRefreshRoutes } from "/@/router/backEnd";
+
+// 引入组件
+const MenuDialog = defineAsyncComponent(() => import('/@/views/home/dialog.vue'));
+
+// 定义变量内容
+const stores = useRoutesList();
+const { routesList } = storeToRefs(stores);
+const menuDialogRef = ref();
+const state = reactive({
+	tableData: {
+        data: [] as RouteRecordRaw[],
+		loading: false,
+	},
+});
+
+// 获取路由数据,真实请从接口获取
+const getTableData = async () => {
+    let res = await useMenuApi().getMenuAdmin();
+    if (res.data.code === 100) {
+        state.tableData.data = res.data.data;
+        await initBackEndControlRoutes()
+    } else {
+        ElMessage({
+            type: 'warning',
+            message: res.data.msg
+        });
+    }
+};
+// 打开新增菜单弹窗
+const onOpenAddMenu = (type: string) => {
+	menuDialogRef.value.openDialog(type);
+};
+// 打开编辑菜单弹窗
+const onOpenEditMenu = (type: string, row: RouteRecordRaw) => {
+	menuDialogRef.value.openDialog(type, row);
+};
+// 删除当前行
+const onTabelRowDel = (row: RouteRecordRaw) => {
+    ElMessageBox.confirm(`此操作将永久删除该菜单,是否继续?`, '提示', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning'
+    })
+        .then(async () => {
+            let res = await useMenuApi().deleteMenu(row.id );
+            if (res.data.code === 100) {
+                ElMessage({
+                    type: 'success',
+                    duration: 2000,
+                    message: '删除成功'
+                });
+                await getTableData();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        })
+        .catch((error) => {
+
+        });
 }
+
+// 页面加载时
+onMounted(() => {
+	getTableData();
+});
 </script>
-
-<style scoped>
-
-</style>

--
Gitblit v1.9.2