mail-template-config.vue 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <el-dialog v-model="visible" :title="$t('mail.config')" :close-on-click-modal="false" :close-on-press-escape="false">
  3. <el-form :model="dataForm" :rules="rules" ref="dataFormRef" @keyup.enter="dataFormSubmitHandle()" label-width="120px">
  4. <el-form-item prop="smtp" :label="$t('mail.config')">
  5. <el-input v-model="dataForm.smtp" :placeholder="$t('mail.config')"></el-input>
  6. </el-form-item>
  7. <el-form-item prop="port" :label="$t('mail.port')">
  8. <el-input v-model="dataForm.port" :placeholder="$t('mail.port')"></el-input>
  9. </el-form-item>
  10. <el-form-item prop="username" :label="$t('mail.username')">
  11. <el-input v-model="dataForm.username" :placeholder="$t('mail.username')"></el-input>
  12. </el-form-item>
  13. <el-form-item prop="password" :label="$t('mail.password')">
  14. <el-input v-model="dataForm.password" :placeholder="$t('mail.password')"></el-input>
  15. </el-form-item>
  16. </el-form>
  17. <template v-slot:footer>
  18. <el-button @click="visible = false">{{ $t("cancel") }}</el-button>
  19. <el-button type="primary" @click="dataFormSubmitHandle()">{{ $t("confirm") }}</el-button>
  20. </template>
  21. </el-dialog>
  22. </template>
  23. <script lang="ts" setup>
  24. import { reactive, ref } from "vue";
  25. import baseService from "@/service/baseService";
  26. import { useI18n } from "vue-i18n";
  27. import { ElMessage } from "element-plus";
  28. const { t } = useI18n();
  29. const emit = defineEmits(["refreshDataList"]);
  30. const visible = ref(false);
  31. const dataFormRef = ref();
  32. const dataForm = reactive({
  33. smtp: "",
  34. port: "",
  35. username: "",
  36. password: ""
  37. });
  38. const rules = ref({
  39. smtp: [{ required: true, message: t("validate.required"), trigger: "blur" }],
  40. port: [{ required: true, message: t("validate.required"), trigger: "blur" }],
  41. username: [{ required: true, message: t("validate.required"), trigger: "blur" }],
  42. password: [{ required: true, message: t("validate.required"), trigger: "blur" }]
  43. });
  44. const init = () => {
  45. visible.value = true;
  46. // 重置表单数据
  47. if (dataFormRef.value) {
  48. dataFormRef.value.resetFields();
  49. }
  50. getInfo();
  51. };
  52. // 获取信息
  53. const getInfo = () => {
  54. baseService.get("/sys/mailtemplate/config").then((res) => {
  55. Object.assign(dataForm, res.data);
  56. });
  57. };
  58. // 表单提交
  59. const dataFormSubmitHandle = () => {
  60. dataFormRef.value.validate((valid: boolean) => {
  61. if (!valid) {
  62. return false;
  63. }
  64. baseService.post("/sys/mailtemplate/saveConfig", dataForm).then((res) => {
  65. ElMessage.success({
  66. message: t("prompt.success"),
  67. duration: 500,
  68. onClose: () => {
  69. visible.value = false;
  70. emit("refreshDataList");
  71. }
  72. });
  73. });
  74. });
  75. };
  76. defineExpose({
  77. init
  78. });
  79. </script>