

apiready = function() {
    var ctrl = {
        init: {},
        bind: {},
        prefix: 'https://cdyfile.saas.dianwutong.com/',
        employeeId: '',
        prId: '',
        orderData: {
            pics: [],
            serverPicUrls: [],
            uploadPicNum: 0,
            resultDesc: ''
        },
        tabType: 'order',
        problemData: {
            status: true, // true:完成了初始化，false:当前存在未提交设备缺陷
            desc: '', // 设备缺陷 文字描述
            pics: [], // 设备缺陷 图片信息
            serverPicUrls: [], // 上传完成，返回的图片 url
            uploadPicNum: 0, // 已经上传完成的图片的数量
            activeProblemItemDom: null, // 当前正在编辑的设备缺陷 DOM
        },
    };

    ctrl.init = function() {
        CommonModel.fitInStatusBar();

        ctrl.orderId = api.pageParam.orderid;
        ctrl.status = api.pageParam.status;

        ctrl.employeeId = $api.getStorage('employeeId');

        ctrl.startBtnDom = $('#start-btn');
        ctrl.finishBtnDom = $('#finish-btn');

        if (ctrl.status == 1) { // 未处理
            ctrl.startBtnDom.show();
            ctrl.finishBtnDom.hide();
            $('.start-show').hide();
        } else if (ctrl.status == 2) { // 处理中
            ctrl.startBtnDom.hide();
            ctrl.finishBtnDom.show();
            $('.start-show').show();
        };

        ctrl.bind();

        ctrl.initOrderDetail();
    }
    ctrl.bind = function() {
        //点击返回按钮
        $api.addEvt($api.dom("#back"), "touchend", function() {
            api.closeWin();
        });

        //点击 “工单详情” tab按钮
        $api.addEvt($api.dom("#order-tab"), "touchend", function () {
            if (ctrl.tabType == 'order') {
                return
            }

            $api.addCls(this, "active");
            $api.removeCls($api.dom("#problem-tab"), "active");
            $api.css($api.dom("#order-panel"), 'display:block');
            $api.css($api.dom("#problem-panel"), 'display:none');
            $api.css($api.dom('#inspectionitem-empty-tips'), "display:none");

            ctrl.tabType = 'order'

        }, false);

        //点击 “设备缺陷” tab按钮
        $api.addEvt($api.dom("#problem-tab"), "touchend", function () {
            if (ctrl.tabType == 'problem') {
                return
            }

            $api.addCls(this, "active");
            $api.removeCls($api.dom("#order-tab"), "active");
            $api.css($api.dom("#problem-panel"), 'display:block');
            $api.css($api.dom("#order-panel"), 'display:none');
            $api.css($api.dom('#inspectionitem-empty-tips'), "display:none");

            ctrl.tabType = 'problem';

        }, false);
        /**
         * =============================order-panel 工单详情 中的事件绑定===============================
        */
        // 点击 添加 图片 +
        // $("#pic-add-btn").on("touchend", function () {
        //     var resultPicContentDom = $('#result-pic-content');
        //     var params = {
        //         sourceType: 'camera',
        //         destinationType: 'base64'
        //     };
        //     api.getPicture(params, function(ret, err){
        //         if (ret && ret.data) {
        //             // 创建图片预览dom
        //             var picItemDom = '<span class="pic-item"><i></i><img class="pic" src="{{url}}" alt=""></span>';
        //             var dom = picItemDom.replace('{{url}}', ret.data);
        //             resultPicContentDom.prepend(dom);

        //             // 保存 图片 base64 和 url
        //             ctrl.orderData.pics.push({
        //                 url: ret.data
        //             });
        //         }
        //     })
        // });

        // 点击 相册选择 添加 设备缺陷图片
        $("#pic-add-btn").on("touchend", function () {
            var picContentDom = $('#pic-content');
            var params = {
                sourceType: 'library',
                // sourceType: 'camera',
                // sourceType: 'album',
                destinationType: 'base64'
            }
            api.getPicture(params, function(ret, err){
                if (ret && ret.data) {
                    // 创建图片预览dom
                    var picItemDom = '<span class="pic-item"><i></i><img class="problem-pic-item" src="{{url}}" alt=""></span>'
                    var dom = picItemDom.replace('{{url}}', ret.data)
                    picContentDom.prepend(dom)

                    // 保存 图片 base64 和 url
                    ctrl.orderData.pics.push({
                        url: ret.data
                    });
                }
            })
        });

        // 点击 照相机 拍照添加 设备缺陷图片
        $("#camera-btn").on("touchend", function () {
            var picContentDom = $('#result-pic-content');
            var params = {
                // sourceType: 'library',
                sourceType: 'camera',
                // sourceType: 'album',
                destinationType: 'base64'
            }
            api.getPicture(params, function(ret, err){
                if (ret && ret.data) {
                    // 创建图片预览dom
                    var picItemDom = '<span class="pic-item"><i></i><img class="problem-pic-item" src="{{url}}" alt=""></span>'
                    var dom = picItemDom.replace('{{url}}', ret.data)
                    picContentDom.prepend(dom)

                    // 保存 图片 base64 和 url
                    ctrl.orderData.pics.push({
                        url: ret.data
                    });
                }
            })
        });

        // 图片 删除按钮
        $("#result-pic-content").on("touchend", "i", function (e) {
            e.stopPropagation();

            var _this = this;

            api.confirm({
                title: '',
                msg: '确定要删除吗',
                buttons: ['确定', '取消']
            }, function(ret, err) {
                var index = ret.buttonIndex;
                if (index == 1) { // 确定
                    var url = $($(_this).siblings('img')[0]).attr('src');
        
                    $(_this).parent('.pic-item').remove();
        
                    // 从 ctrl.orderData.pics 中删除对应url
                    ctrl.orderData.pics = ctrl.orderData.pics.filter(function (item) {
                        return item.url != url;
                    });
                }
            });

        });

        // 点击图片预览
        $("#order-panel").on("touchend", ".pic", function (e) {
            e.stopPropagation();
            var src = $(this).attr('src');
            
            $('#pic-review img').attr('src', src);
            $('#pic-review').css('display', 'block');
        });

        // 点击 “开始处理” 按钮
        $('#start-btn').on("touchend", function () {
            api.confirm({
                title: '',
                msg: '确定开始处理吗',
                buttons: ['确定', '取消']
            }, function(ret, err) {
                var index = ret.buttonIndex;
                if (index == 1) { // 确定
                    ctrl.handleStart();
                }
            });
        });

        // 点击 “处理完成” 按钮
        $('#finish-btn').on("touchend", function () {
            api.confirm({
                title: '',
                msg: '确定提交处理结果吗',
                buttons: ['确定', '取消']
            }, function(ret, err) {
                var index = ret.buttonIndex;
                if (index == 1) { // 确定
                    // 判断是否有未提交的设备缺陷
                    if (!ctrl.problemData.status) {
                        ctrl.toast('存在未提交的设备缺陷!');
                    } else {
                        ctrl.handleFinish();
                    };
                }
            });
        });

        /**
         * ===============================prolem-panel 设备缺陷 中的事件绑定================================
        */
        // 点击 新增设备缺陷
        $('#new-add-btn').on("touchend", function () {
            // 判断当前工单是否是 “处理中” ，“未处理”工单不可以添加设备缺陷
            if (ctrl.status == 1) {
                ctrl.toast("工单未开始处理，不能添加设备缺陷");
                return
            };

            // 判断是否有未提交的设备缺陷
            if (ctrl.problemData.status) {
                // 页面中添加一个 问题 li DOM
                ctrl.addProblemItemDom();

                ctrl.problemData.status = false;
            } else {
                ctrl.toast('存在未提交的设备缺陷!')
            };
        });

        // 点击 添加设备缺陷图片 +
        $("#problem-list-container").on("touchend", ".pic-add-btn", function () {
            var picContentDom = $(this).parent('.pic-content');
            var params = {
                sourceType: 'camera',
                destinationType: 'base64'
            }
            api.getPicture(params, function(ret, err){
                if (ret && ret.data) {
                    // 创建图片预览dom
                    var picItemDom = '<span class="pic-item"><i></i><img class="problem-pic-item" src="{{url}}" alt=""></span>'
                    var dom = picItemDom.replace('{{url}}', ret.data)
                    picContentDom.prepend(dom)

                    // 保存 图片 base64 和 url
                    ctrl.problemData.pics.push({
                        url: ret.data
                    })

                }
            })
        });

        // 图片预览
        $("#problem-list-container").on("touchend", ".problem-pic-item", function (e) {
            e.stopPropagation();
            var src = $(this).attr('src');
            
            $('#pic-review img').attr('src', src);
            $('#pic-review').css('display', 'block');
        });

        // 设备缺陷 图片 “删除”
        $("#problem-list-container").on("touchend", "i", function (e) {
            e.stopPropagation();

            var _this = this;

            api.confirm({
                title: '',
                msg: '确定要删除吗',
                buttons: ['确定', '取消']
            }, function(ret, err) {
                var index = ret.buttonIndex;
                if (index == 1) { // 确定
                    var url = $($(_this).siblings('img')[0]).attr('src');
        
                    $(_this).parent('.pic-item').remove();
        
                    // 从 ctrl.problemData.pics 中删除对应url
                    ctrl.problemData.pics = ctrl.problemData.pics.filter(function (item) {
                        return item.url != url;
                    });
                }
            });

        });

        // 点击 “删除” 设备缺陷
        $('#problem-list-container').on("touchend", ".delete-btn", function () {
            var _this = this;
            api.confirm({
                title: '',
                msg: '确定要删除吗',
                buttons: ['确定', '取消']
            }, function(ret, err) {
                ctrl.problemData.activeProblemItemDom = $(_this).parents('.problem-item');
            
                var index = ret.buttonIndex;
                if (index == 1) { // 确定
                    ctrl.handleDelete();
                }
            });
        });

        // 点击 “提交” 设备缺陷
        $('#problem-list-container').on("touchend", ".submit-btn", function () {
            ctrl.problemData.activeProblemItemDom = $(this).parents('.problem-item');

            ctrl.problemData.desc = ctrl.problemData.activeProblemItemDom.find('.desc').val().trim();

            api.confirm({
                title: '',
                msg: '确定要提交吗',
                buttons: ['确定', '取消']
            }, function(ret, err) {
                var index = ret.buttonIndex;
                if (index == 1) { // 确定
                    if (!ctrl.problemData.desc.trim()) {
                        ctrl.toast('缺陷描述不能为空！');
                    } else {
                        ctrl.handleSubmit();
                    };
                }
            });
        });

        // 点击预览图片 关闭预览
        $('#pic-review').on("touchend", function (e) {
            e.stopPropagation();
            $(this).css('display', 'none');
        });
    };

    /**
     * 弹出提示框
     */
     ctrl.toast = function (msg) {
        api.toast({
            msg: msg,
            duration: 3000,
            locaiton: 'top'
        });
    };

    // 初始化 工单详情
    ctrl.initOrderDetail = function () {
        ctrl.getOrderDetail();
    };

    // 获取工单详情
    ctrl.getOrderDetail = function () {
        var url = '/test/gong-dan/queryById/' + ctrl.orderId;
        
        api.showProgress({
            title: '载入中...',
            text: '请稍后',
            modal: false
        });
        $api.get(url, function(res, err) {
            api.hideProgress();
            if (err) {
                ctrl.toast("网络请求失败");
            } else {
                if (!res.code || res.code != "200" || !res.data) {
                    ctrl.toast("服务器响应错误" + (res.code ? ("，错误码：" + res.code) : ""));
                } else {
                    ctrl.prId = res.data.prId;
                    ctrl.renderOrderDetail(res.data);
                }
            }
        });
    };

    // 渲染工单详情
    ctrl.renderOrderDetail = function (data) {
        $('#pr-name').text(data.prName);
        $('#person').text(data.tiJiaoRenName);
        $('#create-time').text(data.tiJiaoShiJian);
        $('#desc').text(data.miaoShu);
        
        // 渲染问题照片
        var picContentDom = $('#pic-content');
        if (data.zhaoPian) {
            ctrl.renderPics(picContentDom, data.zhaoPian);
        } else {
            picContentDom.html('无');
        };
    };

    // 渲染 图片
    ctrl.renderPics = function(dom, pics) {
        dom.empty();

        var picsArr = pics.split(',');
        var length = picsArr.length;

        for (var i = 0; i < length; i++) {
            var picUrl = ctrl.prefix + picsArr[i];
            var picDom = '<span class="pic-item"><img class="pic" src="'+ picUrl +'" alt=""></span>';

            dom.append(picDom);
        }
    };

    // “开始处理”
    ctrl.handleStart = function () {
        api.showProgress();

        var url = '/test/gong-dan/gongDanKaiShi';
        var data = {
            id: ctrl.orderId
        };

        $api.post(url, data, function (res, err) {

            if (err) {
                api.hideProgress();
                ctrl.toast("开始失败,请稍后再试");
            } else {
                if (res.code == 200) {
                    ctrl.startBtnDom.hide();
                    ctrl.finishBtnDom.show();
                    $('.start-show').show();

                    api.hideProgress();
                    ctrl.toast("开始成功");

                    ctrl.status = 2;
                } else {
                    api.hideProgress();
                    ctrl.toast("服务器响应错误" + (res.code ? ("，错误码：" + res.code) : ""));
                }
            };

        });
    };

    // “处理完成”
    ctrl.handleFinish = function () {

        // 数据校验
        var flag = ctrl.checkData();

        if (!flag) {
            ctrl.toast("请填写完整，再提交");
            return;
        };

        api.showProgress();

        var pics = ctrl.orderData.pics;
        var length = pics.length;
        if (length > 0) { // 有图片
            // 上传 图片
            for (var i = 0; i < length; i++) {
                var url = pics[i]['url'];
                ctrl.uploadPic(url);
            }
        } else { // 没图片
            ctrl.submit();
        };
    };

    // 数据校验
    ctrl.checkData = function () {
        ctrl.orderData.resultDesc = $('#result-desc').val().trim();

        if (ctrl.orderData.resultDesc) { // 验证处理结果
            return true;
        } else {
            return false;
        };
    };

    // 上传图片
    ctrl.uploadPic = function (file) {

        var url = "/ems/rest/common/file/pad_upload";
        var data = file;

        $api.uploadFile(url, data, function (res, err) {

            if (err) {
                ctrl.toast("网络请求失败,请稍后再试");
            } else {
                if (res.code == 200) {
                    // 将返回的图片路径保存
                    if (res.body && res.body.fileUrl) {
                        ctrl.orderData.serverPicUrls.push(res.body.fileUrl)

                        ctrl.orderData.uploadPicNum++;

                        if (ctrl.orderData.uploadPicNum == ctrl.orderData.pics.length) {// 代表全部图片上传完成
                            // 2、调用接口
                            ctrl.submit();
                        }
                    } else {
                        api.hideProgress();
                        ctrl.toast("服务器错误，未返回数据");
                    }
                } else {
                    api.hideProgress();
                    ctrl.toast("服务器响应错误" + (res.code ? ("，错误码：" + res.code) : ""));
                }
            }

        })
    };

    // 提交处理结果
    ctrl.submit = function () {
        api.showProgress();

        var chuLiZhaoPian = ctrl.orderData.serverPicUrls.join(',');

        var url = '/test/gong-dan/gongDanWanCheng';
        var data = {
            id: ctrl.orderId,
            chuLiMiaoShu: ctrl.orderData.resultDesc
        };

        if (chuLiZhaoPian) {
            data.chuLiZhaoPian = chuLiZhaoPian;
        };

        $api.post(url, data, function (res, err) {

            if (err) {
                api.hideProgress();
                ctrl.toast("提交结果失败,请稍后再试");
            } else {
                if (res.code == 200) {
                    // 返回 我的工单 页
                    api.sendEvent({
                        name: 'orderTaskChanged'
                    });

                    api.hideProgress();
                    ctrl.toast("提交成功");
                    api.closeWin();
                } else {
                    api.hideProgress();
                    ctrl.toast("服务器响应错误" + (res.code ? ("，错误码：" + res.code) : ""));
                }
            };

        });
    };

    /**
     * ============================= 设备缺陷 panel ============================
    */
    // 添加一个 设备缺陷 dom
    ctrl.addProblemItemDom = function() {
        var index = $('#problem-list-container li').length + 1;

        var itemDom = '';
        itemDom += '<li class="problem-item">';
        itemDom +=     '<div class="problem-index">';
        itemDom +=         '<div class="problem-item-title">问题<span>{index}</span></div>';
        itemDom +=          '<div class="btns">'
		itemDom +=				'<div class="delete-btn">'
		itemDom +=					'删除'
        itemDom +=				'</div>'
        itemDom +=              '<div class="submit-btn">';
        itemDom +=                  '提交';
        itemDom +=              '</div>';
        itemDom +=          '</div>'
		itemDom +=			'<div class="finished">已提交</div>'
        itemDom +=     '</div>';
        itemDom +=     '<div class="problem-desc">';
        itemDom +=         '<div class="problem-item-title"><b>*</b>问题描述：</div>';
        itemDom +=         '<div>';
        itemDom +=             '<textarea class="desc" name="" id="" cols="30" rows="10" placeholder="请输入问题描述..."></textarea>';
        itemDom +=         '</div>';
        itemDom +=     '</div>';
        itemDom +=     '<div class="problem-pic">';
        itemDom +=         '<div class="problem-item-title">现场照片：</div>';
        itemDom +=         '<div class="pic-content" class="pics problem-item-content">';
        itemDom +=             '<img class="pic-add-btn" src="../../image/add.png" alt="">';
        itemDom +=         '</div>';
        itemDom +=     '</div>';
        itemDom += '</li>';

        itemDom = itemDom.replace('{index}', index);

        $('#problem-list-container').append(itemDom);
    };

    // 处理 删除 事件
    ctrl.handleDelete = function () {
        ctrl.problemData.activeProblemItemDom.remove();
        ctrl.resetProblemData();
    };

    // 处理 问题 提交 事件
    ctrl.handleSubmit = function() {
        api.showProgress();

        var pics = ctrl.problemData.pics;
        var length = pics.length;
        if (length > 0) { // 有图片
            // 上传 图片
            for (var i = 0; i < length; i++) {
                var url = pics[i]['url']
                ctrl.uploadProblemPic(url)
            }
        } else { // 没图片
            ctrl.submitProblem();
        };
    };

    // 重置 设备缺陷 数据表单
    ctrl.resetProblemData = function () {
        ctrl.problemData.status = true;
        ctrl.problemData.desc = '';
        ctrl.problemData.pics = [];
        ctrl.problemData.serverPicUrls = [];
        ctrl.problemData.uploadPicNum = 0;
        ctrl.problemData.activeProblemItemDom = null;
    };

    // 上传 设备缺陷 图片
    ctrl.uploadProblemPic = function (file) {

        var url = "/ems/rest/common/file/pad_upload";
        var data = file;

        $api.uploadFile(url, data, function (res, err) {

            if (err) {
                api.hideProgress();
                ctrl.toast("网络请求失败,请稍后再试");
            } else {
                if (res.code == 200) {
                    // 将返回的图片路径保存
                    if (res.body && res.body.fileUrl) {
                        ctrl.problemData.serverPicUrls.push(res.body.fileUrl)

                        ctrl.problemData.uploadPicNum++;

                        if (ctrl.problemData.uploadPicNum == ctrl.problemData.pics.length) {// 代表全部图片上传完成
                            // 2、调用提交 设备缺陷接口
                            ctrl.submitProblem();
                        }
                    } else {
                        api.hideProgress();
                        ctrl.toast("服务器错误，未返回数据");
                    }
                } else {
                    api.hideProgress();
                    ctrl.toast("服务器响应错误" + (res.code ? ("，错误码：" + res.code) : ""));
                }
            }

        })
    };

    // 提交 设备缺陷
    ctrl.submitProblem = function() {
        api.showProgress();

        var zhaoPian = ctrl.problemData.serverPicUrls.join(',');
        var url = '/test/gong-dan/insert';
        var data = {
            tiJiaoRenId: ctrl.employeeId,
            xunJianPrId: ctrl.id,
            prId: ctrl.prId,
            miaoShu: ctrl.problemData.desc,
            isXjProblem: 1
        };

        if (zhaoPian) {
            data.zhaoPian = zhaoPian;
        };

        $api.post(url, data, function (res, err) {

            if (err) {
                api.hideProgress();
                ctrl.toast("提交设备缺陷失败,请稍后再试");
            } else {
                if (res.code == 200) {
                    // 隐藏当前设备缺陷的 删除 和 提交 按钮，隐藏 添加图片 删除图片 按钮
                    ctrl.problemData.activeProblemItemDom.find('.btns').css('display', 'none');
                    ctrl.problemData.activeProblemItemDom.find('.finished').css('display', 'block');
                    ctrl.problemData.activeProblemItemDom.find('.pic-add-btn').css('display', 'none');
                    ctrl.problemData.activeProblemItemDom.find('.pic-item i').css('display', 'none');
                    ctrl.problemData.activeProblemItemDom.find('.desc').attr('disabled', 'disabled');

                    // 初始化 problemData
                    ctrl.resetProblemData();

                    api.hideProgress();
                    ctrl.toast("提交成功");
                } else {
                    api.hideProgress();
                    ctrl.toast("服务器响应错误" + (res.code ? ("，错误码：" + res.code) : ""));
                }
            };

        });
    };

    ctrl.init();
}
