edit.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <template>
  2. <el-dialog class="api-edit" v-model="showDialog" :title="`${formData.id ? '编辑租户' : '新增租户'}`" width="600px" :close-on-click-modal="false" :close-on-press-escape="false">
  3. <el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="85px" @keyup.enter="onSubmit" v-if="showDialog">
  4. <el-form-item label="租户名称" prop="name">
  5. <el-input v-model="formData.name" placeholder="请输入租户名称" />
  6. </el-form-item>
  7. <el-form-item label="租户编码" prop="code">
  8. <el-input v-model="formData.code" placeholder="请输入租户编码" />
  9. </el-form-item>
  10. <el-form-item label="系统名称" prop="systemName">
  11. <el-input v-model="formData.systemName" placeholder="请输入系统名称" />
  12. </el-form-item>
  13. <el-form-item label="系统版权" prop="systemCopyright">
  14. <el-input v-model="formData.systemCopyright" placeholder="请输入系统版权" />
  15. </el-form-item>
  16. <el-form-item label="系统LOGO(小图标)" prop="logoMini">
  17. <upload-vue :img="formData.logoMini" @set-img="setImg('logoMini', $event)"></upload-vue>
  18. </el-form-item>
  19. <el-form-item label="登录展示图" prop="logoPic">
  20. <upload-vue :img="formData.logoPic" @set-img="setImg('logoPic', $event)"></upload-vue>
  21. </el-form-item>
  22. <el-form-item label="系统LOGO" prop="logo">
  23. <upload-vue :img="formData.logo" @set-img="setImg('logo', $event)"></upload-vue>
  24. </el-form-item>
  25. <el-form-item label="简介" prop="description">
  26. <el-input v-model="formData.description" type="textarea" :rows="3" />
  27. </el-form-item>
  28. </el-form>
  29. <template #footer>
  30. <div class="dialog-footer">
  31. <el-button @click="cancel">取消</el-button>
  32. <el-button type="primary" @click="onSubmit">确定</el-button>
  33. </div>
  34. </template>
  35. </el-dialog>
  36. </template>
  37. <script lang="ts" setup>
  38. import { ref, reactive } from 'vue';
  39. import api from '/@/api/modules/tenant';
  40. import { ruleRequired } from '/@/utils/validator';
  41. import { ElMessage, UploadProps } from 'element-plus';
  42. import UploadVue from '/@/components/upload/index.vue';
  43. const emit = defineEmits(['getList']);
  44. const showDialog = ref(false);
  45. const formRef = ref();
  46. const baseForm: any = {
  47. id: undefined,
  48. name: '',
  49. code: '',
  50. systemName: '',
  51. systemCopyright: '',
  52. description: '',
  53. };
  54. const formData = reactive<any>(JSON.parse(JSON.stringify(baseForm)));
  55. const ruleForm = {
  56. name: [ruleRequired('租户名称不能为空', 'change')],
  57. code: [ruleRequired('租户编码不能为空', 'change')],
  58. };
  59. const onSubmit = async () => {
  60. await formRef.value.validate();
  61. const theApi = formData.id ? api.edit : api.add;
  62. await theApi(formData);
  63. ElMessage.success('操作成功');
  64. resetForm();
  65. showDialog.value = false;
  66. emit('getList');
  67. };
  68. const resetForm = async () => {
  69. const types = formData.types
  70. Object.assign(formData, { ...JSON.parse(JSON.stringify(baseForm)) });
  71. formRef.value && formRef.value.resetFields(formData);
  72. };
  73. const cancel = async () => {
  74. resetForm()
  75. showDialog.value = false
  76. };
  77. const open = async (row: any) => {
  78. resetForm();
  79. if(row) Object.assign(formData, row)
  80. showDialog.value = true;
  81. };
  82. const setImg = (key: string, val: string) => {
  83. formData[key] = val
  84. }
  85. defineExpose({ open });
  86. </script>