当前位置 : 主页 > 编程语言 > java >

017-管理后台通用js提取

来源:互联网 收集:自由互联 发布时间:2023-09-03
//定义全局常量,可供全局使用var zhuhuo = { config: {}, //bootstrap-table 属性配置信息 options:{}, /** * 参数初始化 */ set:function (id){ //判断配置信息里面是否有值,且当前的事件监听不为空 if ($.to
//定义全局常量,可供全局使用
var zhuhuo = {

    config: {},
    //bootstrap-table 属性配置信息
    options:{},
    /**
     * 参数初始化
     */
    set:function (id){
      	//判断配置信息里面是否有值,且当前的事件监听不为空
        if ($.tools.getLength(zhuhuo.config) > 1 && $.tools.isNotEmpty(event)) {
          	//获取tableId,
            var tableId = $.tools.isEmpty(id) ? $(event.currentTarget)
                             .parents(".bootstrap-table").find("table.table").attr("id") : id;
            if ($.tools.isNotEmpty(tableId)) {
                zhuhuo.options = zhuhuo.get(tableId);
            }
        }
    },

    // 获取实例配置
    get: function(id) {
        return zhuhuo.config[id];
    },
};


(function ($) {
    //为jQuery类添加静态方法,可以直接调用
    $.extend({
        //bootstrap table
        bstable:{
            /**
             * 表格初始化
             * @param options  相关属性配置
             */
            init:function (options){
                //初始化定义默认的配置,一些配置属于通用配置,可以直接设置默认值,如果想要改变则通过options传递过来即可
                //此处只提供一些常用的,如果想要了解更多可以参考bootstrap-table官方文档
                let defaultOptions = {
                    id: "bootstrap-table-list",  //bootstrap-table初始化时候的标识
                    contentType: "application/x-www-form-urlencoded",   // 编码类型
                    method: 'get',               // 请求方式(*),一般列表请求都是get请求,特殊情况特殊处理
                    cache: false,                // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
                    striped: true,               // 是否显示行间隔色
                    //排序相关属性
                    sortable: true,              // 是否启用排序
                    sortStable: true,            // 设置为 true 将获得稳定的排序
                    sortOrder: 'asc',            // 排序方式  asc 或者 desc
                    //分页相关属性
                    pagination: true,            // 是否开启分页
                    sidePagination: 'server',    // 分页方式:client客户端分页,server服务端分页(*)
                    //工具栏相关属性
                    toolbar: '#toolbar',         // 指定工作栏
                    iconSize: 'undefined',       // 图标大小:undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
                    buttonsClass:'secondary',    //定义工具按钮的Bootstrap类(在'btn-'之后添加)
                    showFullscreen: true,        // 是否显示全屏按钮
                    showRefresh: true,                                  // 是否显示刷新按钮
                    showToggle: true,                                   // 是否显示详细视图和列表视图的切换按钮
                    showColumns: true,                                  // 是否显示所有的列(选择显示的列)
                    showSearch:true,                                    //是否显示搜索按钮
                    showPaginationSwitch:false,                         //是否显示分页组件的切换按钮
                    //加载相关属性
                    showLoading: false,                                 // 是否启用加载框
                    //表格相关属性
                    search: false,                                      //是否显示表格搜索input
                    clickToSelect: false,                                // 是否启用点击选中行
                    uniqueId: 'id',                                     // 唯一标识符 一般都是主键id
                    pageNumber: 1,                                      //初始化加载第一页,默认第一页
                    pageSize: 10,                                       //每页的记录行数(*)
                    pageList: [10, 25, 50, 100],                        //可供选择的每页的行数(*)
                    totalField:'total',                                 //分页总条数对应的字段,可根据封装的json自定义调整
                    dataField:'rows',                                   //分页数据所对应的字段,可根据封装的json自定义调整
                    showHeader:true,                                    //是否显示表头
                    showFooter:false,                                   //是否显示页脚
                    singleSelect:false,                                 //是否允许复选框仅选择一行
                    loadingFontSize:'auto',                             //加载文本的字体大小
                    multipleSelectRow:false,                            //是否启用多选行
                    cardView: false,                                    //是否显示详细视图
                    detailView: false,                                  //设置为true以显示detail 视图表(细节视图)
                    queryParamsType:'limit',                            //设置'limit'以使用RESTFul类型发送查询参数。
                    minimumCountColumns: 1,                             //最少允许的列数  要从列下拉列表中隐藏的最小列数
                    data:[],                                            //要加载的数据 [] or {}
                    dataType:'json',                                    //服务器返回的数据类型,
                    isFullShow: true,                                   //是否全屏展示,用于业务处理
                }
                //重新定义options为defaultOptions和传递的options浅拷贝后的结果
                var options = $.extend(defaultOptions,options);
                //绑定全局options
                zhuhuo.options = options
                zhuhuo.config[options.id] = options
                // 绑定监听事件
                $.bstable.bindEvent();
                //初始化bootstrap table表格
                $("#"+options.id).bootstrapTable({
                    id: options.id,                                     // bootstrap-table初始化时候的标识
                    url: options.url,                                   // 列表页面对照请求url
                    addPageUrl: options.addPageUrl,                     // 添加页面对照请求url
                    editPageUrl: options.editPageUrl,                   // 修改页面对照请求url
                    viewPageUrl: options.viewPageUrl,                   // 明细页面对照请求url,
                    removeUrl: options.removeUrl,                       // 删除内容请求URL
                    modualName: options.modualName,                     // 模块名称
                    isFullShow: options.isFullShow,                     // 是否全屏展示
                    contentType: options.contentType,                   // 编码类型
                    method: options.method,                             // 请求方式(*),一般列表请求都是get请求,特殊情况特殊处理
                    cache: options.cache,                               // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
                    // height: $(window).height()-56,                   // 表格的高度
                    striped: options.striped,                           // 是否显示行间隔色
                    //排序相关属性
                    sortable: options.sortable,                         // 是否启用排序
                    sortStable: options.sortStable,                     // 设置为 true 将获得稳定的排序
                    sortOrder: options.sortOrder,                       // 排序方式  asc 或者 desc
                    //分页相关属性
                    pagination: options.pagination,                     // 是否开启分页
                    sidePagination: options.sidePagination,             // 分页方式:client客户端分页,server服务端分页(*)
                    //工具栏相关属性
                    toolbar: options.toolbar,                           // 指定工作栏
                    iconSize: options.iconSize,                         // 图标大小:undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
                    buttonsClass:options.buttonsClass,                  // 定义工具按钮的Bootstrap类(在'btn-'之后添加)
                    showFullscreen: options.showFullscreen,             // 是否显示全屏按钮
                    showRefresh: options.showRefresh,                   // 是否显示刷新按钮
                    showToggle: options.showToggle,                     // 是否显示详细视图和列表视图的切换按钮
                    showColumns: options.showColumns,                   // 是否显示所有的列(选择显示的列)
                    showSearch:options.showSearch,                      // 是否显示搜索按钮
                    showPaginationSwitch:options.showPaginationSwitch,  // 是否显示分页组件的切换按钮
                    //加载相关属性
                    showLoading: options.showLoading,                   // 是否启用加载框
                    //表格相关属性
                    search: options.search,                             // 是否显示表格搜索input
                    clickToSelect: options.clickToSelect,               // 是否启用点击选中行
                    uniqueId: options.uniqueId,                         // 唯一标识符 一般都是主键id
                    pageNumber: options.pageNumber,                     // 初始化加载第一页,默认第一页
                    pageSize: options.pageSize,                         // 每页的记录行数(*)
                    pageList: options.pageList,                         // 可供选择的每页的行数(*)
                    totalField:options.totalField,                      // 分页总条数对应的字段,可根据封装的json自定义调整
                    dataField:options.dataField,                        // 分页数据所对应的字段,可根据封装的json自定义调整
                    showHeader:options.showHeader,                      // 是否显示表头
                    showFooter:options.showFooter,                      // 是否显示页脚
                    singleSelect:options.singleSelect,                  // 是否允许复选框仅选择一行
                    loadingFontSize:options.loadingFontSize,            // 加载文本的字体大小
                    multipleSelectRow:options.multipleSelectRow,        // 是否启用多选行
                    cardView: options.cardView,                         // 是否显示详细视图
                    detailView: options.detailView,                     // 设置为true以显示detail 视图表(细节视图)
                    queryParamsType:options.queryParamsType,            // 设置'limit'以使用RESTFul类型发送查询参数。
                    minimumCountColumns:options.minimumCountColumns,    // 最少允许的列数  要从列下拉列表中隐藏的最小列数
                    data:options.data,                                  // 要加载的数据 [] or {}
                    dataType:options.dataType,                          // 服务器返回的数据类型
                    columns:options.columns,                            // 显示的字段信息
                    queryParams:$.bstable.queryParams,                  // 配置查询参数
                    responseHandler: $.bstable.responseHandler,         // 请求获取数据后处理回调函数
                    onLoadSuccess:$.bstable.onLoadSuccess,              // 数据加载成功时候处理
                    onLoadError:$.bstable.onLoadError,                  // 数据加载失败的时候处理
                });
            },
            /**
             * 配置查询参数
             * @param params
             */
            queryParams: function(params) {
                var reqParams = {
                    // 传递参数查询参数,搜索表单的参数合并表单处理
                    pageSize:       params.limit,
                    pageNum:        params.offset / params.limit + 1
                };
                //获取当前表单id 如果zhuhuo.options.formId为空则通过直接通过form进行获取
                var formId = $.tools.isEmpty(zhuhuo.options.formId) ?
                               $('form').attr('id') : zhuhuo.options.formId;
                //浅拷贝 把表单重的参数和bootstrap-table默认的一些参数融合
                return $.extend(reqParams, $.form.formToJsonJq(formId));
            },

            /**
             * 请求获取数据后处理回调函数
             * @param res
             * @return {{total: (number|PaymentItem|number|*), rows: *}|{total: number, rows: *[]}}
             */
            responseHandler: function (res){
                if(res == null || res == 'undefined'){
                    console.log('resp', res)
                }else {
                    if (res.responseCode == '200') {
                        return {rows: res.responseData, total: res.total};
                    } else {
                        $.modal.msg(res.responseMessage,'warning');
                        return {rows: [], total: 0};
                    }
                }
            },

            /**
             * 数据加载成功时候处理
             * @param data
             */
            onLoadSuccess:function (data){

            },
            /**
             * 数据加载失败的时候处理
             * @param data
             */
            onLoadError:function (data){
                console.log('error',data)
                $.modal.msg(data,'error');
            },

            /**
             * 刷新表单
             * @param tableId     当前bootstrap-table id标识
             * @param pageNumber  分页数
             * @param pageSize    分页条数
             * @param url         请求地址
             */
            refreshData:function (tableId, pageNumber, pageSize, url){
                var currentId = $.tools.isEmpty(tableId) ? zhuhuo.options.id : tableId;
                var params = $("#" + currentId).bootstrapTable('getOptions');
                if ($.tools.isEmpty(pageNumber)) {
                    pageNumber = params.pageNumber;
                }
                if ($.tools.isEmpty(pageSize)) {
                    pageSize = params.pageSize;
                }
                if ($.tools.isEmpty(url)) {
                    url = $.tools.isEmpty(url) ? params.url : url;
                }
                $("#" + currentId).bootstrapTable('refresh', {
                    url: url,
                    pageNumber: pageNumber,
                    pageSize: pageSize
                });
            },

            /**
             * 搜索表单
             * @param formId
             * @param tableId
             * @param pageNumber
             * @param pageSize
             */
            search:function (formId,tableId, pageNumber, pageSize){
                zhuhuo.set(tableId);
                zhuhuo.options.formId = $.tools.isEmpty(formId) ? $('form').attr('id') : formId;
                var params = $.tools.isEmpty(tableId) ?
                    $("#" + zhuhuo.options.id).bootstrapTable('getOptions') : 
                    $("#" + tableId).bootstrapTable('getOptions');
                if ($.tools.isNotEmpty(pageNumber)) {
                    params.pageNumber = pageNumber;
                }
                if ($.tools.isNotEmpty(pageSize)) {
                    params.pageSize = pageSize;
                }
                console.log('搜索参数',params)
                if ($.tools.isNotEmpty(tableId)){
                    $("#" + tableId).bootstrapTable('refresh', params);
                } else{
                    $("#" + zhuhuo.options.id).bootstrapTable('refresh', params);
                }
            },

            /**
             * 重置搜索条件
             * @param formId
             * @param tableId
             * @param pageNumber
             * @param pageSize
             */
            reset:function (formId,tableId, pageNumber, pageSize){
                zhuhuo.set(tableId);
                zhuhuo.options.formId = $.tools.isEmpty(formId) ? $('form').attr('id') : formId;
                $("#"+zhuhuo.options.formId)[0].reset();
                var params = $.tools.isEmpty(tableId) ? 
                    $("#" + zhuhuo.options.id).bootstrapTable('getOptions') : 
                    $("#" + tableId).bootstrapTable('getOptions');
                if ($.tools.isNotEmpty(pageNumber)) {
                    params.pageNumber = pageNumber;
                }
                if ($.tools.isNotEmpty(pageSize)) {
                    params.pageSize = pageSize;
                }
                if ($.tools.isNotEmpty(tableId)){
                    $("#" + tableId).bootstrapTable('refresh', params);
                } else{
                    $("#" + zhuhuo.options.id).bootstrapTable('refresh', params);
                }
            },


            /**
             * 获取实例ID,如存在多个返回#id1,#id2 delimeter分隔符 参考ruoyi
             * @param separator
             * @return {string}
             */
            getOptionsIds: function(separator) {
                var _separator = $.tools.isEmpty(separator) ? "," : separator;
                var optionsIds = "";
                $.each(zhuhuo.config, function(key, value){
                    optionsIds += "#" + key + _separator;
                });
                return optionsIds.substring(0, optionsIds.length - 1);
            },
            /**
             * 绑定监听事件
             */
            bindEvent:function (){
                //添加按钮点击事件
                $(".add-click").on('click',function (){
                    let url = zhuhuo.options.addPageUrl;
                    console.log('点击了新增按钮')
                    $.action.addPage(url);
                });
                //修改按钮点击事件
                $(".edit-click").on('click',function (){
                    let url = zhuhuo.options.editPageUrl;
                    console.log('点击了修改按钮')
                    $.action.editPage("",url);
                });
                //查询按钮点击事件
                $(".view-click").on('click',function (){
                    let url = zhuhuo.options.viewPageUrl;
                    $.action.viewPage(url);
                });

                // 实例ID信息
                var optionsIds = $.bstable.getOptionsIds();
                var needEvents = "all.bs.table click-row.bs.table dbl-click-row.bs.table click-cell.bs.table dbl-click-cell.bs.table sort.bs.table check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table check-some.bs.table uncheck-some.bs.table load-success.bs.table load-error.bs.table column-switch.bs.table column-switch-all.bs.table page-change.bs.table search.bs.table toggle.bs.table pre-body.bs.table post-body.bs.table post-header.bs.table post-footer.bs.table expand-row.bs.table collapse-row.bs.table refresh-options.bs.table reset-view.bs.table refresh.bs.table scroll-body.bs.table toggle-pagination.bs.table virtual-scroll.bs.table"
                // 监听事件处理
                $(optionsIds).on(needEvents, function () {
                    zhuhuo.set($(this).attr("id"));
                });
            }
        },
        //工具相关
        tools: {
            /**
             * 校验uri合法性
             * @param textval 传入的文本
             */
            validateURL:function (textval){
                const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
                return urlregex.test(textval)
            },
            /**
             * 校验小写字母
             * @param textval  传入的文本
             * @returns {boolean}
             */
            validateLowerCase: function (textval){
                const reg = /^[a-z]+$/
                return reg.test(textval)
            },
            /**
             * 校验是否为空
             * @param textval 传入的文本
             */
            isEmpty:function (textval){
                if (textval == null || this.trim(textval) == "" || textval == undefined || textval == "undefined") {
                    return true;
                }
                return false;
            },
            /**
             * 校验是否非空
             * @param textval
             * @return {boolean}
             */
            isNotEmpty: function (textval) {
                return !$.tools.isEmpty(textval);
            },
            /**
             * 判断是否为数字
             * @param textval
             */
            isNumeric:function (textval){
                return !isNaN(parseFloat(textval)) && isFinite(textval)
            },
            /**
             * 剔除空格
             * @param textval
             * @return {string}
             */
            trim:function (textval){
                if (textval == null) {
                    return "";
                }
                return textval.toString().replace(/(^\s*)|(\s*$)|\r|\n/g, "");
            },
            /**
             * 校验是否为移动端
             */
            mobileTerminal:function(){
                if(navigator.userAgent.match(/(iPhone|iPad|Android|ios)/i)){
                  return true;
                }
                return false;
            },
            /**
             * 获取对象长度
             * @param obj
             * @return {number}
             */
            getLength: function(obj) {
                var count = 0;
                for (var i in obj) {
                    if (obj.hasOwnProperty(i)) {
                        count++;
                    }
                }
                return count;
            },
            /**
             * 获取选中的窗口
             * @return {WindowProxy}
             */
            activeWindow: function () {
                var topWindow = $(window.parent.document);
                var currentId = $('.page-tabs-content', topWindow).find('.active').attr('data-id');
                if (!currentId) {
                    return window.parent;
                }
                return $('.zh-iframe[data-id="' + currentId + '"]', topWindow)[0].contentWindow;
            }



        },
        //表单相关
        form:{
            /**
             * form转json 通过传递form
             * @param form 表单信息
             */
            formToJsonNormal:function (form){
                let formData = new FormData(form);
                let json = {};
                for (var [key, value] of formData.entries()) {
                    json[key] = value;
                }
                return JSON.stringify(json);
            },
            /**
             * form转json 通过formid传递
             * @param formId  表单id
             * @return {{}}
             */
            formToJsonJq: function(formId) {
                var json = {};
                $.each($("#" + formId).serializeArray(), function(i, field) {
                    if (json[field.name]) {
                        json[field.name] += ("," + field.value);
                    } else {
                        json[field.name] = field.value;
                    }
                });
                return json;
            },
            /**
             * form 序列化
             * @param form
             * @return {*}
             */
            formToSerialize(form){
                return form.serialize();
            },

            /**
             * 唯一性校验
             */
            uniqueCheck:function (res,type){
                //如果type
                if($.tools.isEmpty(type) || type == "1"){
                    let result = JSON.parse(res)
                    //1存在 0 不存在 false 为存在 true 为不存在
                    if(result.responseData == "1"){
                        return false;
                    }else {
                        return true;
                    }
                }else {
                    if(res == "1"){
                        return false;
                    }else {
                        return true;
                    }
                }


            }

        },
        //方法相关
        action: {
            /**
             * ajax 封装 表单提交
             * @param methodType  请求类别 get post
             * @param methodUrl   请求地址
             * @param contentType 请求内容类型 默认 application/x-www-form-urlencoded 如果需要json形式则application/json
             * @param requestData 请求参数
             * @param dataType    返回数据类型 默认json
             * @param callback    回调函数
             */
            submit:function (methodType,methodUrl,contentType,requestData,dataType,callback){
                $.ajax({
                    url:methodUrl,
                    type:methodType,
                    data:requestData,
                    dataType:dataType,
                    contentType: contentType,
                    success: function(result) {
                        if (typeof callback == "function") {
                            callback(result);
                        }
                        $.action.defaultCallBack(result);
                    }
                })
            },
            /**
             * post提交 json格式
             * @param methodUrl     请求地址
             * @param requestData   请求内容
             * @param callback      回调函数
             * @param isStringify   是否需要转换
             */
            postJson:function (methodUrl,requestData,isStringify,callback){
                let methodType = "post";
                let requestParams = $.tools.isEmpty(isStringify)?JSON.stringify(requestData): isStringify?JSON.stringify(requestData):requestData;
                let contentType = "application/json";
                let dataType = "json";
                this.submit(methodType,methodUrl,contentType,requestParams,dataType,callback);
            },
            /**
             * post 提交 对象格式/普通格式
             * @param methodUrl     请求地址
             * @param requestData   请求内容
             * @param callback      回调函数
             */
            postNormal:function (methodUrl,requestData,callback){
                let methodType = "post";
                let contentType = "application/x-www-form-urlencoded";
                let dataType = "json";
                this.submit(methodType,methodUrl,contentType,requestData,dataType,callback);
            },
            /**
             * get  请求
             * @param methodUrl    请求地址
             * @param requestData  请求内容
             * @param callback     回调函数
             */
            getNormal:function (methodUrl,requestData,callback){
                let methodType = "get";
                let contentType = "application/x-www-form-urlencoded";
                let dataType = "json";
                this.submit(methodType,methodUrl,contentType,requestData,dataType,callback);
            },
            /**
             * 新增页面
             * @param targetUrl  目标地址 如果为静态页面则为具体地址,如果为动态通过服务端获取则为请求路径
             */
            addPage:function (targetUrl){
                zhuhuo.set()
                if($.tools.isEmpty(targetUrl)){
                    targetUrl = zhuhuo.options.addPageUrl;
                }
                if($.tools.isEmpty(targetUrl)){
                    $.modal.msg("未设置新增页页面地址,请检查","error");
                }
                $.modal.openPop("新增"+zhuhuo.options.modualName,targetUrl)
            },
            /**
             * 修改页面
             * @param identifying   主键id/或者唯一标识,一般为主键id
             * @param targetUrl     目标地址 如果为静态页面则为具体地址,如果为动态通过服务端获取则为请求路径
             */
            editPage:function (identifying,targetUrl){
                //设置options
                zhuhuo.set()
                //判断是否设置修改页面地址
                if($.tools.isEmpty(targetUrl)){
                    targetUrl = zhuhuo.options.editPageUrl;
                }
                if($.tools.isEmpty(targetUrl)){
                    $.modal.msg("未设置修改页面地址,请检查","error");
                    return;
                }

                //判断id是否为空,是否选中
                if($.tools.isEmpty(identifying)){
                    //获取选中行
                    let selections = $("#" + zhuhuo.options.id).bootstrapTable('getSelections');
                    //判断是否选中行
                    if (selections.length === 0) {
                        $.modal.msg("请选择记录进行编辑操作","info");
                        return;
                    }
                    //判断是否只选中一行
                    if (selections.length > 1) {
                        $.modal.msg("只能选择一条记录进行编辑操作","info");
                        return;
                    }

                    identifying = selections[0][zhuhuo.options.uniqueId];
                    console.log('id',identifying)
                }
                targetUrl = targetUrl.replace('{id}', identifying);
                $.modal.openPop("修改"+zhuhuo.options.modualName,targetUrl)
            },
            /**
             * 详情页面
             * @param identifying  主键id/或者唯一标识,一般为主键id
             * @param targetUrl    目标地址 如果为静态页面则为具体地址,如果为动态通过服务端获取则为请求路径
             */
            viewPage:function (identifying,targetUrl){
                //设置options
                zhuhuo.set()
                //判断是否设置详情页面地址
                if($.tools.isEmpty(targetUrl)){
                    targetUrl = zhuhuo.options.viewPageUrl;
                }
                if($.tools.isEmpty(targetUrl)){
                    $.modal.msg("未设置详情页面地址,请检查","error");
                    return;
                }

                //判断id是否为空,是否选中
                if($.tools.isEmpty(identifying)){
                    //获取选中行
                    let selections = $("#" + zhuhuo.options.id).bootstrapTable('getSelections');
                    //判断是否选中行
                    if (selections.length === 0) {
                        $.modal.msg("请选择记录进行查询操作","info");
                        return;
                    }
                    //判断是否只选中一行
                    if (selections.length > 1) {
                        $.modal.msg("只能选择一条记录进行查询操作","info");
                        return;
                    }
                    identifying = selections[0][zhuhuo.options.uniqueId];
                }
                //地址格式化
                targetUrl = targetUrl.replace('{id}', identifying);
                $.modal.openViewPop("查询"+zhuhuo.options.modualName,targetUrl)
            },
            /**
             * 删除数据
             * @param identifying
             * @param targetUrl
             */
            remove:function (identifying,targetUrl){
                //设置options
                zhuhuo.set()
                //判断是否设置删除地址
                if($.tools.isEmpty(targetUrl)){
                    targetUrl = zhuhuo.options.removeUrl;
                }
                if($.tools.isEmpty(targetUrl)){
                    $.modal.msg("未设置删除内容地址,请检查","error");
                    return;
                }

                //判断id是否为空,是否选中
                if($.tools.isEmpty(identifying)){
                    //获取选中行
                    let selections = $("#" + zhuhuo.options.id).bootstrapTable('getSelections');
                    //判断是否选中行
                    if (selections.length === 0) {
                        $.modal.msg("请选择记录进行删除操作","waring");
                        return;
                    }
                    //判断是否只选中一行
                    if (selections.length > 1) {
                        $.modal.msg("只能选择一条记录进行删除操作","waring");
                        return;
                    }
                    identifying = selections[0][zhuhuo.options.uniqueId];
                }
                //地址格式化
                targetUrl = targetUrl.replace('{id}', identifying);
                $.modal.confirm("确定删除该条信息吗?", function() {
                    var url = targetUrl
                    var data = { "id": identifying };
                    $.action.postJson(url,data);
                });
            },

            /**
             * 默认回调方法,基本用于表单提交回调关闭弹出层使用,包含关闭弹出层后刷新表格
             * @param result
             */
            defaultCallBack:function (result){
                var parent = $.tools.activeWindow();
                if(result.responseCode == "200"){
                    $.modal.closePop();
                    parent.$.modal.msg(result.responseMessage,'success');
                    parent.$.bstable.refreshData();
                }else {
                    $.modal.msg(result.responseMessage,'error');
                }
            }
        },
        //弹出框相关
        modal:{
            /**
             * 弹出框的图标
             * @param type
             */
            icon:function (type){
                var icon = "";
                switch (type){
                    case "success":
                         icon = 1;
                         break
                    case "error":
                         icon = 2;
                         break
                    case "waring":
                         icon = 3;
                         break
                    case "fail":
                         icon = 5;
                         break
                    default:
                        icon = 1;
                        break
                }
                return icon;
            },

            /**
             * 提示
             * @param msg    消息内容
             * @param type   类型 warning,error,success,info
             * @param callback 回调函数
             */
            tip:function (msg,type,callback){
            },
            /**
             * 消息弹窗提示
             * @param content  提示内容
             * @param type     类型 warning,error,success,info
             */
            msg:function (content,type){
                if (type != undefined) {
                    top.layer.msg(content, { icon: $.modal.icon(type), time: 1000, shift: 5 });
                } else {
                    top.layer.msg(content);
                }
            },

            /**
             * 确认提示
             * @param content          提示内容
             * @param successCallBack  确认回调函数
             * @param cancelCallBack   取消回调函数
             */
            confirm:function (content,callBack){
                top.layer.confirm(content, {
                    icon: 3,
                    title: "系统提示",
                    btn: ['确认', '取消']
                }, function (index) {
                    $.modal.closePop(index);
                    callBack(true);
                });
            },

            /**
             * 打开弹窗
             * @param title   标题
             * @param url     地址/如果为动态获取一般为后台请求地址
             * @param width   宽度
             * @param height  高度
             * @param isFull  是否全屏
             */
            openPop:function (title,url,isFull,width,height){

                //校验环境是否为移动端
                if($.tools.mobileTerminal()){
                    width = 'auto';
                    height = 'auto';
                }
                if($.tools.isEmpty(width)){
                    width = 800;
                }
                if($.tools.isEmpty(height)){
                    height = $(window).height();
                }

                var index = top.layer.open({
                    type: 2,
                    title: title,
                    area: [width + 'px', height + 'px'],
                    content: url,  //要展示的内容,此处可以通过后台获取,也可以自定义
                    fix: false,
                    maxmin: true,  //开启最大化最小化按钮
                    shade: 0.3,
                    btn: ['确定', '关闭'],
                    shadeClose: true, // 弹层外区域关闭
                    yes: function(index, layero) {
                        var iframeWin = layero.find('iframe')[0];
                        iframeWin.contentWindow.submitHandler(index, layero);
                    },
                    cancel: function(index) {
                        return true;
                    },
                    success: function () {
                        $(':focus').blur();
                    }
                });
                if(zhuhuo.options.isFullShow){
                    top.layer.full(index);
                }
            },
            /**
             * 打开详情弹窗
             * @param title   标题
             * @param url     地址/如果为动态获取一般为后台请求地址
             * @param width   宽度
             * @param height  高度
             * @param isFull  是否全屏
             */
            openViewPop:function (title,url,isFull,width,height){

                //校验环境是否为移动端
                if($.tools.mobileTerminal()){
                    width = 'auto';
                    height = 'auto';
                }
                if($.tools.isEmpty(width)){
                    width = 800;
                }
                if($.tools.isEmpty(height)){
                    height = $(window).height();
                }

                var index = top.layer.open({
                    type: 2,
                    title: title,
                    area: [width + 'px', height + 'px'],
                    content: url,  //要展示的内容,此处可以通过后台获取,也可以自定义
                    fix: false,
                    maxmin: true,  //开启最大化最小化按钮
                    shade: 0.3,
                    btn: ['关闭'],
                    shadeClose: true, // 弹层外区域关闭
                    cancel: function(index) {
                        return true;
                    },
                    success: function () {
                        $(':focus').blur();
                    }
                });
                if(zhuhuo.options.isFullShow){
                    top.layer.full(index);
                }
            },


            /**
             * 关闭弹出层
             * @param index  iframe的索引
             */
            closePop:function (index){
                if ($.tools.isEmpty(index)){
                    var index = parent.layer.getFrameIndex(window.name);
                    parent.layer.close(index);
                } else {
                    top.layer.close(index);
                }
            }
        },
    })

})(jQuery);
上一篇:018-管理后台操作日志功能开发
下一篇:没有了
网友评论