var pageCurr;
var pageCount = 0;
var treeCond;
var admin;
var planNeedXmlSelData;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
    steps: 'steps/steps',
    cascader: 'cascader/cascader',
}).use(['table','laydate','layer','upload', 'form', 'admin', 'xmSelect', 'steps', 'element', 'cascader', 'tree', 'dropdown'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    admin = layui.admin;
    var upload = layui.upload;
    var xmSelect = layui.xmSelect;
    var steps = layui.steps;
    var cascader = layui.cascader;
    var tree = layui.tree;
    var dropdown = layui.dropdown;
    var element = layui.element;
    $('#organization').html(localStorage.getItem('nickname') + '  ');
    // 部门人员 筛选
    dropdown.render({
        elem: '#organization'
        ,content: ['
'].join('')
        ,style: 'width: 370px; height: 350px; padding: 0 15px; box-shadow: 1px 1px 30px rgb(0 0 0 / 12%);'
        ,ready: function(){
            loadTree();
        }
    });
    // 数据同步
    dropdown.render({
        elem: '#data-btn'
        ,align: 'right'
        ,style: 'border-radius: 5px;'
        ,className: 'site-dropdown-demo'
        ,data: [
            {
                title: '模板下载'
                ,templet: ' ');
                            $('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click');
                            $(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click');
                            clearFormVal($('#search-box'));
                            tableIns.reload({
                                where: {[obj.data.key]: obj.data.id},
                                page: {curr: 1}
                            });
                        }
                    });
                    treeData = res.data;
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                } else {
                    layer.msg(res.msg)
                }
            }
        })
    }
    // 数据渲染
    tableIns = table.render({
        elem: '#plan',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/plan/page/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        // cellMinWidth: 100,
        height: 'full-148',
        // size: 'sm',
        skin: 'line',
        cols: [[
            {type: 'checkbox'}
            // ,{field: 'id', align: 'center',title: 'ID'}
            // ,{field: 'hostId$', align: 'center',title: '所属商户'}
            ,{field: 'userId$', align: 'left',title: '业务员',hide: false, width: 100}
            ,{field: 'planType$', align: 'left',title: '业务类型', width: 150,hide: false}
            ,{field: 'name', align: 'left',title: '售前规划申请单名称', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false}
            ,{field: 'uuid', align: 'left',title: '规划单号', width: 100,hide: false}
            ,{field: 'planNeed$', align: 'left',title: '所需', templet:function(d){return emptyShow(d.planNeed$)},hide: false}
            ,{field: 'deptId$', align: 'left',title: '所属部门',hide: true}
            ,{field: 'planner$', align: 'left',title: '规划员',hide: false, width: 100}
            // ,{field: 'nowHeadman$', align: 'left',title: '规划组长',hide: true}
            ,{field: 'orderId$', align: 'left',title: '跟踪项目', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'orderMore',hide: false}
            // ,{field: 'cstmrId$', align: 'left',title: '甲方单位', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'cstmrMore',hide: true}
            ,{field: 'appleTime$', align: 'left',title: '申请日期', hide: true}
            // ,{field: 'beItem$', align: 'center',title: '立项'}
            // ,{field: 'planner', align: 'left',title: '规划员', templet:function(d){return emptyShow(d.planner)}}
            // ,{field: 'finishTime$', align: 'center',title: '完成时间'}
            // ,{field: 'form', align: 'center',title: '表单内容'}
            // ,{field: 'change$', align: 'center',title: '更改方案'}
            // ,{field: 'changeTime', align: 'center',title: '更改次数'}
            // ,{field: 'changeReason', align: 'center',title: '更改方案原因'}
            // ,{field: 'planBonus', align: 'center',title: '规格奖金'}
            // ,{field: 'planLeaderBonus', align: 'center',title: '规格组长奖金'}
            // ,{field: 'files', align: 'center',title: '附件'}
            ,{field: 'settle$', align: 'center',title: '进度', width: 150}
            // ,{field: 'settleMsg', align: 'center',title: '审核进度'}
            // ,{field: 'comment', align: 'center',title: '评论'}
            // ,{field: 'status$', align: 'center',title: '状态'}
            ,{field: 'createTime$', align: 'left',title: '添加日期', width: 160, hide: false}
            ,{field: 'updateBy$', align: 'left',title: '修改人', width: 100}
            ,{field: 'updateTime$', align: 'left',title: '修改时间', hide: true}
            ,{field: 'memo', align: 'left',title: '注释', hide: true}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 280}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;pageCount=count;
            limit();
        }
    });
    //多文件列表
    var uploadListIns = upload.render({
        elem: '#data-btn-file2'
        ,elemList: $('#data-btn-file3') //列表元素对象
        ,url: '/plan/insert/file/auth'
        ,accept: 'file'
        ,multiple: true
        ,number: 10
        ,auto: false
        ,bindAction: '#testListAction'
        ,choose: function(obj){
            // 赋值
            this.data.planId=$('.layui-layer-title').text()
            var that = this;
            var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
            //读取本地文件
            obj.preview(function(index, file, result){
                var tr = $([''
                    ,''+ file.name +' '
                    ,''+ (file.size/1014).toFixed(1) +'kb '
                    ,''
                    ,'重传 '
                    ,'删除 '
                    ,'下载 '
                    ,' '
                    ,' '].join(''));
                //单个重传
                tr.find('.demo-reload').on('click', function(){
                    obj.upload(index, file);
                });
                //删除
                tr.find('.demo-delete').on('click', function(){
                    delete files[index]; //删除对应的文件
                    tr.remove();
                    uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
                });
                that.elemList.append(tr);
                element.render('progress'); //渲染新加的进度条组件
            });
        }
        ,done: function(res, index, upload){ //成功的回调
            var that = this;
            //if(res.code == 0){ //上传成功
            var tr = that.elemList.find('tr#upload-'+ index)
                ,tds = tr.children();
            tds.eq(3).html(''); //清空操作
            delete this.files[index]; //删除文件队列已经上传成功的文件
            return;
            //}
            this.error(index, upload);
        }
        ,allDone: function(obj){ //多文件上传完毕后的状态回调
            console.log(obj)
        }
        ,error: function(index, upload){ //错误回调
            var that = this;
            var tr = that.elemList.find('tr#upload-'+ index)
                ,tds = tr.children();
            tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
        }
        ,progress: function(n, elem, e, index){
            element.progress('progress-demo-'+ index, n + '%'); //执行进度条。n 即为返回的进度百分比
        }
    });
    // 添加
    $("#planAddBtn").click(function () {
        let loadIndex = layer.load(2);
        $.ajax({
            url: baseUrl+"/planType/list/radio/auth",
            headers: {'token': localStorage.getItem('token')},
            method: 'POST',
            success: function (res) {
                if (res.code === 200){
                    admin.open({
                        type: 1,
                        area: '300px',
                        title: '新建售前规划申请单',
                        content: $('#addDialogPre').html(),
                        success: function (layero, dIndex) {
                            let template = Handlebars.compile($('#planTypeTpl').html());
                            $('#planTypeBox').html(template({list: res.data.map(function (d) {
                                    return {
                                        id: d.id,
                                        name: d.name,
                                        checked: d.checked
                                    }
                                })})
                            );
                            element.init();form.render();
                            layer.close(loadIndex);
                            // 确认规划单类型
                            form.on('submit(planTypeSubmit)', function (data) {
                                layer.close(dIndex);
                                let planTypeId = data.field.planType;
                                let loadIndex0 = layer.load(2);
                                $.ajax({
                                    url: baseUrl + "/planType/" + planTypeId + "/plan/auth",
                                    headers: {'token': localStorage.getItem('token')},
                                    method: 'GET',
                                    success: function (res0) {
                                        let planType = res0.data.planType;
                                        if (res0.code === 200) {
                                            admin.open({
                                                type: 1,
                                                area: ["95%", "90%"],
                                                offset: 'auto',
                                                title: '添加售前规划申请单' + ' - ' + planType.name,
                                                content: $('#editDialog').html(),
                                                success: function (layero0, dIndex0) {
                                                    $('#customizeBox').html(planType.html)
                                                    layer.close(loadIndex0);
                                                    let orderSel = loadOrderSel();
                                                    let cstmrSel = loadCstmrSel();
                                                    let userSel = loadUserSel();
                                                    userSel.setValue([
                                                        {name: res0.data.nickName, value: Number(res0.data.userId)},
                                                    ])
                                                    let planNeedSel = loadPlanNeedSel();
                                                    form.val('detail', {
                                                        planTypeName: planType.name
                                                    });
                                                    layDateRender();
                                                    form.on('submit(editSubmit)', function (data) {
                                                        data.field.planType = planType.id;
                                                        data.field.orderId = orderSel.getValue()[0] ? orderSel.getValue()[0].value : null;
                                                        data.field.cstmrId = cstmrSel.getValue()[0] ? cstmrSel.getValue()[0].value : null;
                                                        data.field.userId = userSel.getValue()[0] ? userSel.getValue()[0].value : null;
                                                        // data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
                                                        var planNeedValue= planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
                                                        for (var i=1;i'
                                    + '' + (file.size / 1024).toFixed(1) + 'kb '
                                    // + ''+'已完成'+' '
                                    + ''
                                    + '重传 '
                                    // + '删除 '
                                    + '下载 '
                                    + ' ';
                                // 将tr元素添加到目标table中
                                targetTable.appendChild(tr);
                            });
                        }else {
                            console.log('Failed to get file list error.');
                        }
                    },
                    error: function() {
                        console.log('Failed to get file list.');
                    }
                });
                break;
        }
    });
    // 点击下载按钮时触发文件下载
    $('#data-btn-file3').on('click', 'a', function() {
        var downloadUrl = $(this).attr('href');
        // console.log(downloadUrl)
        // console.log(baseUrl)
        // window.open("/\//"+downloadUrl);
        // return false;
        // var downloadUrl = $(this).attr('href');
        // console.log(downloadUrl)
        // // 发起 AJAX 请求,获取文件
        $.ajax({
            url: '/plan/download/file/auth',
            type: 'POST',
            data: { downloadUrl: downloadUrl },  // 传递下载链接作为参数
            success: function(response) {
                console.log(response)
                layer.msg(response.msg+',已下载至默认路径!详细下载路径:'+response.data, {icon: 1});
        //         // window.open(baseUrl+response.msg)
        //         // 创建一个Blob对象
        //         var blob = new Blob([response]);
        //         // 使用FileSaver保存文件
        //         var fileName = downloadUrl.substring(downloadUrl.lastIndexOf('\\') + 1);
        //         console.log(fileName)
        //         saveAs(blob, fileName);
        //         return false;
            },
            error: function() {
                layer.msg('请求文件下载失败');
            }
        });
        // var downloadUrl = $(this).attr('href');
        // console.log(downloadUrl)
        // if (downloadUrl == "" || downloadUrl == null) {
        //     layer.msg('请先上传app文件',{time:1000},() => {
        //         parent.location.reload()
        //     })
        // }else{
        //     window.open(downloadUrl);
        // }
        return false;  // 阻止默认的链接跳转行为
    });
    function approval(planId, plannerId, dIdx) {
        let loadIndex = layer.load(2);
        $.ajax({
            url: baseUrl+"/plan/approval/auth",
            headers: {'token': localStorage.getItem('token')},
            data: {
                planId: planId,
                plannerId: plannerId
            },
            method: 'POST',
            success: function (res) {
                if (dIdx) {
                    layer.close(dIdx);
                }
                layer.close(loadIndex);
                if (res.code === 200){
                    layer.msg(res.msg, {icon: 1});
                    tableReload();
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                } else {
                    layer.msg(res.msg, {icon: 2});
                }
            }
        })
    }
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        let loadIndex = layer.load(2);
        $.ajax({
            url: baseUrl + "/plan/" + mData.id + "/auth",
            headers: {'token': localStorage.getItem('token')},
            method: 'GET',
            success: function (res) {
                layer.close(loadIndex);
                if (res.code === 200){
                    let plan = res.data;
                    admin.open({
                        type: 1,
                        area: ["95%", "90%"],
                        offset: 'auto',
                        title: '编辑售前规划申请单 - ' + plan.planType$,
                        content: $('#editDialog').html(),
                        success: function (layero, dIndex) {
                            $('#customizeBox').html(plan.formHtml);
                            let orderSel = loadOrderSel();
                            let cstmrSel = loadCstmrSel();
                            let userSel = loadUserSel();
                            let planNeedSel = loadPlanNeedSel();
                            if (plan.orderId) { orderSel.setValue([{name: plan.orderId$, value: plan.orderId}]); }
                            if (plan.cstmrId) { cstmrSel.setValue([{name: plan.cstmrId$, value: plan.cstmrId}]); }
                            if (plan.userId) { userSel.setValue([{name: plan.userId$, value: plan.userId}]); }
                            let split = plan.planNeed.split("-");
                            if (plan.planNeed) {
                                var data = []
                                split.forEach((item,idx) => {
                                    data.push(parseInt(item))
                                })
                                planNeedXmlSelData = data
                            }
                            layDateRender(plan);
                            plan['planTypeName'] = plan.planType$;
                            form.val('detail', plan);
                            form.on('submit(editSubmit)', function (data) {
                                data.field.orderId = orderSel.getValue()[0] ? orderSel.getValue()[0].value : null;
                                data.field.cstmrId = cstmrSel.getValue()[0] ? cstmrSel.getValue()[0].value : null;
                                data.field.userId = userSel.getValue()[0] ? userSel.getValue()[0].value : null;
                                // data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
                                var planNeedValue= planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
                                for (var i=1;i