|
@@ -2,7 +2,7 @@
|
|
<CommonPage>
|
|
<CommonPage>
|
|
<template #action>
|
|
<template #action>
|
|
<NButton type="primary" @click="handleAddMenu">
|
|
<NButton type="primary" @click="handleAddMenu">
|
|
- <i class="i-material-symbols:add mr-4 text-18" />
|
|
|
|
|
|
+ <i class="i-material-symbols:add mr-4 text-18"/>
|
|
新增菜单
|
|
新增菜单
|
|
</NButton>
|
|
</NButton>
|
|
</template>
|
|
</template>
|
|
@@ -18,7 +18,8 @@
|
|
<n-card :bordered="false" size="small">
|
|
<n-card :bordered="false" size="small">
|
|
<template #cover>
|
|
<template #cover>
|
|
<!-- <div style="width: 100%;height: 50px;overflow: hidden;"> -->
|
|
<!-- <div style="width: 100%;height: 50px;overflow: hidden;"> -->
|
|
- <n-image preview-disabled :src="child.cover" object-fit="scale-down" style="width: 100%;height: 50px;overflow: hidden;" />
|
|
|
|
|
|
+ <n-image preview-disabled :src="child.cover" object-fit="scale-down"
|
|
|
|
+ style="width: 100%;height: 50px;overflow: hidden;"/>
|
|
<!-- </div> -->
|
|
<!-- </div> -->
|
|
</template>
|
|
</template>
|
|
<div class="text-center text-12">
|
|
<div class="text-center text-12">
|
|
@@ -40,7 +41,7 @@
|
|
@select="(key) => handleSelect(key, item)"
|
|
@select="(key) => handleSelect(key, item)"
|
|
>
|
|
>
|
|
<n-button text>
|
|
<n-button text>
|
|
- <i class="i-material-symbols:more-horiz text-24" />
|
|
|
|
|
|
+ <i class="i-material-symbols:more-horiz text-24"/>
|
|
</n-button>
|
|
</n-button>
|
|
</n-dropdown>
|
|
</n-dropdown>
|
|
</template>
|
|
</template>
|
|
@@ -57,10 +58,19 @@
|
|
trigger: ['input', 'blur'],
|
|
trigger: ['input', 'blur'],
|
|
}"
|
|
}"
|
|
>
|
|
>
|
|
- <n-input v-model:value="modalForm.title" />
|
|
|
|
|
|
+ <n-input v-model:value="modalForm.title"/>
|
|
</n-form-item>
|
|
</n-form-item>
|
|
|
|
|
|
<n-form-item
|
|
<n-form-item
|
|
|
|
+ label="描述" path="description" :rule="{
|
|
|
|
+ required: false,
|
|
|
|
+ message: '请输入描述',
|
|
|
|
+ trigger: ['input', 'blur'],
|
|
|
|
+ }"
|
|
|
|
+ >
|
|
|
|
+ <n-input v-model:value="modalForm.description" />
|
|
|
|
+ </n-form-item>
|
|
|
|
+ <n-form-item
|
|
label="样式类型" path="styleType" :rule="{
|
|
label="样式类型" path="styleType" :rule="{
|
|
required: true,
|
|
required: true,
|
|
type: 'number',
|
|
type: 'number',
|
|
@@ -74,7 +84,7 @@
|
|
</n-form-item>
|
|
</n-form-item>
|
|
|
|
|
|
<n-form-item label="备注" path="remark">
|
|
<n-form-item label="备注" path="remark">
|
|
- <n-input v-model:value="modalForm.remark" />
|
|
|
|
|
|
+ <n-input v-model:value="modalForm.remark"/>
|
|
</n-form-item>
|
|
</n-form-item>
|
|
<n-form-item label="是否显示" path="isPublish">
|
|
<n-form-item label="是否显示" path="isPublish">
|
|
<NSwitch v-model:value="modalForm.isPublish">
|
|
<NSwitch v-model:value="modalForm.isPublish">
|
|
@@ -102,32 +112,32 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
-import { MeModal } from '@/components'
|
|
|
|
-import { useCrud } from '@/composables'
|
|
|
|
-import { useUserStore } from '@/store/index.js'
|
|
|
|
-import { styleEnum } from '@/utils/enum.js'
|
|
|
|
-import { onMounted } from 'vue'
|
|
|
|
-import { useRouter } from 'vue-router'
|
|
|
|
|
|
+import {MeModal} from '@/components'
|
|
|
|
+import {useCrud} from '@/composables'
|
|
|
|
+import {useUserStore} from '@/store/index.js'
|
|
|
|
+import {styleEnum} from '@/utils/enum.js'
|
|
|
|
+import {onMounted} from 'vue'
|
|
|
|
+import {useRouter} from 'vue-router'
|
|
import MenuApi from './api.js'
|
|
import MenuApi from './api.js'
|
|
|
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
const topMenu = ref([])
|
|
const topMenu = ref([])
|
|
-const { userId } = useUserStore()
|
|
|
|
|
|
+const {userId} = useUserStore()
|
|
const $table = ref(null)
|
|
const $table = ref(null)
|
|
|
|
|
|
console.log('styleEnum', styleEnum)
|
|
console.log('styleEnum', styleEnum)
|
|
/** QueryBar筛选参数(可选) */
|
|
/** QueryBar筛选参数(可选) */
|
|
const queryItems = ref({})
|
|
const queryItems = ref({})
|
|
|
|
|
|
-const { modalRef, modalFormRef, modalAction, modalForm, handleAdd, handleDelete, handleEdit }
|
|
|
|
|
|
+const {modalRef, modalFormRef, modalAction, modalForm, handleAdd, handleDelete, handleEdit}
|
|
= useCrud({
|
|
= useCrud({
|
|
- name: '菜单',
|
|
|
|
- doCreate: MenuApi.create,
|
|
|
|
- doDelete: MenuApi.delete,
|
|
|
|
- doUpdate: MenuApi.update,
|
|
|
|
- initForm: { enable: true, isPublish: true },
|
|
|
|
- refresh: (_, keepCurrentPage) => $table.value?.handleSearch(keepCurrentPage),
|
|
|
|
- })
|
|
|
|
|
|
+ name: '菜单',
|
|
|
|
+ doCreate: MenuApi.create,
|
|
|
|
+ doDelete: MenuApi.delete,
|
|
|
|
+ doUpdate: MenuApi.update,
|
|
|
|
+ initForm: {enable: true, isPublish: true},
|
|
|
|
+ refresh: (_, keepCurrentPage) => $table.value?.handleSearch(keepCurrentPage),
|
|
|
|
+})
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
$table.value?.handleSearch()
|
|
$table.value?.handleSearch()
|
|
getTopMenuList()
|
|
getTopMenuList()
|
|
@@ -149,8 +159,9 @@ const options = [
|
|
key: 'delete',
|
|
key: 'delete',
|
|
},
|
|
},
|
|
]
|
|
]
|
|
|
|
+
|
|
function handleSelect(key, item) {
|
|
function handleSelect(key, item) {
|
|
- const { id } = item
|
|
|
|
|
|
+ const {id} = item
|
|
switch (key) {
|
|
switch (key) {
|
|
case 'edit':
|
|
case 'edit':
|
|
handleTopMenuEdit(id)
|
|
handleTopMenuEdit(id)
|
|
@@ -168,14 +179,16 @@ async function handleTopMenuDelete(id) {
|
|
getTopMenuList()
|
|
getTopMenuList()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
async function handleTopMenuEdit(id) {
|
|
async function handleTopMenuEdit(id) {
|
|
console.log('id', id)
|
|
console.log('id', id)
|
|
router.push(`/menu/list/${id}`)
|
|
router.push(`/menu/list/${id}`)
|
|
}
|
|
}
|
|
|
|
|
|
function getTopMenuList() {
|
|
function getTopMenuList() {
|
|
- MenuApi.getLevel(0).then(({ data = [] }) => (topMenu.value = data))
|
|
|
|
|
|
+ MenuApi.getLevel(0).then(({data = []}) => (topMenu.value = data))
|
|
}
|
|
}
|
|
|
|
+
|
|
function handleAddMenu() {
|
|
function handleAddMenu() {
|
|
handleAdd(null, null, () => {
|
|
handleAdd(null, null, () => {
|
|
getTopMenuList()
|
|
getTopMenuList()
|