express.js 11.0 KB
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            function debounce(handle, delay) {
                let time = null;
                return function () {
                    let self = this,
                        arg = arguments;
                    clearTimeout(time);
                    time = setTimeout(function () {
                        handle.apply(self, arg);
                    }, delay)
                }
            }
            var companyIndex = new Vue({
                el: "#companyIndex",
                data() {
                    return {
                        indexData: [],
                        searchKey: '',

                        offset: 0,
                        limit: 10,
                        totalPage: 0,
                        currentPage: 1,
                        isAjax:false,
                    }
                },
                created() {
                    this.getData();
                },
                methods: {
                    getData() {
                        let that = this;
                        that.isAjax=true
                        Fast.api.ajax({
                            url: 'groupon/express/index',
                            loading: false,
                            type: 'GET',
                            data: {
                                searchWhere: that.searchKey,
                                offset: that.offset,
                                limit: that.limit,
                            }
                        }, function (ret, res) {
                            that.indexData = res.data.rows;
                            that.totalPage = res.data.total;
                            that.isAjax=false
                            return false;
                        }, function (ret, res) {
                            that.isAjax=false;
                        })
                    },
                    operation(type, id) {
                        let that = this;
                        switch (type) {
                            case 'create':
                                Fast.api.open("groupon/express/add", "新建", {
                                    callback(data) {
                                        if(data.data){
                                            that.getData();
                                        }
                                    }
                                });
                                break;
                            case 'edit':
                                parent.Fast.api.open("groupon/express/edit?ids=" + id, "编辑", {
                                    callback: function (data) {
                                        if(data.data){
                                            that.getData();
                                        }
                                    }
                                });
                                break;
                            case 'del':
                                let ids;
                                if (id) {
                                    ids = id;
                                } else {
                                    let idArr = []
                                    if (that.multipleSelection.length > 0) {
                                        that.multipleSelection.forEach(i => {
                                            idArr.push(i.id)
                                        })
                                        ids = idArr.join(',')
                                    }
                                }
                                if (ids) {
                                    that.$confirm('此操作将删除快递公司, 是否继续?', '提示', {
                                        confirmButtonText: '确定',
                                        cancelButtonText: '取消',
                                        type: 'warning'
                                    }).then(() => {
                                        Fast.api.ajax({
                                            url: 'groupon/express/del/ids/' + ids,
                                            loading: true,
                                            type: 'POST',
                                        }, function (ret, res) {
                                            that.getData();
                                            return false;
                                        })
                                    }).catch(() => {
                                        that.$message({
                                            type: 'info',
                                            message: '已取消删除'
                                        });
                                    });
                                }
                                break;
                            case 'recycle':
                                Fast.api.open('groupon/express/recyclebin', '查看回收站')
                                break;
                        }
                    },
                    handleSizeChange(val) {
                        this.offset = 0
                        this.limit = val;
                        this.currentPage = 1;
                        this.getData()
                    },
                    handleCurrentChange(val) {
                        this.currentPage = val;
                        this.offset = (val - 1) * this.limit;
                        this.getData()
                    },
                    tableRowClassName({
                        rowIndex
                    }) {
                        if (rowIndex % 2 == 1) {
                            return 'bg-color';
                        }
                        return '';
                    },
                    tableCellClassName({
                        columnIndex
                    }) {
                        if (columnIndex == 1 || columnIndex == 4) {
                            return 'cell-left';
                        }
                        return '';
                    },
                    debounceFilter: debounce(function () {
                        this.getData()
                    }, 1000),
                },
                watch: {
                    searchKey(newVal, oldVal) {
                        if (newVal != oldVal) {
                            this.offset = 0;
                            this.limit = 10;
                            this.currentPage = 1;
                            this.debounceFilter();
                        }
                    },
                },
            })
        },
        add: function () {
            Controller.detailInit('add');
        },
        edit: function () {
            Controller.detailInit('edit');
        },
        detailInit: function (type) {
            function urlParmas(par) {
                let value = ""
                window.location.search.replace("?", '').split("&").forEach(i => {
                    if (i.split('=')[0] == par) {
                        value = JSON.parse(decodeURI(i.split('=')[1]))
                    }
                })
                return value
            }
            var detailInit = new Vue({
                el: "#detailInit",
                data() {
                    return {
                        optType: type,
                        id: urlParmas('ids'),
                        detailForm: {},
                        detailFormInit: {
                            name: '',
                            code: '',
                            weigh: ''
                        },
                        rules: {
                            name: [{
                                required: true,
                                message: '请输入快递公司',
                                trigger: 'blur'
                            }],
                            code: [{
                                required: true,
                                message: '请输入快递编号',
                                trigger: 'blur'
                            }],
                        }

                    }
                },
                created() {
                    this.detailForm = JSON.parse(JSON.stringify(this.detailFormInit));
                    if (this.optType == 'edit') {
                        for(key in this.detailForm){
                            this.detailForm[key]=Config.row[key]
                        }
                    }
                },
                methods: {
                    getdetailForm() {
                        let that = this;
                        Fast.api.ajax({
                            url: 'groupon/express/edit/ids/' + that.id,
                            loading: true,
                        }, function (ret, res) {
                            that.detailForm = res.data
                            return false;
                        })
                    },
                    submitForm(type, formName) {
                        let that = this;
                        if (type) {
                            this.$refs[formName].validate((valid) => {
                                if (valid) {
                                    let formData = JSON.stringify(that.detailForm);
                                    if (that.optType == 'edit') {
                                        Fast.api.ajax({
                                            url: 'groupon/express/edit/ids/' + that.id,
                                            loading: true,
                                            data: {
                                                data:formData
                                            }
                                        }, function (ret, res) {
                                            Fast.api.close({data:true});
                                        })
                                    } else {
                                        Fast.api.ajax({
                                            url: 'groupon/express/add',
                                            loading: true,
                                            data: {
                                                data:formData
                                            }
                                        }, function (ret, res) {
                                            Fast.api.close({data:true});
                                        })
                                    }
                                } else {
                                    console.log('error submit!!');
                                    return false;
                                }
                            });
                        } else {
                            Fast.api.close({data:false});
                        }
                    },
                },
            })
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    };
    return Controller;
});