AddTenantDrawer.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <el-drawer
  3. v-model="props.showAddTenantDrawer"
  4. size="450"
  5. :title="`${mode === 'add' ? '添加' : '编辑'}租户`"
  6. @close="emit('closeDrawer')"
  7. >
  8. <el-form
  9. :model="tenantForm"
  10. :rules="rules"
  11. ref="tenantFormRef"
  12. label-placement="left"
  13. :label-width="80"
  14. >
  15. <el-form-item label="租户名称" prop="tenantName">
  16. <el-input placeholder="请输入租户名称" v-model="props.tenantForm.tenantName" />
  17. </el-form-item>
  18. <el-form-item label="租户编码" prop="tenantCode">
  19. <el-input placeholder="请输入租户编码" v-model="props.tenantForm.tenantCode" />
  20. </el-form-item>
  21. <el-form-item label="上级租户" v-if="props.mode === 'add'">
  22. <el-input :placeholder="props.tenantForm.parentName" disabled />
  23. </el-form-item>
  24. <el-form-item label="开始时间" prop="startTime">
  25. <el-date-picker
  26. v-model="tenantForm.startTime"
  27. type="datetime"
  28. clearable
  29. placeholder="请选择开始时间"
  30. value-format="YYYY-MM-DD hh:mm:ss"
  31. />
  32. </el-form-item>
  33. <el-form-item label="结束时间" prop="endTime">
  34. <el-date-picker
  35. v-model="tenantForm.endTime"
  36. type="datetime"
  37. clearable
  38. placeholder="请选择结束时间"
  39. value-format="YYYY-MM-DD hh:mm:ss"
  40. />
  41. </el-form-item>
  42. </el-form>
  43. <template #footer>
  44. <el-button @click="resetForm(tenantFormRef)">重置</el-button>
  45. <el-button type="primary" @click="submitForm(tenantFormRef)">提交</el-button>
  46. </template>
  47. </el-drawer>
  48. </template>
  49. <script lang="ts" setup>
  50. import { ref } from 'vue';
  51. import {
  52. ElDrawer,
  53. ElForm,
  54. ElFormItem,
  55. ElInput,
  56. ElDatePicker,
  57. ElButton,
  58. ElMessage,
  59. } from 'element-plus';
  60. import type { FormInstance, FormRules } from 'element-plus';
  61. import type { tenantFormType } from '@/types/tenant/type';
  62. import { saveTenantApi, updateTenantApi } from '@/api/tenant/index';
  63. const props = defineProps<{
  64. showAddTenantDrawer: boolean;
  65. tenantForm: tenantFormType;
  66. mode: 'add' | 'edit';
  67. }>();
  68. const emit = defineEmits(['closeDrawer', 'loadTenantTable']);
  69. const tenantFormRef = ref<FormInstance>();
  70. const rules: FormRules = {
  71. tenantName: {
  72. required: true,
  73. message: '请填写租户名称',
  74. trigger: 'blur',
  75. },
  76. tenantCode: {
  77. required: true,
  78. message: '请填写租户编码',
  79. trigger: 'blur',
  80. },
  81. startTime: {
  82. required: true,
  83. message: '请选择租户生效时间',
  84. trigger: 'change',
  85. },
  86. endTime: {
  87. required: true,
  88. message: '请选择租户失效时间',
  89. trigger: 'change',
  90. },
  91. };
  92. const submitForm = async (formEl: FormInstance | undefined) => {
  93. if (!formEl) return;
  94. await formEl.validate((valid) => {
  95. if (valid) {
  96. if (props.mode === 'add') {
  97. saveTenantApi(props.tenantForm).then(() => {
  98. emit('closeDrawer');
  99. emit('loadTenantTable');
  100. ElMessage({
  101. type: 'success',
  102. message: '添加租户成功',
  103. });
  104. });
  105. } else {
  106. updateTenantApi(props.tenantForm).then(() => {
  107. emit('closeDrawer');
  108. emit('loadTenantTable');
  109. ElMessage({
  110. type: 'success',
  111. message: '修改租户成功',
  112. });
  113. });
  114. }
  115. }
  116. });
  117. };
  118. const resetForm = (formEl: FormInstance | undefined) => {
  119. if (!formEl) return;
  120. formEl.resetFields();
  121. };
  122. </script>