12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <template>
- <vab-dialog v-model="dialogFormVisible" append-to-body :title="title" width="500px" @close="close">
- <el-form ref="formRef" label-width="80px" :model="form" :rules="rules">
- <el-form-item label="标题" prop="title">
- <el-input v-model.trim="form.title" clearable />
- </el-form-item>
- <el-form-item label="作者" prop="author">
- <el-input v-model.trim="form.author" clearable />
- </el-form-item>
- </el-form>
- <template #footer>
- <el-button type="primary" @click="save">保存</el-button>
- </template>
- </vab-dialog>
- </template>
- <script lang="ts" setup>
- import type { FormInstance } from 'element-plus'
- import { doEdit } from '/@/api/{{ camelCase name }}'
- defineOptions({
- name: '{{ properCase name }}Edit',
- })
- const emit = defineEmits(['fetch-data'])
- const formRef = ref<FormInstance>()
- const title = ref<string>('')
- const dialogFormVisible = ref<boolean>(false)
- const form = reactive<any>({
- title: '',
- author: '',
- })
- const rules = reactive<any>({
- title: [{ required: true, trigger: 'blur', message: '请输入标题' }],
- author: [{ required: true, trigger: 'blur', message: '请输入作者' }],
- })
- const showEdit = (row: any) => {
- dialogFormVisible.value = true
- nextTick(() => {
- if (!row) title.value = '添加'
- else {
- title.value = '编辑'
- Object.assign(form, row)
- }
- })
- }
- defineExpose({
- showEdit,
- })
- const close = () => {
- formRef.value?.clearValidate()
- formRef.value?.resetFields()
- emit('fetch-data')
- }
- const save = () => {
- formRef.value?.validate(async (valid: any) => {
- if (valid) {
- const { msg }: any = await doEdit(form)
- await $baseMessage(msg, 'success', 'hey')
- await close()
- dialogFormVisible.value = false
- }
- })
- }
- </script>
|