wms-antdvue/.svn/pristine/55/552b20b7f808732e3d56aa11be9daecdf1764c12.svn-base
2024-11-07 16:33:03 +08:00

136 lines
3.5 KiB
Plaintext

<template>
<a-drawer
:title="title"
v-model:visible="isDrawer"
:width="width"
:placement="placement"
closable
>
<a-form :model="formParams" :rules="rules" ref="formRef">
<a-form-item label="类型" name="type">
<span>{{ formParams.type === 1 ? '侧边栏菜单' : '' }}</span>
</a-form-item>
<a-form-item label="标题" name="label">
<a-input placeholder="请输入标题" v-model:value="formParams.label" />
</a-form-item>
<a-form-item label="副标题" name="subtitle">
<a-input placeholder="请输入副标题" v-model:value="formParams.subtitle" />
</a-form-item>
<a-form-item label="路径" name="path">
<a-input placeholder="请输入路径" v-model:value="formParams.path" />
</a-form-item>
<a-form-item label="打开方式" name="openType">
<a-radio-group v-model:value="formParams.openType" name="openType">
<a-space>
<a-radio :value="1">当前窗口</a-radio>
<a-radio :value="2">新窗口</a-radio>
</a-space>
</a-radio-group>
</a-form-item>
<a-form-item label="菜单权限" name="auth">
<a-input placeholder="请输入权限,多个权限用,分割" v-model:value="formParams.auth" />
</a-form-item>
<a-form-item label="隐藏侧边栏" name="hidden">
<a-switch v-model:checked="formParams.hidden" />
</a-form-item>
</a-form>
<template #footer>
<div class="flex justify-end w-full">
<a-button type="primary" :loading="subLoading" @click="formSubmit" class="mr-2"
>提交</a-button
>
<a-button @click="handleReset">重置</a-button>
</div>
</template>
</a-drawer>
</template>
<script lang="ts">
import { defineComponent, reactive, ref, toRefs } from 'vue';
import { message } from 'ant-design-vue';
import { error } from '@/utils/log';
const rules = {
label: {
required: true,
message: '请输入标题',
trigger: 'blur',
},
path: {
required: true,
message: '请输入路径',
trigger: 'blur',
},
};
export default defineComponent({
name: 'CreateDrawer',
components: {},
props: {
title: {
type: String,
default: '添加顶级菜单',
},
width: {
type: Number,
default: 450,
},
},
setup() {
const formRef: any = ref(null);
const defaultValueRef = () => ({
label: '',
type: 1,
subtitle: '',
openType: 1,
auth: '',
path: '',
hidden: false,
});
const state = reactive({
isDrawer: false,
subLoading: false,
formParams: defaultValueRef(),
placement: 'right',
});
function openDrawer() {
state.isDrawer = true;
}
function closeDrawer() {
state.isDrawer = false;
}
function formSubmit() {
formRef.value
.validate()
.then(() => {
message.success('添加成功');
handleReset();
closeDrawer();
})
.catch((error) => {
console.log('error', error);
message.error('请填写完整信息');
});
}
function handleReset() {
formRef.value.resetFields();
}
return {
...toRefs(state),
formRef,
rules,
formSubmit,
handleReset,
openDrawer,
closeDrawer,
};
},
});
</script>