import mail from "@/api/mail.js";
import { Message } from 'element-ui';

let Base64 = require('js-base64').Base64;

const state = {
    mailPagination: {},
    mailRows: [],
    mailTotal: 0,
    tree:[],
    mailData:{},
    mailSettingDefault:{},
    userRows:[],

    mailLinkmanPagination:{},
    mailLinkmanRows: [],
    mailLinkmanTotal: 0,
    mailLinkmanData:{},
    mailLinkman:{},

    mailSettingPagination:{},
    mailSettingRows: [],
    mailSettingTotal: 0,
    mailSettingData:{}
}
const getters = {}

const actions ={
    //邮件页面
    getMailTreeList({commit,state}) {
        return new Promise((resolve, reject) => {
            mail.getMailTreeList(response=>{
                resolve(response.data);
                commit("setMailTrees",response.data);

            });
        });
    },
    getMailByPagination({commit,state},pagination) {
        return new Promise((resolve, reject) => {
            mail.getMialByPagination(pagination, response =>{
                commit("setMailRows",response.data.rows);    //列表数据
                commit("setMailTotal",response.data.total);      //总数据条数
                let pageaBean= {"page":response.data.page,"pageSize":response.data.pageSize,"showTotal":true};
                commit("setMailPagination",pageaBean);  //显示第几页，每页显示多少条
                resolve(response.data.rows);
            });
        });
    },
    setMailPaginationSize({commit, state}, size){
        commit("setMailPaginationSize",size);
    },
    setMailPaginationPageNum({commit, state}, currentPage){
        commit("setMailPaginationPageNum",currentPage);
    },
    deleteMaliById({commit, state},data){
        return new Promise((resolve, reject) => {
            mail.deleteMaliById(data, response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    Message.error(response.data.message);
                    reject();
                }
            });
        });
    },
    deleteMaliOnes({commit, state},data){
        return new Promise((resolve, reject) => {
            mail.deleteMaliOnes(data, response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    Message.error(response.data.message);
                    reject();
                }
            });
        });
    },
    getSysncById({commit, state},id){
        return new Promise((resolve, reject) => {
            mail.getSysncById(id, response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    Message.error(response.data.message);
                    reject();
                }
            });
        });
    },
    getMailById({commit,state},id) {
        return new Promise((resolve, reject) => {
            mail.getMailById(id,  response =>{
                commit("setMailForms",response.data);    //列表数据
                resolve(response.data);
            });
        });
    },
    saveMail({commit,state},data) {
        return new Promise((resolve, reject) => {
            mail.saveMail(data,  response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    // Message.error(response.data.message);
                    reject();
                }
            });
        });
    },
    getUserlistByPagination({commit,state},query) {
        mail.getUserlistByPagination(query, response =>{
            commit("setUserRows",response.data);    //列表数据
        });
    },
    setMailByisRead({commit,state},id) {
        return new Promise((resolve, reject) => {
            mail.setMailByisRead(id,  response =>{
                resolve();
            });
        });
    },


    //邮箱联系人页面
    getMailLinkmanByPagination({commit,state},pagination) {
        return new Promise((resolve, reject) => {
            mail.getMailLinkmanByPagination(pagination, response =>{
                commit("setMailLinkmanRows",response.data.rows);    //列表数据
                commit("setMailLinkmanTotal",response.data.total);      //总数据条数
                let pageaBean= {"page":response.data.page,"pageSize":response.data.pageSize,"showTotal":true};
                commit("setMailLinkmanPagination",pageaBean);  //显示第几页，每页显示多少条
                resolve(response.data.rows);
            });
        });
    },
    setMailLinkmanPaginationSize({commit, state}, size){
        commit("setMailLinkmanPaginationSize",size);
    },
    setMailLinkmanPaginationPageNum({commit, state}, currentPage){
        commit("setMailLinkmanPaginationPageNum",currentPage);
    },
    getMailLinkmanById({commit,state},id) {
        mail.getMailLinkmanById(id,  response =>{
            commit("setMailLinkmanForms",response.data);
        });
    },
    getMailLinkmanByMail({commit, state}, id) {
        mail.getMailLinkmanByMail(id,response =>{
            commit("setMailLinkman",response.data);
        });
    },
    deleteMaliLinkmanById({commit, state},data){
        return new Promise((resolve, reject) => {
            mail.deleteMaliLinkmanById(data, response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    Message.error(response.data.message);
                    reject();
                }
            });
        });
    },
    saveMailLinkman({commit,state},data) {
        return new Promise((resolve, reject) => {
            mail.saveMailLinkman(data,  response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    Message.error(response.data.message);
                    reject();
                }
            });
        });
    },
    //


    //邮箱配置页面
    getMailSettingByPagination({commit,state},pagination) {
        return new Promise((resolve, reject) => {
            mail.getMailSettingByPagination(pagination, response =>{
                commit("setMailSettingRows",response.data.rows);    //列表数据
                commit("setMailSettingTotal",response.data.total);      //总数据条数
                let pageaBean= {"page":response.data.page,"pageSize":response.data.pageSize,"showTotal":true};
                commit("setMailSettingPagination",pageaBean);  //显示第几页，每页显示多少条
                resolve(response.data.rows);
            });
        });
    },
    setMailSettingPaginationSize({commit, state}, size){
        commit("setMailSettingPaginationSize",size);
    },
    setMailSettingPaginationPageNum({commit, state}, currentPage){
        commit("setMailSettingPaginationPageNum",currentPage);
    },
    getMailSettingById({commit,state},id) {
        return new Promise((resolve, reject) => {
            mail.getMailSettingById(id,  response =>{
                commit("setMailSettingForms",response.data);    //列表数据
                resolve(response.data);
            });
        });
    },
    setIsOriginPwd({commit,state},isOriginPwd) {
        commit("setIsOriginPwd",isOriginPwd);
    },
    deleteMaliSettingById({commit, state},data){
        return new Promise((resolve, reject) => {
            mail.deleteMaliSettingById(data, response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    Message.error(response.data.message);
                    reject();
                }
            });
        });

    },
    saveMailSetting({commit,state},data) {
        return new Promise((resolve, reject) => {
            mail.saveMailSetting(data,  response =>{
                if(response.data.state){
                    Message.success("保存成功");
                    resolve();
                }else{
                    Message.error("保存失败");
                    reject();
                }
            });
        });
    },
    testMailConnect({commit,state},data) {
        return new Promise((resolve, reject) => {
            mail.testMailConnect(data,  response =>{
                if(response.data.state){
                    Message.success("连接成功");
                    resolve();
                }else{
                    Message.error("测试连接失败");
                    reject();
                }
            });
        });
    },
    testMailConnectById({commit,state},id) {
        return new Promise((resolve, reject) => {
            mail.testMailConnectById(id,  response =>{
                if(response.data.state){
                    Message.success("连接成功");
                    resolve();
                }else{
                    Message.error("测试连接失败");
                    reject();
                }
            });
        });
    },
    setMailSettingDefaultById({commit,state},id) {
        return new Promise((resolve, reject) => {
            mail.setMailSettingDefaultById(id,  response =>{
                if(response.data.state){
                    Message.success(response.data.message);
                    resolve();
                }else{
                    Message.error(response.data.message);
                    reject();
                }
            });
        });
    }
}



const mutations = {
    //邮件页面
    setMailPagination(state, pagination) {
        state.mailPagination = pagination
    },
    setMailPaginationSize(state, size){
        state.mailPagination.pageSize = size;
    },
    setMailPaginationPageNum(state,currentPage){
        state.mailPagination.page=currentPage;
    },
    setMailRows(state, rows) {
        state.mailRows = rows
    },
    setMailTotal(state, total){
        state.mailTotal = total
    },
    setMailTrees(state,tree){
        state.tree=tree;
        for( let i of tree){
            if(i.isDefault==1){
                state.mailSettingDefault=i;
            }
        }
    },
    setMailForms(state, data) {
        data.content=Base64.decode(data.content);
        state.mailData = data
    },
    setUserRows(state, rows) {
        state.userRows = rows
    },


    //邮箱联系人页面
    setMailLinkmanPagination(state, pagination) {
        state.mailLinkmanPagination = pagination
    },
    setMailLinkmanPaginationSize(state, size){
        state.mailLinkmanPagination.pageSize = size;
    },
    setMailLinkmanPaginationPageNum(state,currentPage){
        state.mailLinkmanPagination.page=currentPage;
    },
    setMailLinkmanRows(state, rows) {
        state.mailLinkmanRows = rows
    },
    setMailLinkmanTotal(state, total){
        state.mailLinkmanTotal = total
    },
    setMailLinkmanForms(state, form) {
        state.mailLinkmanData = form
    },
    setMailLinkman(state,mailLinkman) {
        state.mailLinkman=mailLinkman
    },

    //邮箱配置页面
    setMailSettingPagination(state, pagination) {
        state.mailSettingPagination = pagination
    },
    setMailSettingPaginationSize(state, size){
        state.mailSettingPagination.pageSize = size;
    },
    setMailSettingPaginationPageNum(state,currentPage){
        state.mailSettingPagination.page=currentPage;
    },
    setMailSettingRows(state, rows) {
        state.mailSettingRows = rows
    },
    setMailSettingTotal(state, total){
        state.mailSettingTotal = total
    },
    setMailSettingForms(state, form) {
        state.mailSettingData = form;
        state.mailSettingData.isOriginPwd=false;
    },
    setIsOriginPwd(state,isOriginPwd){
        state.mailSettingData.isOriginPwd=isOriginPwd;
    },
}

export default {
    namespaced: true,
    state,
    getters,
    actions,
    mutations
}
