| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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 { |
| | |
| | | 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: { |
| | |
| | | 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() { |
| | |
| | | }); |
| | | }, |
| | | 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> |