edit.hbs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <el-dialog v-model="dialogFormVisible" append-to-body draggable :title="title" width="500px" @close="close">
  3. <el-form ref="formRef" label-width="80px" :model="form" :rules="rules">
  4. <el-form-item label="标题" prop="title" show-overflow-tooltip>
  5. <el-input v-model.trim="form.title" clearable />
  6. </el-form-item>
  7. <el-form-item label="作者" prop="author">
  8. <el-input v-model.trim="form.author" clearable />
  9. </el-form-item>
  10. </el-form>
  11. <template #footer>
  12. <el-button @click="close">取 消</el-button>
  13. <el-button type="primary" @click="save">确 定</el-button>
  14. </template>
  15. </el-dialog>
  16. </template>
  17. <script lang="ts" setup>
  18. import { doEdit } from '/@/api/{{ camelCase name }}'
  19. defineOptions({
  20. name: '{{ properCase name }}Edit',
  21. })
  22. const emit = defineEmits(['fetch-data'])
  23. const $baseMessage = inject<any>('$baseMessage')
  24. const formRef = ref<any>(null)
  25. const title = ref<string>('')
  26. const dialogFormVisible = ref<boolean>(false)
  27. let form = reactive<any>({
  28. title: '',
  29. author: '',
  30. })
  31. const rules = reactive<any>({
  32. title: [{ required: true, trigger: 'blur', message: '请输入标题' }],
  33. author: [{ required: true, trigger: 'blur', message: '请输入作者' }],
  34. })
  35. const showEdit = (row: any) => {
  36. if (!row) {
  37. title.value = '添加'
  38. form = reactive<any>({})
  39. } else {
  40. title.value = '编辑'
  41. form = reactive<any>({ ...row })
  42. }
  43. dialogFormVisible.value = true
  44. }
  45. defineExpose({
  46. showEdit,
  47. })
  48. const close = () => {
  49. formRef.value.resetFields()
  50. emit('fetch-data')
  51. dialogFormVisible.value = false
  52. }
  53. const save = () => {
  54. formRef.value.validate(async (valid: any) => {
  55. if (valid) {
  56. const { msg }: any = await doEdit(form)
  57. $baseMessage(msg, 'success', 'hey')
  58. emit('fetch-data')
  59. close()
  60. }
  61. })
  62. }
  63. </script>