研发图纸文件管理系统-前端项目
he wei
2023-11-02 7054a99936e8137b0069651cca138cdd7758f7ad
U 邮件发送接口变化
1个文件已修改
140 ■■■■■ 已修改文件
src/pages/components/emailCard/emailCard.vue 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/components/emailCard/emailCard.vue
@@ -1,14 +1,26 @@
<template>
  <a-form-model ref="formRef" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
  <a-form-model
    ref="formRef"
    :model="form"
    :rules="rules"
    :label-col="labelCol"
    :wrapper-col="wrapperCol"
  >
    <a-form-model-item label="收件人:" prop="mailList">
      <a-select
          mode="multiple"
          placeholder=""
          :value="selectedItems"
          style="width: 100%"
          allow-clear
          @change="handleChange">
        <a-select-option v-for="item in filteredOptions" :key="item.name" :value="item.name" :disabled="!item.isHasMail">
        mode="multiple"
        placeholder=""
        :value="selectedItems"
        style="width: 100%"
        allow-clear
        @change="handleChange"
      >
        <a-select-option
          v-for="item in filteredOptions"
          :key="item.name"
          :value="item.name"
          :disabled="!item.isHasMail"
        >
          {{ item.name }}
        </a-select-option>
      </a-select>
@@ -17,7 +29,11 @@
      <a-input v-model="form.title" allow-clear></a-input>
    </a-form-model-item>
    <a-form-model-item label="邮件内容:" prop="content">
      <a-textarea v-model="form.content"  allow-clear :autosize="{'minRows': 6, 'maxRows': 24}"></a-textarea>
      <a-textarea
        v-model="form.content"
        allow-clear
        :autosize="{ minRows: 6, maxRows: 24 }"
      ></a-textarea>
    </a-form-model-item>
    <div class="email-footer">
      <a-button type="primary" @click="checkForm">确认发送</a-button>
@@ -26,32 +42,32 @@
</template>
<script>
import {searchDefaultMailUser, sendMail} from "./apis";
import { searchDefaultMailUser, sendMail } from "./apis";
export default {
  name: "emailCard",
  props: {
    visible: {
      type: Boolean,
      default: false
      default: false,
    },
    users: {
      type: Array,
      default() {
        return [];
      }
      },
    },
    title: {
      type: [String, Number],
      default: ""
      default: "",
    },
    content: {
      type: [String, Number],
      default: ""
      default: "",
    },
        type: {
            type: [String, Number],
            default: 1  // 1-软件;2-sop文件
        }
    type: {
      type: [String, Number],
      default: 1, // 1-软件;2-sop文件
    },
  },
  data() {
    return {
@@ -92,10 +108,12 @@
  computed: {
    filteredOptions() {
      let users = this.users;
      return users.filter(o => !this.selectedItems.includes(o.name)).map(o=> {
        o.isHasMail = o.mail?true:false;
        return o;
      });
      return users
        .filter((o) => !this.selectedItems.includes(o.name))
        .map((o) => {
          o.isHasMail = o.mail ? true : false;
          return o;
        });
    },
  },
  methods: {
@@ -104,17 +122,21 @@
      let list = this.defaultMailUsers;
      let users = this.users;
      // 确定用户在默认用户表且用户存在邮件地址
      this.selectedItems = users.filter(o => list.includes(o.name) && o.mail?true:false).map(item=>{
        return item.name;
      });
      this.selectedItems = users
        .filter((o) => (list.includes(o.name) && o.mail ? true : false))
        .map((item) => {
          return item.name;
        });
      this.handleChange(this.selectedItems);
    },
    handleChange(selectedItems) {
      this.selectedItems = selectedItems;
      let users = this.users;
      let mailList = users.filter(o => this.selectedItems.includes(o.name)).map(item=>{
        return item.mail;
      });
      let mailList = users
        .filter((o) => this.selectedItems.includes(o.name))
        .map((item) => {
          return item.mail;
        });
      this.form.mailList = mailList;
    },
    checkForm() {
@@ -128,45 +150,47 @@
      });
    },
    sendEmail() {
      let {mailList, title, content} = this.form;
      let params = {mailList, title, content};
      let { mailList, title, content } = this.form;
      let params = { mailList, title, content };
      let loading = this.$layer.loading();
      sendMail(params).then(res=>{
        this.$layer.close(loading);
      sendMail(params)
        .then((res) => {
          this.$layer.close(loading);
          let { code, data, msg } = res.data;
          if (code && data) {
            this.$message.success("邮件发送成功!");
          } else {
            this.$message.error(msg);
          }
          this.$emit("update:visible", false);
        })
        .catch((error) => {
          this.$layer.close(loading);
          console.log(error);
          this.$message.error("邮件发送失败,请检查网络!");
        });
    },
    searchDefaultMailUser() {
      let type = this.type;
      searchDefaultMailUser(type).then((res) => {
        let rs = res.data;
        if(rs.code == 1) {
          this.$emit('update:visible', false);
          this.$message.success("邮件发送成功!");
        }else {
          this.$message.error(rs.msg);
        let data = [];
        if (rs.code === 1) {
          data = rs.data.map((item) => {
            return item.user;
          });
        }
      }).catch(error=>{
        this.$layer.close(loading);
        console.log(error);
        this.$message.error("邮件发送失败,请检查网络!");
        this.defaultMailUsers = data;
        this.setSelectedItems();
      });
    },
        searchDefaultMailUser() {
            let type = this.type;
            searchDefaultMailUser(type).then(res=>{
                let rs = res.data;
                let data = [];
                if(rs.code === 1) {
                    data = rs.data.map(item=>{
                        return item.user;
                    });
                }
                this.defaultMailUsers = data;
                this.setSelectedItems();
            });
        }
  },
  mounted() {
    this.form.title = this.title;
    this.form.content = this.content;
        this.searchDefaultMailUser();
  }
}
    this.searchDefaultMailUser();
  },
};
</script>
<style scoped>