domainForm.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <template>
  2. <div class="apps-form">
  3. <el-dialog
  4. append-to-body :title="'修改域名'" width="880" v-model="visible" :close-on-click-modal="false" :destroy-on-close="true"
  5. draggable>
  6. <DomainCollapse :data=domains @domains="updateDomains"
  7. @delDomains="updateDelDomains"></DomainCollapse>
  8. <template #footer>
  9. <span class="dialog-footer">
  10. <el-button @click="visible = false">{{ t('common.cancelButtonText') }}</el-button>
  11. <el-button type="primary" @click="onSubmit" :disabled="loading">{{ t('common.confirmButtonText')
  12. }}</el-button>
  13. </span>
  14. </template>
  15. </el-dialog>
  16. </div>
  17. </template>
  18. <script setup lang="ts" name="systemMenuDialog">
  19. import { ElMessage } from 'element-plus';
  20. import { useI18n } from 'vue-i18n';
  21. const DomainCollapse = defineAsyncComponent(() => import('./domainCollapse.vue'));
  22. interface DomianItem {
  23. id: String;
  24. domain: String;
  25. sourceType: Number; // 1:分组 2:具体域名
  26. groupId: String;
  27. groupName: String;
  28. }
  29. // 定义子组件向父组件传值/事件
  30. const emit = defineEmits(['refresh']);
  31. const { t } = useI18n();
  32. // 定义变量内容
  33. const visible = ref(false);
  34. const loading = ref(false);
  35. const domains = ref<DomianItem[]>([]);
  36. const childDomains = ref();
  37. const delDomains = ref<String[]>([]);
  38. // 打开弹窗
  39. const openDialog = async (data: any) => {
  40. visible.value = true;
  41. domains.value = data;
  42. childDomains.value = [];
  43. delDomains.value = [];
  44. };
  45. const updateDomains = (data: DomianItem[])=>{
  46. childDomains.value = data;
  47. }
  48. const updateDelDomains = (data: String[]) => {
  49. delDomains.value = data;
  50. }
  51. // 保存数据
  52. const onSubmit = async () => {
  53. ElMessage.success('提交成功!');
  54. visible.value = false;
  55. console.log(childDomains.value);
  56. console.log(delDomains.value);
  57. };
  58. // 暴露变量 只有暴漏出来的变量 父组件才能使用
  59. defineExpose({
  60. openDialog,
  61. });
  62. </script>
  63. <style lang="scss">
  64. .el-overlay {
  65. .el-overlay-dialog {
  66. .el-dialog {
  67. .el-dialog__body {
  68. padding: 0 !important;
  69. }
  70. }
  71. }
  72. }
  73. </style>