ipForm.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div class="apps-form">
  3. <el-dialog
  4. append-to-body :title="'修改IP'" width="880" v-model="visible" :close-on-click-modal="false" :destroy-on-close="true"
  5. draggable>
  6. <IpCollapse :data=ips @ips="updateIps" @delIps="updateDelIps"></IpCollapse>
  7. <template #footer>
  8. <span class="dialog-footer">
  9. <el-button @click="visible = false">{{ t('common.cancelButtonText') }}</el-button>
  10. <el-button type="primary" @click="onSubmit" :disabled="loading">{{ t('common.confirmButtonText')
  11. }}</el-button>
  12. </span>
  13. </template>
  14. </el-dialog>
  15. </div>
  16. </template>
  17. <script setup lang="ts" name="systemMenuDialog">
  18. import { ElMessage } from 'element-plus';
  19. import { useI18n } from 'vue-i18n';
  20. import { updateModIp } from '/@/api/marketing/apps';
  21. const IpCollapse = defineAsyncComponent(() => import('./ipCollapse.vue'));
  22. interface IpItem {
  23. id: String;
  24. ip: 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 ips = ref<IpItem[]>([]);
  36. const childIps = ref();
  37. const delIps = ref<String[]>([]);
  38. const rowData = ref();
  39. // 打开弹窗
  40. const openDialog = async (data: any, row) => {
  41. visible.value = true;
  42. ips.value = data;
  43. rowData.value = row;
  44. };
  45. const updateIps = (data: IpItem[])=>{
  46. childIps.value = data;
  47. }
  48. const updateDelIps = (data: String[]) => {
  49. delIps.value = data;
  50. }
  51. // 保存数据
  52. const onSubmit = async () => {
  53. ElMessage.success('提交成功!');
  54. visible.value = false;
  55. updateModIp({ ips: childIps.value, delIps: delIps.value, id: rowData.value.id}).then((res) => {
  56. emit('refresh');
  57. })
  58. };
  59. // 暴露变量 只有暴漏出来的变量 父组件才能使用
  60. defineExpose({
  61. openDialog,
  62. });
  63. </script>
  64. <style lang="scss">
  65. .el-overlay {
  66. .el-overlay-dialog {
  67. .el-dialog {
  68. .el-dialog__body {
  69. padding: 0 !important;
  70. }
  71. }
  72. }
  73. }
  74. </style>