DrawerCommon.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <div>
  3. <el-form ref="ruleDrawerRef" :model="form" label-width="100px">
  4. <el-form-item label="模板名称" prop="name" :rules="[
  5. {
  6. required: true,
  7. message: '输入模板名称',
  8. trigger: 'blur',
  9. },
  10. ]">
  11. <el-input placeholder="请输入模板名称" v-model="form.name" />
  12. </el-form-item>
  13. <el-form-item label="模板代码" prop="code" :rules="[
  14. {
  15. required: true,
  16. message: '输入模板代码',
  17. trigger: 'blur',
  18. },
  19. ]">
  20. <el-input placeholder="请输入模板代码" v-model="form.code" />
  21. </el-form-item>
  22. <el-form-item label="备注" prop="remark">
  23. <el-input placeholder="请输入备注" v-model="form.remark" />
  24. </el-form-item>
  25. <el-form-item label="模板上传">
  26. <el-upload>
  27. <el-button disabled>上传</el-button>
  28. </el-upload>
  29. </el-form-item>
  30. <el-form-item label="状态" prop="status">
  31. <el-switch v-model="form.status" active-value=1 inactive-value=0 />
  32. </el-form-item>
  33. <div style="margin-top: 100px; margin-left: 250px">
  34. <el-button style="margin-left: 50px" @click="resetForm(ruleDrawerRef)">重置</el-button>
  35. <el-button style="margin-left: 50px" @click="submitDrawer(ruleDrawerRef)">提交</el-button>
  36. </div>
  37. </el-form>
  38. </div>
  39. </template>
  40. <script setup lang="ts">
  41. import { ref, watch } from 'vue';
  42. import { FormInstance } from 'element-plus';
  43. import { onMounted } from 'vue';
  44. export interface FormModelCommon {
  45. id: number;
  46. code: string;
  47. name: string;
  48. status: number;
  49. remark: string;
  50. }
  51. export type CreateType = 'create' | 'edit';
  52. const props = defineProps<{ detail: FormModelCommon }>();
  53. const emit = defineEmits(['submitDrawer']);
  54. const form = ref<FormModelCommon>({
  55. id: props.detail.id,
  56. name: props.detail.name,
  57. code: props.detail.code,
  58. remark: props.detail.remark,
  59. status: props.detail.status,
  60. });
  61. watch(
  62. () => props.detail,
  63. (newdetail) => {
  64. form.value = newdetail;
  65. },
  66. { immediate: true },
  67. );
  68. const ruleDrawerRef = ref<FormInstance>();
  69. function resetForm(formE1: FormInstance | undefined) {
  70. if (!formE1) return;
  71. formE1.resetFields();
  72. console.log('resetForm');
  73. }
  74. function submitDrawer(formEl: FormInstance | undefined) {
  75. console.log('common-', form, props.detail.code)
  76. if (!formEl) return;
  77. formEl.validate((valid, fields) => {
  78. if (valid) {
  79. const drawerData = {
  80. id: form.value.id,
  81. name: form.value.name,
  82. code: form.value.code,
  83. remark: form.value.remark,
  84. status: form.value.status,
  85. };
  86. emit('submitDrawer', drawerData);
  87. } else {
  88. console.log('error submit!', fields);
  89. }
  90. });
  91. }
  92. onMounted(() => {
  93. console.log('drawercommon-form', form);
  94. console.log('drawercommon-props', props.detail);
  95. });
  96. </script>
  97. <style scoped></style>