mail-template-add-or-update.vue 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <el-dialog v-model="visible" :title="!dataForm.id ? $t('add') : $t('update')" :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="name" :label="$t('mail.name')">
  5. <el-input v-model="dataForm.name" :placeholder="$t('mail.name')"></el-input>
  6. </el-form-item>
  7. <el-form-item prop="subject" :label="$t('mail.subject')">
  8. <el-input v-model="dataForm.subject" :placeholder="$t('mail.subject')"></el-input>
  9. </el-form-item>
  10. <el-form-item prop="content" :label="$t('mail.content')">
  11. <WangEditor v-model="dataForm.content"></WangEditor>
  12. </el-form-item>
  13. </el-form>
  14. <template v-slot:footer>
  15. <el-button @click="visible = false">{{ $t("cancel") }}</el-button>
  16. <el-button type="primary" @click="dataFormSubmitHandle()">{{ $t("confirm") }}</el-button>
  17. </template>
  18. </el-dialog>
  19. </template>
  20. <script lang="ts" setup>
  21. import { reactive, ref } from "vue";
  22. import baseService from "@/service/baseService";
  23. import "quill/dist/quill.snow.css";
  24. import WangEditor from "@/components/wang-editor/index.vue";
  25. import { useI18n } from "vue-i18n";
  26. import { ElMessage } from "element-plus";
  27. const { t } = useI18n();
  28. const emit = defineEmits(["refreshDataList"]);
  29. const visible = ref(false);
  30. const dataFormRef = ref();
  31. const dataForm = reactive({
  32. id: "",
  33. name: "",
  34. subject: "",
  35. content: ""
  36. });
  37. const rules = ref({
  38. name: [{ required: true, message: t("validate.required"), trigger: "blur" }],
  39. subject: [{ required: true, message: t("validate.required"), trigger: "blur" }],
  40. content: [{ required: true, message: t("validate.required"), trigger: "blur" }]
  41. });
  42. const init = (id?: number) => {
  43. visible.value = true;
  44. dataForm.id = "";
  45. // 重置表单数据
  46. if (dataFormRef.value) {
  47. dataFormRef.value.resetFields();
  48. }
  49. if (id) {
  50. getInfo(id);
  51. }
  52. };
  53. // 获取信息
  54. const getInfo = (id: number) => {
  55. baseService.get(`/sys/mailtemplate/${id}`).then((res) => {
  56. Object.assign(dataForm, res.data);
  57. });
  58. };
  59. // 表单提交
  60. const dataFormSubmitHandle = () => {
  61. dataFormRef.value.validate((valid: boolean) => {
  62. if (!valid) {
  63. return false;
  64. }
  65. (!dataForm.id ? baseService.post : baseService.put)("/sys/mailtemplate", dataForm, {
  66. "content-type": "application/x-www-form-urlencoded"
  67. }).then((res) => {
  68. ElMessage.success({
  69. message: t("prompt.success"),
  70. duration: 500,
  71. onClose: () => {
  72. visible.value = false;
  73. emit("refreshDataList");
  74. }
  75. });
  76. });
  77. });
  78. };
  79. defineExpose({
  80. init
  81. });
  82. </script>