From d9f5112f81039c865fe2c13306d6d7907ca4cbd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B2=E4=B9=88=E4=BA=86?= Date: Thu, 18 Jan 2024 18:19:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/user-boot/function.ts | 33 ++ .../baInput/components/baUpload.vue | 430 ------------------ .../baInput/components/selectFile.vue | 244 ---------- src/components/baInput/index.vue | 16 - src/components/table/index.vue | 10 +- src/utils/tableStore.ts | 2 +- src/views/auth/menu/api.vue | 122 +++++ src/views/auth/menu/index.vue | 121 ++--- src/views/auth/menu/menu.vue | 160 +++++++ src/views/auth/menu/popupApi.vue | 103 +++++ .../menu/{popupForm.vue => popupMenu.vue} | 36 +- types/table.d.ts | 4 +- 12 files changed, 479 insertions(+), 802 deletions(-) create mode 100644 src/api/user-boot/function.ts delete mode 100644 src/components/baInput/components/baUpload.vue delete mode 100644 src/components/baInput/components/selectFile.vue create mode 100644 src/views/auth/menu/api.vue create mode 100644 src/views/auth/menu/menu.vue create mode 100644 src/views/auth/menu/popupApi.vue rename src/views/auth/menu/{popupForm.vue => popupMenu.vue} (87%) diff --git a/src/api/user-boot/function.ts b/src/api/user-boot/function.ts new file mode 100644 index 0000000..c47e35d --- /dev/null +++ b/src/api/user-boot/function.ts @@ -0,0 +1,33 @@ +import createAxios from '@/utils/request' + +export const functionTree = () => { + return createAxios({ + url: '/user-boot/function/functionTree' + }) +} + +// 新增菜单接口 +export function add(data: anyObj) { + return createAxios({ + url: '/user-boot/function/add', + method: 'post', + data: data + }) +} + +// 修改菜单接口 +export function update(data: anyObj) { + return createAxios({ + url: '/user-boot/function/update', + method: 'put', + data: data + }) +} + +// 删除菜单接口 +export function deleteMenu(id: string) { + return createAxios({ + url: '/user-boot/function/delete?id=' + id, + method: 'delete', + }) +} diff --git a/src/components/baInput/components/baUpload.vue b/src/components/baInput/components/baUpload.vue deleted file mode 100644 index 0179a21..0000000 --- a/src/components/baInput/components/baUpload.vue +++ /dev/null @@ -1,430 +0,0 @@ - - - - - diff --git a/src/components/baInput/components/selectFile.vue b/src/components/baInput/components/selectFile.vue deleted file mode 100644 index afd9818..0000000 --- a/src/components/baInput/components/selectFile.vue +++ /dev/null @@ -1,244 +0,0 @@ - - - - - diff --git a/src/components/baInput/index.vue b/src/components/baInput/index.vue index e005447..1d9846c 100644 --- a/src/components/baInput/index.vue +++ b/src/components/baInput/index.vue @@ -7,7 +7,6 @@ import Array from '@/components/baInput/components/array.vue' import RemoteSelect from '@/components/baInput/components/remoteSelect.vue' import IconSelector from '@/components/baInput/components/iconSelector.vue' import Editor from '@/components/baInput/components/editor.vue' -import BaUpload from '@/components/baInput/components/baUpload.vue' import { getArea } from '@/api/common' export default defineComponent({ @@ -162,21 +161,6 @@ export default defineComponent({ 'onUpdate:modelValue': onValueUpdate, }) } - // upload - const upload = () => { - return () => - createVNode(BaUpload, { - type: props.type, - data: props.attr ? props.attr.data : {}, - modelValue: props.modelValue, - 'onUpdate:modelValue': onValueUpdate, - returnFullUrl: props.attr ? props.attr.returnFullUrl || props.attr['return-full-url'] : false, - hideSelectFile: props.attr ? props.attr.hideSelectFile || props.attr['hide-select-file'] : false, - attr: props.attr, - forceLocal: props.attr ? props.attr.forceLocal || props.attr['force-local'] : false, - }) - } - // remoteSelect remoteSelects const remoteSelect = () => { return () => diff --git a/src/components/table/index.vue b/src/components/table/index.vue index 3c87a94..efa537f 100644 --- a/src/components/table/index.vue +++ b/src/components/table/index.vue @@ -89,8 +89,9 @@ + diff --git a/src/views/auth/menu/index.vue b/src/views/auth/menu/index.vue index cfc1a95..40fe4f3 100644 --- a/src/views/auth/menu/index.vue +++ b/src/views/auth/menu/index.vue @@ -1,101 +1,38 @@ - diff --git a/src/views/auth/menu/menu.vue b/src/views/auth/menu/menu.vue new file mode 100644 index 0000000..0fd4e8d --- /dev/null +++ b/src/views/auth/menu/menu.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/views/auth/menu/popupApi.vue b/src/views/auth/menu/popupApi.vue new file mode 100644 index 0000000..2ebe565 --- /dev/null +++ b/src/views/auth/menu/popupApi.vue @@ -0,0 +1,103 @@ + + diff --git a/src/views/auth/menu/popupForm.vue b/src/views/auth/menu/popupMenu.vue similarity index 87% rename from src/views/auth/menu/popupForm.vue rename to src/views/auth/menu/popupMenu.vue index 4a5a4aa..d4fc445 100644 --- a/src/views/auth/menu/popupForm.vue +++ b/src/views/auth/menu/popupMenu.vue @@ -46,10 +46,18 @@ import TableStore from '@/utils/tableStore' import IconSelector from '@/components/baInput/components/iconSelector.vue' import { updateMenu, addMenu } from '@/api/systerm' +defineOptions({ + name: 'auth/menu/popupMenu' +}) +const emits = defineEmits<{ + (e: 'init'): void +}>() const tableStore = inject('tableStore') as TableStore const cascaderProps = { label: 'title', - value: 'id' + value: 'id', + checkStrictly: true, + emitPath: false } const form: any = reactive({ code: '', @@ -69,20 +77,20 @@ const title = ref('新增菜单') const open = (text: string, data?: anyObj) => { console.log(data) title.value = text + // 重置表单 + for (let key in form) { + form[key] = '' + } + form.pid = '0' + form.sort = 0 + form.type = 0 + if (data) { for (let key in form) { - form[key] = data[key] + form[key] = data[key] || '' } - form.path = data.routePath - form.name = data.title - } else { - // 重置表单 - for (let key in form) { - form[key] = '' - } - form.pid = '0' - form.sort = 0 - form.type = 0 + form.path = data.routePath || '' + form.name = data.title || '' } dialogVisible.value = true } @@ -95,9 +103,9 @@ const submit = async () => { delete obj.id await addMenu(obj) } - tableStore.index() + emits('init') dialogVisible.value = false } defineExpose({ open }) - + \ No newline at end of file diff --git a/types/table.d.ts b/types/table.d.ts index 7611eeb..7430c77 100644 --- a/types/table.d.ts +++ b/types/table.d.ts @@ -1,12 +1,12 @@ import Table from '@/components/table/index.vue' import { Component } from 'vue' -import type { VxeColumnProps } from 'vxe-table' +import type { VxeColumnProps, VxeTableInstance } from 'vxe-table' import type { PopconfirmProps, ButtonType, ButtonProps } from 'element-plus' import { Mutable } from 'element-plus/es/utils' declare global { interface CnTable { - ref: typeof Table | null + ref: VxeTableInstance | null data: TableRow[] | any // 前端分页数据 webPagingData: TableRow[][]