invoice.js 18.0 KB
var index=1;
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function (params) {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
					index_url: params?params.index_url:'facrm/invoice/index',
                    add_url: 'facrm/invoice/add',
                    edit_url: 'facrm/invoice/edit',
                    del_url: 'facrm/invoice/del',
                    multi_url: '',
                    table: '',
                }
            });

            var table = $("#table");
			//在普通搜索渲染后
            table.on('post-common-search.bs.table', function (event, table) {
                var form = $("form", table.$commonsearch);
                $(".commonsearch-table select[name=scene_id]").val( params?params.scene_id:'owner');
            });
			 var columnss=   [
                {field: 'id', title: 'ID'},
                {
                    field: 'scene_id',
                    title: __('场景'),
                    visible: false,
                    formatter: function (v, r) {
                        return scene_list[v];
                    }, searchList: scene_list
                },
                {field: 'contract_id', title: __('合同编号'),  align: 'left', formatter : function (value, row, index) {
                        if (!row.contract) return '-';
                        return '<a href="javascript:void(0);" data-url="facrm/contract/index/detail/ids/' + row.contract_id
                            +'" data-area="[&quot;98%&quot;,&quot;98%&quot;]" class="btn-dialog" data-title="合同详情:'+  row.contract.number+'">'+ row.contract.number+'</a>';
                    },
                    addclass: 'selectpage',
                    extend: 'data-source="facrm/contract/index/selectpage" data-field="name"'},
                {field: 'contract.name', title: __('合同名称'),  align: 'left', formatter : function (value, row, index) {
                        if (!row.contract) return '-';
                        return '<a href="javascript:void(0);" data-url="facrm/contract/index/detail/ids/' + row.contract_id
                            +'" data-area="[&quot;98%&quot;,&quot;98%&quot;]" class="btn-dialog" data-title="合同详情:'+  row.contract.name+'">'+ row.contract.name+'</a>';
                    }},

                {field: 'customer_id', title: __('客户名称'), search: false,  align: 'left', formatter : function (value, row, index) {
                        if (!row.customer) return '-';
                        return '<a href="javascript:void(0);" data-url="facrm/customer/index/detail/ids/' + row.customer.id
                            +'" data-area="[&quot;98%&quot;,&quot;98%&quot;]" class="btn-dialog" data-title="'+ row.customer.name+'">'+ row.customer.name+'('+row.customer_id+')'+'</a>';
                    },addclass: 'selectpage',
                    extend: 'data-source="facrm/customer/index?filter=%7B\"scene_id\"%3A\"1\"%7D" data-field="name" data-orderBy="id desc"'},

                {field: 'money', title: __('发票金额'), operate: 'BETWEEN', sortable: true},
                {field: 'invoice_body', title: __('开票主体'), operate: 'LIKE'},
                {field: 'invoice_name', title: __('发票抬头'), operate: 'LIKE'},
                 {field: 'invoice_issue', title: __('抬头类型'),  formatter: Table.api.formatter.status, searchList: {1: __('企业'), 2: __('个人'), 3: __('事业单位')}},
                 {field: 'invoice_type', title: __('发票类型'),  formatter: Table.api.formatter.status, searchList: {1: __('增普'), 2: __('增专')}},
                 {field: 'register_no', title: __('统一社会信用代码'), operate: 'LIKE'},
                 {field: 'email', title: __('接收邮箱'), operate: 'LIKE'},
                 {field: 'user_name', title: __('收件人'), operate: 'LIKE'},
                 {field: 'user_phone', title: __('收件手机'), operate: 'LIKE'},
                 {field: 'user_address', title: __('邮寄地址'), operate: 'LIKE'},
                {field: 'remarks', title: __('备注'), operate: 'LIKE'},

                {field: 'create_user.nickname', title: __('创建人'), operate: false, search: false,
					addclass: 'selectpage',
					extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                {field: 'create_user_id', title: __('创建人'), visible: false,
					addclass: 'selectpage',
					extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                {
                    field: 'create_time',
                    title: __('创建时间'),
                    formatter: Table.api.formatter.datetime,
                    operate: 'RANGE',
                    addclass: 'datetimerange',
                    sortable: true,
                    extend: 'autocomplete="off"'

                },

                {
                    field: 'check_status',
                    title: __('审核状态'),
                    formatter: function (value, row, index) {
                        var check_status={0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')};
                        var status={0:'未开票',1:'开票中',2:'已开票',3:'开票失败'};
                        retrunstr='';
                        if(row['check_status']==2){
                            retrunstr='('+status[row['status']]+')';
                        }
                        return check_status[row['check_status']]+retrunstr;
                    },
                    searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')}
                },
                 {
                     field: 'status',
                     title: __('Status'),
                     visible: false,
                     searchList: {0:'未开票',1:'开票中',2:'已开票',3:'开票失败'}
                 },
                {
                    field: 'operate',
                    title: __('Operate'),
                    table: table,
                    events: Table.api.events.operate,
                    formatter: Table.api.formatter.operate,
                    buttons: [
                        {
                            name: 'log',
                            text: __('日志'),
                            title:  __('审核日志'),
                            classname: 'btn btn-xs btn-success  btn-dialog',
                            url:function (row) {
                                return  'facrm/flow/log/index/flow_id/'+row.flow_id+"/types_id/"+row.id;
                            }

                        },
                        {
                            name: 'verify',
                            text: '审核',
                            title: '审核申请开具发票',
                            classname: 'btn btn-xs btn-primary  btn-dialog',
                            url: 'facrm/backlog/verify/types/invoice',
                            hidden:function (row) {


                                if (row.flow_admin_id=="") return true;
                                if ($.inArray(row.check_status,[2,3])==1)return true;
                                var admin_id_arr = row.flow_admin_id.split(',');
                                if ($.inArray(Config.admin_id+"",admin_id_arr)==-1)return true;

                                return  false
                            }
                        },
                        {
                            name: 'opener',
                            text: '开具',
                            title: '开具发票',
                            classname: 'btn btn-xs btn-primary  btn-dialog',
                            url: 'facrm/invoice/opener',
                            hidden:function (row) {
                                if (row.check_status!=2){
                                    return  true;
                                }
                                if ($.inArray(row.status,[2,3])==0)return true;
                                return  false
                            }
                        },
                    ],
                }

            ];

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    columnss
                ],
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        
		lists:function(){
            Controller.index({index_url:'facrm/invoice/lists','scene_id':'all'});
        },
		add: function () {
            Controller.api.bindevent();
            Controller.api.selectcontracts();

        },
        edit: function () {
            Controller.api.bindevent();
        },
        setting: function () {
            Controller.api.bindevent();
        },
        opener: function () {
            Controller.api.bindevent();
        },
        recyclebin: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'facrm/invoice/recyclebin',
                }
            });

            var table = $("#table");
            //在普通搜索渲染后
            table.on('post-common-search.bs.table', function (event, table) {
                var form = $("form", table.$commonsearch);

            });
            var columnss=   [
                {checkbox: true},
                {field: 'id', title: 'ID'},

                {field: 'contract_id', title: __('合同ID'),  align: 'left', addclass: 'selectpage',
                    extend: 'data-source="facrm/contract/index/selectpage" data-field="name"'},
                {field: 'money', title: __('发票金额'), operate: 'BETWEEN', sortable: true},
                {field: 'invoice_body', title: __('开票主体'), operate: 'LIKE'},
                {field: 'invoice_name', title: __('发票抬头'), operate: 'LIKE'},
                {field: 'invoice_issue', title: __('抬头类型'),  formatter: Table.api.formatter.status, searchList: {1: __('企业'), 2: __('个人'), 3: __('事业单位')}},
                {field: 'invoice_type', title: __('发票类型'),  formatter: Table.api.formatter.status, searchList: {1: __('增普'), 2: __('增专')}},
                {field: 'register_no', title: __('统一社会信用代码'), operate: 'LIKE'},
                {field: 'email', title: __('接收邮箱'), operate: 'LIKE'},
                {field: 'user_name', title: __('收件人'), operate: 'LIKE'},
                {field: 'user_phone', title: __('收件手机'), operate: 'LIKE'},
                {field: 'user_address', title: __('邮寄地址'), operate: 'LIKE'},
                {field: 'remarks', title: __('备注'), operate: 'LIKE'},

                {field: 'create_user.nickname', title: __('创建人'), operate: false, search: false,
                    addclass: 'selectpage',
                    extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                {field: 'create_user_id', title: __('创建人'), visible: false,
                    addclass: 'selectpage',
                    extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                {
                    field: 'create_time',
                    title: __('创建时间'),
                    formatter: Table.api.formatter.datetime,
                    operate: 'RANGE',
                    addclass: 'datetimerange',
                    sortable: true,
                    extend: 'autocomplete="off"'

                },

                {
                    field: 'check_status',
                    title: __('审核状态'),
                    formatter: function (value, row, index) {
                        var check_status={0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')};
                        var status={0:'未开票',1:'开票中',2:'已开票',3:'开票失败'};
                        retrunstr='';
                        if(row['check_status']==2){
                            retrunstr='('+status[row['status']]+')';
                        }
                        return check_status[row['check_status']]+retrunstr;
                    },
                    searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')}
                },
                {
                    field: 'status',
                    title: __('Status'),
                    visible: false,
                    searchList: {0:'未开票',1:'开票中',2:'已开票',3:'开票失败'}
                },
                {
                    field: 'operate',
                    width: '130px',
                    title: __('Operate'),
                    table: table,
                    events: Table.api.events.operate,
                    buttons: [
                        {
                            name: 'Restore',
                            text: __('Restore'),
                            classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
                            icon: 'fa fa-rotate-left',
                            url: 'facrm/invoice/restore',
                            refresh: true
                        },
                        {
                            name: 'Destroy',
                            text: __('Destroy'),
                            classname: 'btn btn-xs btn-danger btn-ajax  btn-destroyit',
                            icon: 'fa fa-times',
                            url: 'facrm/invoice/destroy',
                            refresh: true
                        }
                    ],
                    formatter: Table.api.formatter.operate
                }

            ];
            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    columnss
                ],
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
            });
            // 为表格绑定事件
            Table.api.bindevent(table);

        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));

                //抬头类型
                $("input[type=radio][name='row[invoice_issue]']").change(function(){
                    var type=$(this).val();
                    if(type==2){
                        //个人不能开专票改一下类型
                        $("input[type=radio][name='row[invoice_type]']").eq(0).click();
                        $('.invoice_issue').hide();
                    }else{
                        $('.invoice_issue').show();
                    }
                });
                //发票类型
                $("input[type=radio][name='row[invoice_type]']").change(function(){
                    var type=$(this).val();
                    if(type==2){
                        $("#c-tax_rate").val(Config.invoice_set.tax_rate2);
                    }else{
                        $("#c-tax_rate").val(Config.invoice_set.tax_rate1);
                    }
                });
              
            },
            selectcontracts:function () {
                $("#c-customer_id").bind("change",function(){
                    $("#select-resources").html("点击请选择");
                    $("input[name='row[c-contract_id]']").val(0);
                });
                var refreshkey = function (data) {
                    console.log(data);
                    $("input[name='row[contract_id]']").val(data.id).trigger("change");
                    $("#select-resources").html(data.name+"-"+data.number);
                    $("input[name='row[content]']").val(data.name);
                    var info = `合同金额:${data.money},已收款:${data.return_money},已开票:${data.invoice_money}`;
                    $(".hepl-money").html(info);
                    //自动获取历史开票资料
                    Fast.api.ajax({
                        type: 'GET',
                        url: 'facrm/invoice/history',
                        data: {customer_id:data.customer_id}
                    }, function (data) {
                        console.log(data);
                        $("#c-invoice_name").val(data.invoice_name);
                        $("input[type=radio][name='row[invoice_type]'][value="+data.invoice_type+"]").click();
                        $("input[type=radio][name='row[invoice_issue]'][value="+data.invoice_issue+"]").click();
                        $("#c-register_no").val(data.register_no);
                        $("#c-bank_name").val(data.bank_name);
                        $("#c-bank_no").val(data.bank_no);
                        $("#c-email").val(data.email);
                        $("#c-user_name").val(data.user_name);
                        $("#c-user_phone").val(data.user_phone);
                        $("#c-user_address").val(data.user_address);


                        return false;
                    },function (data) {return false;}
                    );

                };
                $(document).on('click', "#select-resources", function () {
                    var url=$(this).data("url");
                    var customer_id = $("input[name='row[customer_id]']").val();
                    if (customer_id){
                        url+="?customer_id=" + customer_id;
                    }
                    parent.Backend.api.open(url, __('Select'), {callback: refreshkey});
                    return false;
                });
            },
        }
    };
    return Controller;
});