ContactDialog.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <el-dialog v-model="dialogVisible" title="联系人管理" width="800px" append-to-body @close="handleClose">
  3. <el-form ref="formRef" :model="formData" :rules="rules" label-width="100px">
  4. <el-row :gutter="20">
  5. <el-col :span="12">
  6. <el-form-item label="姓名" prop="name">
  7. <el-input v-model="formData.name" placeholder="请输入" />
  8. </el-form-item>
  9. </el-col>
  10. <el-col :span="12">
  11. <el-form-item label="电话">
  12. <el-input v-model="formData.phone" placeholder="请输入" />
  13. </el-form-item>
  14. </el-col>
  15. </el-row>
  16. <el-row :gutter="20">
  17. <el-col :span="12">
  18. <el-form-item label="电子邮箱">
  19. <el-input v-model="formData.email" placeholder="请输入" />
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="12">
  23. <el-form-item label="联系人类型">
  24. <el-select v-model="formData.contactType" placeholder="请选择" style="width: 100%">
  25. <el-option label="主要联系人" :value="1" />
  26. <el-option label="次要联系人" :value="2" />
  27. </el-select>
  28. </el-form-item>
  29. </el-col>
  30. </el-row>
  31. </el-form>
  32. <template #footer>
  33. <el-button @click="handleClose">取消</el-button>
  34. <el-button type="primary" @click="handleSubmit">确认</el-button>
  35. </template>
  36. </el-dialog>
  37. </template>
  38. <script setup lang="ts">
  39. import { ref, computed } from 'vue';
  40. import type { PartnerContactsForm } from '@/api/partner/contacts/types';
  41. interface Props {
  42. visible: boolean;
  43. formData: PartnerContactsForm;
  44. }
  45. interface Emits {
  46. (e: 'update:visible', value: boolean): void;
  47. (e: 'update:formData', value: PartnerContactsForm): void;
  48. (e: 'submit', value: PartnerContactsForm): void;
  49. }
  50. const props = defineProps<Props>();
  51. const emit = defineEmits<Emits>();
  52. const dialogVisible = computed({
  53. get: () => props.visible,
  54. set: (value) => emit('update:visible', value)
  55. });
  56. const rules = {
  57. name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }]
  58. };
  59. const formRef = ref();
  60. const handleClose = () => {
  61. emit('update:visible', false);
  62. formRef.value?.resetFields();
  63. };
  64. const handleSubmit = () => {
  65. formRef.value?.validate((valid: boolean) => {
  66. if (valid) {
  67. emit('submit', props.formData);
  68. }
  69. });
  70. };
  71. </script>