<script>
    layui.use(['table', 'form', 'element', 'layer', 'index', 'admin', 'laydate', 'xmSelect', 'upload'], function () {
        let admin = layui.admin;
        let form = layui.form;
        let index = layui.index;
        let laydate = layui.laydate;
        let upload = layui.upload;
        let element = layui.element;
        let xmSelect = layui.xmSelect;

        form.on('radio(receipt_type)', function (data) {
            if (data.value == 1) {
                $('#swift_code_div').hide();
                $('#account_name_label').text('账户名称 : ');
                $('#account_name_require_span').hide();
                $('#bank_address_require_span').hide();
            } else {
                $('#swift_code_div').show();
                $('#account_name_label').text('国外受益人 : ');
                $('#account_name_require_span').show();
                $('#bank_address_require_span').show();
            }
        });

        //不让选,也不隐藏
        form.on('checkbox(stockup_type_filter)', function (data) {
            if (data.elem.checked && data.elem.name === "stockup_type[5]") {
                layer.msg('新增供应商没法设置为芯链账号类型,设置芯链账号要先去魔方系统配置阶梯系数', {icon: 5})
                $('input[name="stockup_type[5]"]').next().click();
            }
        });

        //图片上传
        upload.render({
            elem: '.upload-img'
            , url: UploadImgUrl
            , field: 'upload'
            , data: {
                k1: k1,
                k2: k2,
                source: 1,
                cancel_time_verify: 1,
            }
            , accept: 'file'
            , exts: 'jpg|png|bmp|jpeg|zip|pdf'
            , size: 20000
            , before: function (obj) {
                layer.msg('加载中', {
                    icon: 16
                    , shade: 0.01
                });
                let item = this.item;
                obj.preview(function (index, file, result) {
                });
            }
            , done: function (res) {
                if (res.code === 200) {
                    layer.msg('上传成功', {icon: 6});
                    let item = this.item;
                    $('#' + item.attr('data-obj')).val(res.data[0]);
                    $('#certificate_url').text(res.data[0]);
                    return false;
                } else {
                    layer.msg('上传失败:' + res.message, {icon: 5});
                    return false;
                }
            }
            , error: function (res) {
                layer.msg('上传失败:' + res.message, {icon: 5});
                return false;
            }
        });

        form.on('submit(cancelAddSupplier)', function (data) {
            admin.closeThisTabs();
        });

        function getAttachmentData(data) {
            let file_name = [];
            let file_url = [];
            let validity_type = [];
            let field_name = [];
            let validity_period = [];
            let description = [];
            //只要寻找上传主区域的数据即可
            $('#attachment_upload_div').find('.single_file_div').each(function () {
                file_name.push($(this).find('#file_name').val());
                file_url.push($(this).find('#file_url').val());
                field_name.push($(this).find('#field_name').val());
                validity_type.push($(this).find('#validity_type').val());
                description.push($(this).find('#description').val());
                validity_period.push($(this).find('#validity_period').val());
            });
            data.field.file_name = file_name;
            data.field.file_url = file_url;
            data.field.field_name = field_name;
            data.field.description = description;
            data.field.validity_type = validity_type;
            data.field.validity_period = validity_period;
            data.field.apply_audit_reason = $('#apply_audit_reason').val();
            return data;
        }

        form.on('submit(addSupplier)', function (data) {
            data = getAttachmentData(data);
            admin.showLoading();
            admin.showLoading('.layui-layer-btn0');
            $.ajax({
                url: '/api/supplier/AddSupplier',
                type: 'POST',
                async: true,
                data: data.field,
                dataType: 'json',
                timeout: 20000,
                success: function (res) {
                    if (!res) {
                        admin.showLoading('.layui-layer-btn0');
                        admin.removeLoading();
                        layer.msg('网络错误,请重试', {icon: 6});
                    } else {
                        if (res.err_code === 0) {
                            layer.msg(res.err_msg, {icon: 6});
                            setTimeout(function () {
                                admin.closeThisTabs();
                                location.href = "/supplier/SupplierList"
                            }, 1000);
                        } else {
                            admin.showLoading('.layui-layer-btn0');
                            admin.removeLoading();
                            layer.msg(res.err_msg, {icon: 5});
                        }
                    }
                    admin.showLoading('.layui-layer-btn0');
                    admin.removeLoading();
                },
                error: function () {
                    admin.removeLoading();
                    layer.msg('网络错误', {icon: 5});
                }
            });
            return false;
        });

        form.on('select(apply_audit_reason_selector)', function (data) {
            $('#apply_audit_reason').val(data.value);
        });

        form.on('submit(addAndApplySupplier)', function (data) {
            data = getAttachmentData(data);
            let fieldNameList = data.field.field_name ? data.field.field_name : [];
            //提交先提示是否要转换供应商类型
            let radioObj = $('input[name="supplier_type"]');
            //已经上传品质保证协议(代理商则提示为“已经上传代理证”),是否切换为正式供应商?
            let supplierGroup = data.field.supplier_group;
            let msg;
            let obj1Checked = 0;
            let obj2Checked = 0;
            if (data.field.supplier_type === '2') {
                //如果已经上传品质保证协议,并且供应商性质不是代理商(代理商要代理证)
                if (inArray('quality_assurance_agreement', fieldNameList) && supplierGroup !== '1') {
                    msg = '已经上传品质保证协议,是否切换为正式供应商?'
                    obj1Checked = true;
                    obj2Checked = false;
                }
                if (inArray('proxy_certificate', fieldNameList) && supplierGroup === '1') {
                    msg = '该供应商为代理供应商,已经上传代理证,是否切换为正式供应商?'
                    obj1Checked = true;
                    obj2Checked = false;
                }
            } else {
                if (!inArray('quality_assurance_agreement', fieldNameList) && !inArray(supplierGroup, ['1', '4'])) {
                    msg = '未上传品质保证协议,是否切换为临时供应商?'
                    obj1Checked = false;
                    obj2Checked = true;
                }
                if (!inArray('proxy_certificate', fieldNameList) && supplierGroup === '1') {
                    msg = '该供应商为代理供应商,但是未上传代理证,是否切换为临时供应商?'
                    obj1Checked = false;
                    obj2Checked = true;
                }
            }
            if (msg) {
                layer.confirm(msg, {btn: ["确认", "取消"]},
                    function (index) {
                        if (obj1Checked !== 0) {
                            radioObj.get(0).checked = obj1Checked;
                            radioObj.get(1).checked = obj2Checked;
                            layui.form.render('radio');
                            data.field.supplier_type = obj1Checked ? 1 : 2;
                            layer.closeAll();
                        }
                        auditAndAddSupplier(data);
                    },
                    function (index) {
                        auditAndAddSupplier(data);
                    }
                );
            } else {
                auditAndAddSupplier(data);
            }

            return false;
        });

        function auditAndAddSupplier(data) {
            if (data.field.supplier_type === '2') {
                layer.open({
                    type: 1,
                    area: ['450px', '370px'], //宽高
                    content: $('#apply_audit_reason_div'),
                    btn: ['保存并申请审核', '取消'],
                    btn1: function (index, layero) {//点击保存按钮
                        if ($('#apply_audit_reason').val() === '') {
                            layer.msg('请选择申请理由', {icon: 5})
                            return false;
                        }
                        addSupplier(data);
                        layer.close(index);
                    },
                });
            } else {
                let msg = '确定直接申请审核吗?确定后会直接进入审核中的状态,审核完成前无法进行二次修改';
                //未上传品质保证协议(代理商则提示为“未上传代理证”),是否需要切换为临时供应商?
                layer.confirm(msg, function (index) {
                    addSupplier(data);
                });
            }
        }

        function addSupplier(data) {
            admin.showLoading();
            admin.showLoading('.layui-layer-btn0');
            $.ajax({
                url: '/api/supplier/AddSupplier?direct_apply=1',
                type: 'POST',
                async: true,
                data: data.field,
                dataType: 'json',
                timeout: 20000,
                success: function (res) {
                    if (!res) {
                        admin.removeLoading();
                        admin.showLoading('.layui-layer-btn0');

                        layer.msg('网络错误,请重试', {icon: 6});
                    } else {
                        if (res.err_code === 0) {
                            layer.msg(res.err_msg, {icon: 6});
                            setTimeout(function () {
                                admin.closeThisTabs();
                                location.href = "/supplier/SupplierList"
                            }, 1000);
                        } else {
                            let errMsg = res.err_msg;
                            let msg = '';
                            admin.removeLoading();
                            admin.showLoading('.layui-layer-btn0');

                            $.each(errMsg.split('|'), function (index, value) {
                                msg += "<span>" + value + "</span><br>"
                            });
                            layer.msg(msg, {icon: 5})
                        }
                    }
                    admin.removeLoading();
                    admin.showLoading('.layui-layer-btn0');

                },
                error: function () {
                    admin.removeLoading();
                    admin.showLoading('.layui-layer-btn0');

                    layer.msg('网络错误', {icon: 5});
                }
            });
        }
    });
</script>