解决对layui中的项目中碰到的一系列问题


问题1:解决对layui中的表格添加合计的问题

第1步:在Table中render中添加字段: totalRow: true,  开启总和模式

第2步:在要写合计的参数中写上合计:     totalRowText: '合计',

第3步:.在要计算数值的字段中添加上:    totalRow: true

如果需要多个要计算的字段参数,就把totalRow: true 放在每一个参数中

 

 

问题2.跳转Table表的问题

第1步:在要链接的某列中写上模板:templet: '#usernameTpl'

第2步:在模板中写上链接, a标签中写上跳转的页面,并传递参数:

<script  type="text/html" id="usernameTpl">

        <a href="vaccineCountTable.html?labelname={{ d.label }}" class="layui-table-link" style="text-decoration: underline;" target="_blank">{{d.unitName}}</a>

</script> 

 

问题3:解决把传递过来的参数放在调取的接口参数中,但页面上要灵活,且点击其他的条件也是可以调取的参数问题?

解决问题的思路:

1.让通过链接传来的参数与页面中的参数共用一个全局变量 ,且把页面中的获取到的条件也设成全局变量

2.当通过其他行跳转的参数点击跳转到这个页面时,调取查询的函数

3.在函数中,进行判断 如果 刚进入页面时,页面上的条件全局变量为null 或“ ”就用公用的全局参数等于传来的参数,

反之,如果不为null  ,那就说明,条件被人重新选择了,这时候让全局变量等于选择的条件参数,然后放进去到接口

的参数中

第1步:获取到页面中的url链接并解析截取关键字与传递的参数:

 

        // 拆分url 

        function getQueryVariableTrend(variable)

                {

               var query = window.location.search.substring(1);

               var vars = query.split("&");

               for (var i=0;i<vars.length;i++) {

                       var pair = vars[i].split("=");

                       if(pair[0] == variable){return pair[1];}

               }

               return(false);

        }

第2步:把传递获取到的参数也写成全局变量:

        //传递过来的数据

        var labelnameByTrend ='';

        labelnameByTrend = getQueryVariableTrend("labelname");     

 

第3步:判断页面中的条件是否为空,如果为条件为null就让传递接口的参数等于传递的参数,否则传递接口的参数等于选中的条件:

dataLabel:页面中的条件   labelnameByData:写入传递接口的参数    labelnameByTrend:页面传递过来的参数

        if(dataLabel=="") {

                        labelnameByData = labelnameByTrend

                }else {

                        labelnameByData=dataLabel

                }

 

第4步:放在接口中 如下:

       

                $.ajax(BaseHost + queryStatisticsUrL,{

                data:{

                        label:labelnameByData,

                        },

问题4:解决已实现跳转 但页面跳转至新的,但不再整个父框架中的问题?

第1步: 在某行上添加链接,可进行跳转,在要添加的链接某列上添加:

templet: '#usernameTpl'

第2步: 添加模板 ,在a链接中添加事件触发:lay-event="isWorkEvent"

 

在前提写的摸索出来的代码:<a href="vaccineCountTable.html?labelname={{ d.label }}">{{d.unitName }}</a> 

但问题是跳到了一个新的界面

 

<script  type="text/html" id="usernameTpl">

        <a  class="layui-table-link"  style="text-decoration: underline; " target="_blank" lay-event="isWorkEvent">{{d.unitName}}</a>

</script>

第3步,在整体表格的加载中添加代码如下: 此代码可在父框架的页面下直接跳转

var  datalabel=data.label;  //要传递的参数

                        console.log("--------"+datalabel)

                       

        if (obj.event == 'isWorkEvent') {

                var okTab = parent.objOkTab;

                var url = "pages/vaccineCountTable.html" +

                "?labelname=" + datalabel;

                var page = '<div lay-id="" data-url="' + url + '"><cite>疫苗接种统计详情</cite></div>';

                okTab.tabAdd(page);

        }

问题5:行程码中解决的问题?

在上传的文件中判断不小于几k 或者不大于多少的问题:

         if(file.size>1024 * 1024 * 4) {

        layer.msg('图片大小不能超过4M');

        }

        else if(file.size<1024 * 15) {  

        layer.msg('图片大小不能小于15K,请上传100k-200k不超过4M的图片');

        }

问题6:刀壽退赔厂商因为角色权限看不见某列的问题?

解决方法:

在表格中的done:function(){

// 如果角色为2或3 加工商或加具商的情况下 根据角色判断然后进行隐藏或显示                               

        if(empuserType==2|| empuserType==3 ) {

        $(".layui-table-box").find("[data-field='filePath']").css("display","none");

        } else  {

        $(".layui-table-box").find("[data-field='filePath']").css("display","block");

        }

}

问题7:解决图片显示,如果图片源是null 就不显示,如果有数据,就显示的问题?

1,最初的写法在列表内部写法:

        templet: function(d) {

        return '<div><a href="'+d.filePath+'" style="cursor:pointer; color:blue" target="_blank">查看</a></div>';

        }

2.要展示数据源是null,不显示问题:

在列中写上路径:

templet: '#filePathButton'

 

<script type="text/html" id="filePathButton">

        {{# if(d.filePath==null){ }}

                <p></p>

        {{# } else if(d.filePath !==null) { }}

         <div><a href="{{d.filePath}}"  style="cursor:pointer; color:blue;text-decoration: underline;" target="_blank">查看</a></div>;

{{# } }}

</script>

问题8:在Tble中选择某一列选择点击图片,显示当前图片?

第1步:  在某一列中写入模板:如下代码

                {

                       

                                field: 'filePath',

                                title: '疫苗记录',

                                sort: true,

                                width: '120',

                                align: 'center',

                                templet: function(d) {

                                return '<div onclick="show_img(this)"><a src="'+d.filePath+'" style="cursor:pointer; color:blue" target="_blank">查看</a></div>';

                                }      

                        },

 

第2步:  写上当前的方法  当点击当前a链接的时候进行触发的方法: // 这一块的链接是线上可点击的链接 直接用方法显示图片上

        //显示大图片

        window.show_img = function (t) {

                var t = $(t).find("a");

                //页面层

                layer.open({

                title: "接种疫苗信息",

                  type: 1,

                  skin: 'layui-layer-rim', //加上边框

                   area: ['80%', '95%'], //宽高

                  shadeClose: true, //开启遮罩关闭

                  end: function (index, layero) {

                    return false;

                  },

                  content: '<div style="text-align:center"><img src="' + $(t).attr('src') + '"  width="90%" height="90%"/></div>'

                });

        }

在table中显示缩略图的方法:

第一步:

cols: [[ //表头

  {

      field: 'brand_img_url',

      title: '图片',

      sort: true,

      templet: function(d){

        return '<div οnclick="show_img(this)" ><img src="'+d.brand_img_url+'" alt="" width="50px" height="50px"></a></div>';

      }

    }

 ]]

 

第二步:

//显示大图片

    function show_img(t) {

      var t = $(t).find("img");

      //页面层

      layer.open({

        type: 1,

        skin: 'layui-layer-rim', //加上边框

         area: ['80%', '80%'], //宽高

        shadeClose: true, //开启遮罩关闭

        end: function (index, layero) {

          return false;

        },

        content: '<div style="text-align:center"><img src="' + $(t).attr('src') + '" /></div>'

      });

    }

 

在table中显示如果有数据就显示,没有数据就不显示的图片查看的方法?

 

第1步: 在当前列写上模板

{

                                                field: 'filePath',

                                                title: '下载附件',

                                                sort: true,

                                                width: '120',

                                                align: 'center',

                                                fixed: "right",

                                                templet: '#filePathButton'

                                        },

 

第2步:在模板中写上如果信息是null 就不填  如果不是null  就把数据放在a链接中

<script type="text/html" id="filePathButton">

        {{# if(d.filePath==null){ }}

                <p></p>

        {{# } else if(d.filePath !==null) { }}

         <div><a href="{{d.filePath}}"  style="cursor:pointer; color:blue;text-decoration: underline;" target="_blank">查看</a></div>;

{{# } }}

</script>

问题9:在Tble中选择某一列添加千位分隔符?

第一步: 为某列添加模板渲染:

                {

                                                field: "totalMoney",

                                                title: "厂商责任赔付金额",

                                                sort: true,

                                                align: "right",

                                                width: '13%',

                                                templet: '#totalMoneyButton',

                                               

                                        },

 

第2步: 在模板中对字段进行函数调用:

<script type="text/html" id="totalMoneyButton">{{number(d.totalMoney)}} </script>

 

第三步:千位分隔符的函数方法如下:

 

        // 千分位函数调取方法

        function number(s, n) {

                 

                        if (s !== null && s !== undefined  && s !== '') {

 

                                n = n >= 0 && n <= 20 ? n : 2;

                                s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";

                                var l = s.split(".")[0].split("").reverse(),

                                        r = s.split(".")[1];

                                r = r == null ? "" : "." + r;

                                var t = "";

                                // console.log(l)

                                if (l[l.length - 1] === '-') {//负数不需要分隔号,

 

                                        for (var i = 0; i < l.length; i++) {

                                                if (l[i]==='-') {

                                                        t += l[i]+""

                                                        continue

                                                }

                                                //不是数组的倒数第二个元素才加"," ["0", "4", "5", "-"]

                                                t += l[i] + ((i + 1) % 3 == 0 && i + 1 != l.length-1 ? "," : "");

 

                                                //i + 1 != l.length会变成-,540.00,因为在5时元素位置2+1为3非数组长度

                                                //t += l[i] + ((i + 1) % 3 == 0 && i + 1 != l.length ? "," : "");

                                        }

                                }

                                else {

                                        for (var i = 0; i < l.length; i++) {

                                                t += l[i] + ((i + 1) % 3 == 0 && i + 1 != l.length ? "," : "");

                                        }

                                }

                                return (

                                        t.split("").reverse().join("") + r  //r 为小数部分

                                );

                        }else{

                                return ''

                        }

                }

问题10:在一个刀寿趋势echart图  满足两种操作  一种操作,正常进入 网页  正常调用接口   第二种操作  是邮件操作:根据邮件发送的参数进行调取这个页面与方法?

第1步:.首先根据条件进行判断,当页面一显示的时候就调用此方法:

        window.onload = function () {

                  getUrlsendData();

                 

                }

               

        //获取发送邮件的连接

        function  getUrlsendData() {

 

          // 1.默认先获取自己的链接

         var url=window.location.href;

         

 // url="http://appservice.casetekcorp.com:8443/tool/KnifeRefundWeb/pages/knifeAchievementRate-Echart.html?buName=BU1&model=&date=2021-06-28&type=week";

                //获取如果连接中没传参数,正常运行

                2. 判断此url链接中是否带?   通过ndexOf  来进行寻找 是否能找到,如果找不到结果为-1 的话 就让周日的Tab中的块隐藏着,并且调取接口方法

        if(url.indexOf("?")==-1)        

        {

                 // 隐藏周月

                 document.getElementById('WeekTab').style.display = 'none';

                  getUserData() 

        }

        else{

                3.反之  链接中有? 链接且带参数  就把链接的url放在函数中进行查分  获取取到的参数并放在input中   并且根据参数调取函数

                //传参数数据

                geturlData(url);

                // 隐藏周月

                document.getElementById('WeekTab').style.display = 'block';

                 getUserData(); 

       

         }

  }

 

 

        function geturlData(url) {

                1. 用solit拆分 ? 分隔  取得? 之后的参数

                let param=url.split("?")[1];

                2.用split拆分以& 为分隔的参数与属性

                let arr=param.split("&");              

                let obj={};

                3. 对arr进行遍历  以等号对每个参数进行获取

         

            for(let i=0; i<arr.length;i++) {

                    let arr_param=arr[i].split("=");

                    obj[arr_param[0]]=arr_param[1];

            }      

           

              params = obj;

         

            //bu 获取到bu 的参数

                var  projuctData=params.buName;

            //幾種

                var  modelData=params.model;

          //按周按月

              typeData=params.type;

 

                //Bus  把获取到的参数放在 当前的条件中

                projuctDatalist = document.getElementById("Project").value = projuctData;

                //机种

                modelDatalist =  document.getElementById("model").value = modelData;

                //日期

                warningDate=$("#warningDate").val(params.date); 

  }

 

第二步:對echart 进行遍历  根据机种进行判断当借口成功调取时  

 

 

 

                                layer.closeAll('loading');

                                mailData = data.data;

               

                         var colors = ['#5470C6', '#91CC75','#8e0fe5', '#EE6666', '#009688'];

                       

                                var title = ['使用寿命','标准寿命','刀具数量','达成率','成本'];   

 

                                setData(mailData,title,colors)

 

 

 

对整个echart进行获取:

        function setData(mailData,title,colors) {

                 for (let i = 0; i < mailData.buName.length; i++) {

             for (let index = 0; index < mailData.buData[i].model.length; index++) {

                       

                       

                                var model = mailData.buData[i].model[index];

                                var actualLifeList = mailData.buData[i].trendData[index].actualLife;

                                var standardLifeList = mailData.buData[i].trendData[index].standardLife;

                                var countList = mailData.buData[i].trendData[index].toolCount;

                                var rateList = mailData.buData[i].trendData[index].rate;

                                var moneyList = mailData.buData[i].trendData[index].toolMoney;

                                var dateList = mailData.buData[i].trendData[index].date;

                       

                        var trend = document.getElementById('RateList');

                        var div = document.createElement('div');

                        var id = 'div' + i + '' +index;

                        div.style.width = '1300px';

                        div.style.height = '500px';

                        div.style.marginTop='27px';

                        div.style.marginLeft='-66px';

                        div.id = id;

               

                        var h1 = document.createElement('h1');

                        h1.id = 'h1' + i + '' +index;

                        h1.style.fontSize = '15px';

                        h1.style.color = 'red';

                        h1.style.fontWeight = 'bolder';

                        h1.style.marginTop = '27px';

                  h1.innerHTML = 'BU名 : ' + mailData.buName[i] + '</br>机种 : ' + model;

                        trend.appendChild(h1);

                        trend.appendChild(div);

            

                          var myChart = echarts.init(div);

                                        var option;

                                        option = {

                                            color: colors,

                                            tooltip: {

                                                trigger: 'axis',

                                                axisPointer: {

                                                    type: 'cross'

                                                }

                                            },

                                            grid: {

                                                right: '20%'

                                            },

                                            toolbox: {

                                                feature: {

                                                    dataView: {

                                                        show: true,

                                                        readOnly: false

                                                    },

                                                    restore: {

                                                        show: true

                                                    },

                                                    saveAsImage: {

                                                        show: true

                                                    }

                                                }

                                            },

                                            legend: {

                                                data: title

                                            },

                                            xAxis: [{

                                                type: 'category',

                                                axisTick: {

                                                    alignWithLabel: true

                                                },

                                                data: dateList

                                            }],

                                            yAxis: [{

                                                type: 'value',

                                                name: title[0],

                                                position: 'right',

                                                axisLine: {

                                                    show: true,

                                                    lineStyle: {

                                                        color: colors[0]

                                                    }

                                                },

                                                axisLabel: {

                                                    formatter: '{value}'

                                                }

                                            },

                                                {

                                                    type: 'value',

                                                    name: title[1],

                                                    position: 'right',

                                                    offset: 80,

                                                    axisLine: {

                                                        show: true,

                                                        lineStyle: {

                                                            color: colors[1]

                                                        }

                                                    },

                                                    axisLabel: {

                                                        formatter: '{value}'

                                                    }

                                                },

                                                {

                                                    type: 'value',

                                                    name: title[2],

                                                    position: 'right',

                                                    offset: 160,

                                                    axisLine: {

                                                        show: true,

                                                        lineStyle: {

                                                            color: colors[2]

                                                        }

                                                    },

                                                    axisLabel: {

                                                        formatter: '{value}'

                                                    }

                                                },

                                                {

                                                    type: 'value',

                                                    name: title[3],

                                                    position: 'left',

                                                    axisLine: {

                                                        show: true,

                                                        lineStyle: {

                                                            color: colors[3]

                                                        }

                                                    },

                                                    axisLabel: {

                                                        formatter: '{value}%'

                                                    }

                                                },

                                                {

                                                    type: 'value',

                                                    name: title[4],

                                                    position: 'left',

                                                    offset: '60',

                                                    axisLine: {

                                                        show: true,

                                                        lineStyle: {

                                                            color: colors[4]

                                                        }

                                                    },

                                                    axisLabel: {

                                                        formatter: '{value}¥'

                                                    }

                                                }

                                            ],

                                            series: [{

                                                name: title[0],

                                                type: 'bar',

                                                data: actualLifeList

                                            },

                                                {

                                                    name: title[1],

                                                    type: 'bar',

                                                    yAxisIndex: 1,

                                                    data: standardLifeList

                                                },

                                                {

                                                    name: title[2],

                                                    type: 'bar',

                                                    yAxisIndex: 2,

                                                    data: countList

                                                },

                                                {

                                                    name: title[3],

                                                    type: 'line',

                                                    yAxisIndex: 3,

                                                    data: rateList

                                                },

                                                {

                                                    name: title[4],

                                                    type: 'line',

                                                    yAxisIndex: 4,

                                                    data: moneyList

                                                }

                                            ]

                                        };

                                        myChart.setOption(option, true);

                       

                                    }

                                }

                            }

问题11:在对在一行中把数据传到编辑的页面,且如果新增的话,也可以进行选择单独的页面?

1.在厂区中在渲染select中传过来的数据放在判断中如下 这是传过来的数据:

 

                var province_Data= '';

                var provinceIdt_Data= '';

                (function(window) {

                        function setData(data) {

                                if (data) {

                                var  form = layui.form;

                                        cityIdData = data.cityId;

                                        cityName_Data = data.cityName;

                                var   dangerLevel_Data = data.dangerLevel;

                                province_Data = data.province;

                                provinceIdt_Data = data.provinceId;

                                // //选择  省市

               

                                // /中高风险选项

                                if(dangerLevel_Data==2) {

                                        $("#highRisk").prop("checked",true)

                                } else if(dangerLevel_Data==1){

                                        $("#middleRisk").prop("checked",true)

                                } else if(dangerLevel_Data==0) {

                                        $("#noneRisk").prop("checked",true)

                                }

 

                                }

                        }

2.对厂区进行判断:

//获取省

               

                        function getProvince() {

                                var token =     window.localStorage.getItem('token');

                                $.ajax(BaseHost + getProvinceURL, {

                                        data:{

                                                token:token,

                                                cityId:ProvincecityId

                                        },

                                        dataType: 'json',

                                        type: 'post',

                                        timeout: 10000,

                                        contentType: "application/x-www-form-urlencoded; charset=UTF-8",

                                        success: function(data) {

                                                var data = data.data;

                                                form = layui.form;

                                                var select = $("select[name=Province]");

                                                select.empty();

                                                select.append(new Option("--请选择--", ""));

                                                var index='';

                                               

                                                for (var i = 0; i < data.length; i++) {

                                                        select.append(new Option(data[i].cityName, data[i].cityId));

 

                                                       

if(province_Data==data[i].cityName) {  // 从此处判断  重中之重 关键代码

                                                                      $("#Province").find("option[value='"+provinceIdt_Data+"']").attr("selected","selected")

                                                                       

}

                                                                getCity(provinceIdt_Data)

                                                }

                                                form.render('select');

                                       

                                                       

                                       

                                        },

                                        error: function(xhr, type, errorThrown) {

                                                layer.msg("请求失败,请重试")

                                        }

                                });

                        }

                       

对传来的单选框进行默认选中:                // /中高风险选项

                                if(dangerLevel_Data==2) {

                                        $("#highRisk").prop("checked",true)

                                } else if(dangerLevel_Data==1){

                                        $("#middleRisk").prop("checked",true)

                                } else if(dangerLevel_Data==0) {

                                        $("#noneRisk").prop("checked",true)

                                }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM