"use strict";
layui.extend({
    common    :   'js/common',
    region    :   'layui/lay/mymodules/region',
    xmSelect    :   'layui/dist/xm-select',
}).use(['jquery','layer','common','region','form','xmSelect'],function(){
    var $ = layui.jquery;
    //  引入表单插件
    var form = layui.form;
    //  引入公共模块
    var common = layui.common;
    //  引入下拉搜索菜单
    var xmSelect = layui.xmSelect;

    var layer = layui.layer;

    var userOrgType = $('#user_org_type').val();

    //  页面元素
    var $radioArr = $('#i_org_type .layui-unselect');
    var $node = {
        //  省市区表单
        provinceInput   :   $('input[name="regionProvince"]'),
        cityInput       :   $('input[name="regionCity"]'),
        areaInput       :   $('input[name="regionArea"]'),
        regionInput     :   $('#region'),
        //  取消按钮
        resetBtn        :   $('button[type="reset"]'),
        //  机构类型
        orgType         :   $('#i_org_type'),
        //  内部类型
        inner           :   $radioArr[0],
        //  广告类型
        ad              :   $radioArr[1],
        //  物业类型
        estate          :   $radioArr[2],
        agency          :   $radioArr[3],
        park            :   $radioArr[4],
        must            :   '',
    };
    //  页面数据
    var pageData = {
        orgType : 1
    }

    //  初始化省市区
    layui.region.init({
        //  元素节点
        elem        :  '#region_body',
        //  触发此元素时显示
        trigger     :   '#region',
        //  选中省的回调
        provinceCallbackFn  :   function(data){
            $node.regionInput.val(data.province.text);
            $node.provinceInput.val(data.province.id);
        },
        //  选中市的回调
        cityCallbackFn  :   function(data){
            var address = data.province.text + '-' + data.city.text;
            $node.regionInput.val(address);
            $node.cityInput.val(data.city.id);
        },
        //  选中区域的回调
        areaCallbackFn  :   function(data){
            var address = data.province.text + '-' + data.city.text + '-' +data.county.text;
            $node.regionInput.val(address);
            $node.areaInput.val(data.county.id);
        },
        //清空回调
        clearFn : function(){
            $node.regionInput.val('');
            $node.provinceInput.val('');
            $node.cityInput.val('');
            $node.areaInput.val('');
        }
    });

    //  绑定表单提交事件
    layui.form.on("submit(entity_submit_event)",function(data){
        common.timer($('button[lay-filter="entity_submit_event"]'));
        $.ajax({
            url     :   '/permissions/org/add',
            data    :   data.field,
            type    :   'POST',
            success :   function(){
                $node.resetBtn.click();
                parent.location.reload();
            }
        });

    });

    //  点击取消事件
    $node.resetBtn.on('click',function(){
        //  关闭当前页面弹窗
        var index = parent.layer.getFrameIndex(window.name);
        parent.layer.close(index);
    });

    var parentOrgMap = new Map();

    var pidSelect = xmSelect.render({
        el: '#pid',
        radio: true,
        name:'pid',
        layVerify: 'required',
        prop: {
            name: 'name',
            value: 'id',
        },
        clickClose: true,
        filterable: true,
        remoteSearch: true,
        remoteMethod: function (val, cb, show) {
            $.ajax({
                type: 'GET',
                url: '/permissions/org/getListByLikeName',
                data: {
                    name : val,
                    flag    :   1,
                    orgType : pageData.orgType,
                    isSelect : true
                },
                success: function (result) {
                    cb(result.list);
                },
                error: function () {
                    cb([]);
                }
            });
        },
        //监听选择
        on: function (data) {},
        //显示方式
        model: {
            label: {
                type: 'text',
                text: {
                    //左边拼接的字符
                    left: '',
                    //右边拼接的字符
                    right: '',
                    //中间的分隔符
                    separator: ', ',
                },
            }
        },
    });

    /**
     * 初始化机构下拉框（列表）
     */
    var initOrgFn = function(){
        let orgList;
        common.sendSyncRequest("/permissions/org/getListByLikeName",'GET',{flag:1,orgType:pageData.orgType},function(result){
            if(result.code=="200"&&result.list){
                orgList = result.list;
            }
        });
        return orgList;
    };

    form.on('radio(select_orgType)', function(ele){
        pageData.orgType = ele.value;
        if (pageData.orgType == 4 || pageData.orgType == 5){
            $('#parent_entity').hide();
        }else{
            $('#parent_entity').show();
        }
        var $select = $('input[name="pid"]');
        //机构类型 { 1：内部,2：广告,3：物业 }-- 物业时，去掉上级机构必填
        if(pageData.orgType == 1 && $('#parent_entity .must').length == 0){
            $('#parent_entity .layui-form-label span').before($node.must);
            $select.attr('lay-verify', 'required');
        }else if (userOrgType == 1 && (pageData.orgType == 2 || pageData.orgType == 3 ||pageData.orgType == 4 || pageData.orgType == 5)  && $('#parent_entity .must').length > 0){
            //物业或者广告商创建子公司，上级机构必须必填，只有机构创建物业或者广告商时，上级机构为非必填
            $node.must = $('#parent_entity .must').remove();
            $select.removeAttr('lay-verify');

        }
        pidSelect.update({data:initOrgFn()});

    });



    var initForm = function () {
        //机构类型 { 1：内部,2：广告,3：物业 }
        if (userOrgType == 1){
            $node.inner.click();
            $node.orgType.show();
        }else if (userOrgType == 2){
            $node.ad.click();
            $node.orgType.hide();
        }else if (userOrgType == 3){
            $node.estate.click();
            $node.orgType.hide();
        }else if (userOrgType == 4){
            $node.agency.click();
            $node.orgType.hide();
        }else if (userOrgType == 5){
            $node.park.click();
            $node.orgType.hide();
        }
    }();


    //表单验证
    layui.form.verify({
        specialCharacters : function (value) {
            if(!/^[a-zA-Z0-9_\u4e00-\u9fa5\s·]+$/.test(value)){
                return '名称不能有特殊字符';
            }
            if(/(^\_)|(\__)|(\_+$)/.test(value)){
                return '名称首尾不能出现下划线\'_\'';
            }
            if(/^\d+\d+\d$/.test(value)){
                return '名称不能全为数字';
            }
        },
        length : function (value) {
            if(value.length < 2 || value.length > 20){
                return "只能输入2-20个字符";
            }
        },
        different : function (value) {
            if (value != pName){
                return "已修改上级机构名称，请重新选择上级机构"
            }
        },
        choose : function (value) {
            if (value == null || value == ''){
                return "请选择上级机构";
            }
        }
    });
});