houzhongjian
2024-12-04 bb203eb72ee4604be8c9272cc583ecb9e393aeb8
提交 | 用户 | 时间
aff5c9 1 <template>
2   <!-- 搜索工作栏 -->
3   <ContentWrap>
4     <el-form
5       class="-mb-15px"
6       :model="queryParams"
7       ref="queryFormRef"
8       :inline="true"
9       label-width="68px"
ec54c9 10       @submit.prevent
aff5c9 11     >
1c5af8 12       <el-form-item label="菜单名称" prop="name">
aff5c9 13         <el-input
1c5af8 14           v-model="queryParams.name"
aff5c9 15           placeholder="请输入名称"
16           clearable
17           class="!w-240px"
18         />
19       </el-form-item>
20       <el-form-item>
21         <el-button @click="handleQuery">
22           <Icon icon="ep:search" class="mr-5px"/>
23           搜索
24         </el-button>
25         <el-button @click="resetQuery">
26           <Icon icon="ep:refresh" class="mr-5px"/>
27           重置
28         </el-button>
29         <el-button
30           type="primary"
31           plain
32           @click="openForm('create')"
33           v-hasPermi="['mpk:menu:create']"
34         >
35           <Icon icon="ep:plus" class="mr-5px" />
36           新增
37         </el-button>
38
39       </el-form-item>
40     </el-form>
41   </ContentWrap>
42
43   <!-- 列表 -->
44   <ContentWrap>
45     <el-table
46       v-loading="loading"
47       :data="list"
48       row-key="id"
49     >
1c5af8 50       <el-table-column prop="name" label="菜单名称"/>
aff5c9 51       <el-table-column prop="sort" label="排序"/>
52       <el-table-column label="操作" align="center" width="200px">
53         <template #default="scope">
54           <div class="flex items-center justify-center">
55             <el-button
56               link
57               type="primary"
58               @click="openForm('update', scope.row.id)"
59               v-hasPermi="['mpk:menu:update']"
60             >
61               编辑
62             </el-button>
63             <el-button
64               link
65               type="primary"
66               @click="openGroupList(scope.row.id)"
67               v-hasPermi="['mpk:menu:update']"
68             >
69               分组
70             </el-button>
71             <el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['mpk:menu:delete']">
72               <Icon icon="ep:delete"/>删除
73             </el-button>
74           </div>
75         </template>
76       </el-table-column>
77     </el-table>
78   </ContentWrap>
79
80   <!-- 表单弹窗:添加/修改 -->
81   <MenuForm ref="formRef" @success="getList" />
82
83   <!-- 分组列表 -->
84   <GroupList ref="listRef" />
85
86 </template>
87 <script lang="ts" setup>
88 import {dateFormatter} from '@/utils/formatTime'
89 import * as MpkMenuApi from '@/api/model/mpk/menu'
90 import MenuForm from './MenuForm.vue'
91 import GroupList from './group/index.vue'
92
93 defineOptions({name: 'MpkMenu'})
94
95 const message = useMessage() // 消息弹窗
96 const {t} = useI18n() // 国际化
97
98 const loading = ref(true) // 列表的加载中
99 const list = ref([]) // 字典表格数据
100 const queryParams = reactive({
101   name: ''
102 })
103 const queryFormRef = ref() // 搜索的表单
104
105 const getList = async () => {
106   loading.value = true
107   try {
108     const data = await MpkMenuApi.getList(queryParams)
1c5af8 109     list.value = data
aff5c9 110   } finally {
111     loading.value = false
112   }
113 }
114
115 /** 搜索按钮操作 */
116 const handleQuery = () => {
117   getList()
118 }
119
120 /** 重置按钮操作 */
121 const resetQuery = () => {
122   queryFormRef.value.resetFields()
123   handleQuery()
124 }
125
126 /** 添加/修改操作 */
127 const formRef = ref()
128 const openForm = (type: string, id?: string) => {
129   formRef.value.open(type, id)
130 }
131
132 /** 删除按钮操作 */
133 const handleDelete = async (id: string) => {
134   try {
135     // 删除的二次确认
136     await message.delConfirm()
137     // 发起删除
138     await MpkMenuApi.deleteMenu(id)
139     message.success(t('common.delSuccess'))
140     // 刷新列表
141     await getList()
142   } catch {
143   }
144 }
145
146 /** List操作 */
147 const listRef = ref()
148 const openGroupList = (id?: string) => {
149   listRef.value.open(id)
150 }
151
152 /** 初始化 **/
153 onMounted(async () => {
154   await getList()
155 })
156 </script>