guanqb
2024-03-05 6a4b897b7975b188114e7086d5bf36e2121b5e66
邮件管理接口对接
3 files modified
205 ■■■■■ changed files
src/api/system/email.js 163 ●●●● patch | view | raw | blame | history
src/views/system/email/emailSendingHistory.vue 20 ●●●● patch | view | raw | blame | history
src/views/system/email/emailTemplates.vue 22 ●●●● patch | view | raw | blame | history
src/api/system/email.js
@@ -1,70 +1,137 @@
import request from '@/router/axios';
import request from '@/router/axios'
export const getList = (current, size, params) => {
  return request({
    url: '/api/blade-email/email/list',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
    return request({
        url: '/api/blade-email/email/list',
        method: 'get',
        params: {
            ...params,
            current,
            size,
        }
    })
}
export const getDetail = (id) => {
  return request({
    url: '/api/blade-email/email/detail',
    method: 'get',
    params: {
      id
    }
  })
    return request({
        url: '/api/blade-email/email/detail',
        method: 'get',
        params: {
            id
        }
    })
}
export const remove = (ids) => {
  return request({
    url: '/api/blade-email/email/remove',
    method: 'post',
    params: {
      ids,
    }
  })
    return request({
        url: '/api/blade-email/email/remove',
        method: 'post',
        params: {
            ids,
        }
    })
}
export const add = (row) => {
  return request({
    url: '/api/blade-email/email/submit',
    method: 'post',
    data: row
  })
    return request({
        url: '/api/blade-email/email/submit',
        method: 'post',
        data: row
    })
}
export const update = (row) => {
  return request({
    url: '/api/blade-email/email/submit',
    method: 'post',
    data: row
  })
    return request({
        url: '/api/blade-email/email/submit',
        method: 'post',
        data: row
    })
}
export const enable = (id) => {
  return request({
    url: '/api/blade-email/email/enable',
    method: 'post',
    params: {
      id
    }
  })
    return request({
        url: '/api/blade-email/email/enable',
        method: 'post',
        params: {
            id
        }
    })
}
export const sendEmail = (params) => {
  return request({
    url: '/api/blade-email/email/sendEmail',
    method: 'post',
    params: {
      ...params
    }
  })
    return request({
        url: '/api/blade-email/email/sendEmail',
        method: 'post',
        params: {
            ...params
        }
    })
}
// 邮件管理
// -------------------------------------------------------------------
// 模板记录的结论列表
export const getEmailTemplateList = (current, size, params) => {
    return request({
        url: '/api/blade-email/emailTemplate/list',
        method: 'get',
        params: {
            ...params,
            current,
            size,
        }
    })
}
// 模板记录新增
export const saveEmailTemplateList = (row) => {
    return request({
        url: '/api/blade-email/emailTemplate/save',
        method: 'post',
        data: row
    })
}
// 模板记录修改
export const updateEmailTemplateList = (row) => {
    return request({
        url: '/api/blade-email/emailTemplate/update',
        method: 'post',
        data: row
    })
}
// 模板记录删除
export const removeEmailTemplateList = (ids) => {
    return request({
        url: '/api/blade-email/emailTemplate/remove',
        method: 'post',
        params: {
            ids
        }
    })
}
// 模板记录详情
export const detailEmailTemplateList = (id) => {
    return request({
        url: '/api/blade-email/emailTemplate/detail',
        method: 'get',
        params: {
            id
        }
    })
}
// 消息记录接口
export const getMessageUserPage = (current, size, params) => {
    return request({
        url: '/api/messageUser/messageUser/getPage',
        method: 'get',
        params: {
            ...params,
            current,
            size,
        }
    })
}
src/views/system/email/emailSendingHistory.vue
@@ -5,16 +5,12 @@
            @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
            @refresh-change="refreshChange" @on-load="onLoad">
            <template slot-scope="{ row, size, index }" slot="menu">
                <el-button :size="size" type="text" icon="el-icon-circle-check" @click.stop="handleEnable(row)">复制
                </el-button>
            </template>
        </avue-crud>
    </basic-container>
</template>
<script>
import { getList, getDetail, add, update, remove, enable, sendEmail } from "@/api/system/email"
import { getMessageUserPage } from "@/api/system/email"
import { mapGetters } from "vuex"
export default {
@@ -38,19 +34,23 @@
                border: true,
                index: true,
                viewBtn: false,
                addBtn: false,
                selection: true,
                dialogClickModal: false,
                menuWidth: 350,
                // menuWidth: 350,
                menu: false,
                column: [
                    {
                        label: "主题",
                        prop: "remark",
                        label: "标题",
                        prop: "title",
                        type: "input",
                        align: 'center'
                    },
                    {
                        label: "正文内容",
                        prop: "remark",
                        prop: "content",
                        type: "input",
                        align: 'center'
                    },
                ]
            },
@@ -209,7 +209,7 @@
        },
        onLoad (page, params = {}) {
            this.loading = true
            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
            getMessageUserPage(page.currentPage, page.pageSize, Object.assign(params, {})).then(res => {
                const data = res.data.data
                this.page.total = data.total
                this.data = data.records
src/views/system/email/emailTemplates.vue
@@ -14,7 +14,7 @@
</template>
<script>
import { getList, getDetail, add, update, remove, enable, sendEmail } from "@/api/system/email"
import { getEmailTemplateList, saveEmailTemplateList, updateEmailTemplateList, detailEmailTemplateList, removeEmailTemplateList } from "@/api/system/email"
import { mapGetters } from "vuex"
export default {
@@ -43,14 +43,16 @@
                menuWidth: 350,
                column: [
                    {
                        label: "主题",
                        prop: "remark",
                        label: "标题",
                        prop: "title",
                        type: "input",
                        align: 'center'
                    },
                    {
                        label: "正文内容",
                        prop: "remark",
                        prop: "content",
                        type: "input",
                        align: 'center'
                    },
                ]
            },
@@ -90,7 +92,7 @@
            done()
        },
        rowSave (row, done, loading) {
            add(row).then(() => {
            saveEmailTemplateList(row).then(() => {
                this.onLoad(this.page)
                this.$message({
                    type: "success",
@@ -103,7 +105,7 @@
            })
        },
        rowUpdate (row, index, done, loading) {
            update(row).then(() => {
            updateEmailTemplateList(row).then(() => {
                this.onLoad(this.page)
                this.$message({
                    type: "success",
@@ -122,7 +124,7 @@
                type: "warning"
            })
                .then(() => {
                    return remove(row.id)
                    return removeEmailTemplateList(row.id)
                })
                .then(() => {
                    this.onLoad(this.page)
@@ -162,7 +164,7 @@
                type: "warning"
            })
                .then(() => {
                    return remove(this.ids)
                    return removeEmailTemplateList(this.ids)
                })
                .then(() => {
                    this.onLoad(this.page)
@@ -175,7 +177,7 @@
        },
        beforeOpen (done, type) {
            if (["edit", "view"].includes(type)) {
                getDetail(this.form.id).then(res => {
                detailEmailTemplateList(this.form.id).then(res => {
                    this.form = res.data.data
                })
            }
@@ -209,7 +211,7 @@
        },
        onLoad (page, params = {}) {
            this.loading = true
            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
            getEmailTemplateList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
                const data = res.data.data
                this.page.total = data.total
                this.data = data.records