解決對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