layui上传文件(通过class='layui-btn layui-btn-sm uploadBtn file2_"+i+"')

本文详细介绍了一种分红协议及票据附件的动态表格生成与上传处理机制,利用JavaScript与jQuery实现表格行的增删,以及文件上传功能。通过下拉菜单选择分红单位类型和投资单位,联动显示相应选项,同时支持分红年限、分红比例、投资金额的输入。

================================================================================================

回显数据:

for(var k = 0;k < bonusList.length; k++) {
    var bonus  = bonusList[k];
    i += 1;
    var tablestr = "";
    tablestr += "<tr id=\"tr_bonus_"+i+"\">";
    tablestr += "<input type=\"hidden\" value="+i+" name=\"bonus\"/>";
    tablestr += "<td style='width: 15.2%!important;'><input type=\"text\" id=\"bonusYears"+i+"\" name=\"bonusYears\" class=\"form-control\"" +
        "placeholder=\"分红年限\"></td>";
    tablestr += "<td style=\"text-align: center; vertical-align: middle; width: 100px; \">";
    tablestr += "  <span class=\"editable-container editable-inline\" style=\"\"> ";
    tablestr += "     <div> ";
    tablestr += "        <form class=\"form-inline editableform form-nowidth\" style=\"\"> ";
    tablestr += "           <div class=\"control-group\">";
    tablestr += "              <div>";
    tablestr += "                 <div class=\"editable-input\">";
    tablestr += "<select   lay-ignore id=\"bonusUnitType"+i+"\"  onchange=\"lianCha(this.id)\" class=\"form-control input-sm\">";
    tablestr += "<option value=''>请选择</option>";
    for(var j= 0;j<unitTypeList.length;j++) {
        var  UnitType = unitTypeList[j];
        tablestr += "<option value=\""+UnitType.unit_type_id+"\">"+UnitType.unit_type_name+"</option>";
    }
    tablestr += "                    </select>";
    tablestr += "                 </div>";
    tablestr += "              </div>";
    tablestr += "           </div>";
    tablestr += "        </form>";
    tablestr += "     </div>";
    tablestr += "  </span>";
    tablestr += "</td>";

    tablestr += "<td style=\"text-align: center; vertical-align: middle; width: 100px; \">";
    tablestr += "  <span class=\"editable-container editable-inline\" style=\"\"> ";
    tablestr += "     <div> ";
    tablestr += "        <form class=\"form-inline editableform form-nowidth\" style=\"\"> ";
    tablestr += "           <div class=\"control-group\">";
    tablestr += "              <div>";
    tablestr += "                 <div class=\"editable-input\">";
    tablestr += "                    <select   lay-ignore class=\"form-control input-sm\" id=\"investUnit"+i+"\">";
    tablestr += "<option value=''>请选择</option>";
    tablestr += "                    </select>";
    tablestr += "                 </div>";
    tablestr += "              </div>";
    tablestr += "           </div>";
    tablestr += "        </form>";
    tablestr += "     </div>";
    tablestr += "  </span>";
    tablestr += "</td>";
    tablestr += "<td><input   type=\"text\" id=\"investment"+i+"\" name=\"investment\" class=\"form-control\"" +
        "placeholder=\"投资金额\"></td>";
    tablestr += "<td><input  type=\"text\" id=\"bonusPrec"+i+"\" name=\"bonusPrec\" class=\"form-control\"" +
        "placeholder=\"分红比例\"></td>";
    if(bonus.agreementName == undefined){
        tablestr += "<td id=\"fileDiv"+i+"\">";
        tablestr += "<button type='button'  onclick=\"fileupload('"+i+"')\" class='layui-btn layui-btn-sm uploadBtn file_"+i+"' >";
        tablestr += "<i class='layui-icon'>&#xe67c;</i>分红协议附件";
        tablestr += "</button>"
        tablestr += "</td>";
    }else{
        tablestr += "<td style='width: 15.2%!important;'><input   type=\"hidden\" id=\"bonusAgreement"+i+"\" value="+bonus.bonusAgreement+" class=\"form-control\" ><a target=\"_blank\" href="+bonus.agreementUrl+">"+bonus.agreementName+"</a></td>";
    }
    if(bonus.annexName == undefined){
        tablestr += "<td id=\"fileDiv2"+i+"\">";
        tablestr += "<button type='button' onclick=\"fileupload('"+i+"')\" class='layui-btn layui-btn-sm uploadBtn file2_"+i+"' >";
        tablestr += "<i class='layui-icon'>&#xe67c;</i>分红票据附件";
        tablestr += "</button>";
        tablestr += "</td>";
    }else{
        tablestr += "<td style='width: 15.2%!important;'><input   type=\"hidden\" id=\"bonusBill"+i+"\" value="+bonus.bonusBill+" class=\"form-control\" ><a target=\"_blank\" href="+bonus.annexUrl+">"+bonus.annexName+"</a></td>";
    }
    tablestr += "<td>";
    tablestr += "<a class=\"layui-btn layui-btn-mini layui-btn-primary\" onclick=\"gofenHBody('"+i+"')\">";
    tablestr += "删除</a></td>";
    tablestr += "</tr>";
    $("#fenHBody1").append(tablestr);
    $("#bonusYears"+i).val(bonus.bonus_years);
    $("#bonusPrec"+i).val(bonus.bonus_prec);
    $("#bonusUnitType"+i).val(bonus.bonus_unit_type);
    $("#investUnit"+i).val(bonus.bonus_unit_id);
    $("#investment"+i).val(bonus.investment);
    var bonusUnitTypeid = "bonusUnitType"+i  ;
    var bonus_unit_id = bonus.bonus_unit_id  ;
    var investUnitDiv = "#investUnit"+i  ;
    var selectId = bonusUnitTypeid.substring(13, bonusUnitTypeid.length);
    var unit_class = $("#" + bonusUnitTypeid).val();
    $.ajax({//查询投资单位参数表
        url: "../project/investUnit",
        type: "POST",
        data: {"unit_class": unit_class},
        dataType: "json",
        async: false,
        success: function (data) {
            $("#investUnit" + selectId).empty();
            var tablestr = "<option>请选择</option>";
            for (var j = 0; j < data.investUnitList.length; j++) {
                var investUnit = data.investUnitList[j];
                tablestr += "<option value=\"" + investUnit.in_unit_id + "\">" + investUnit.in_unit_name + "</option>";
            }
            $("#investUnit" + selectId).append(tablestr)
            $(investUnitDiv).val(bonus_unit_id);
            form.render();
        }
    });
    upload.render({
        elem: '.file_'+i
        ,url: '../file/fileUpload'
        ,method: 'post'
        ,done: function(res){ //上传后的回调
            if(res.msg=='1'){
                layer.msg("上传成功");
                console.log(res.file_name)
                addUpoloadTr(res.file_name,res.file_url,1);
            }else{
                layer.msg("上传失败");
            }
        }
        ,accept: 'file' //允许上传的文件类型
    })

    upload.render({
        elem: '.file2_'+i
        ,url: '../file/fileUpload'
        ,method: 'post'
        ,done: function(res){ //上传后的回调
            if(res.msg=='1'){
                layer.msg("上传成功");
                console.log(res.file_name)
                addUpoloadTr(res.file_name,res.file_url,2);
            }else{
                layer.msg("上传失败");
            }
        }
        ,accept: 'file' //允许上传的文件类型
    })

}

 

==================================================================================== 

添加一行操作: 

function fenHong(){
    i += 1;
    var tablestr = "";
    tablestr += "<tr id=\"tr_bonus_"+i+"\">";
    tablestr += "<input type=\"hidden\" value="+i+" name=\"bonus\"/>";
    tablestr += "<td style='width: 15.2%!important;'><input type=\"text\" id=\"bonusYears"+i+"\" name=\"bonusYears\" class=\"form-control\"" +
        "placeholder=\"分红年限\"></td>";
    tablestr += "<td style=\"text-align: center; vertical-align: middle; \">";
    tablestr += "  <span class=\"editable-container editable-inline\" style=\"\"> ";
    tablestr += "     <div> ";
    tablestr += "        <form class=\"form-inline editableform form-nowidth\" style=\"\"> ";
    tablestr += "           <div class=\"control-group\">";
    tablestr += "              <div>";
    tablestr += "                 <div class=\"editable-input\">";
    tablestr += "                    <select lay-ignore id=\"bonusUnitType"+i+"\" onchange=\"lianCha(this.id)\"   class=\"form-control input-sm\">";
    tablestr += "                               <option value=''>请选择</option>";
    for(var j= 0;j<unitTypeList.length;j++) {
        var  UnitType = unitTypeList[j];
        tablestr += "<option value=\""+UnitType.unit_type_id+"\">"+UnitType.unit_type_name+"</option>";
    }
    tablestr += "                    </select>";
    tablestr += "                 </div>";
    tablestr += "              </div>";
    tablestr += "           </div>";
    tablestr += "        </form>";
    tablestr += "     </div>";
    tablestr += "  </span>";
    tablestr += "</td>";
    tablestr += "<td style=\"text-align: center; vertical-align: middle; width: 100px; \">";
    tablestr += "  <span class=\"editable-container editable-inline\" style=\"\"> ";
    tablestr += "     <div> ";
    tablestr += "        <form class=\"form-inline editableform form-nowidth\" style=\"\"> ";
    tablestr += "           <div class=\"control-group\">";
    tablestr += "              <div>";
    tablestr += "                 <div class=\"editable-input\">";
    tablestr += "                    <select lay-ignore class=\"form-control input-sm\" id=\"investUnit"+i+"\">";
    tablestr += "                               <option value=''>请选择</option>";
    tablestr += "                    </select>";
    tablestr += "                 </div>";
    tablestr += "              </div>";
    tablestr += "           </div>";
    tablestr += "        </form>";
    tablestr += "     </div>";
    tablestr += "  </span>";
    tablestr += "</td>";
    tablestr += "<td style='width: 15.2%!important;'><input type=\"text\" id=\"investment"+i+"\" name=\"investment\" class=\"form-control\"" +
        "placeholder=\"投资金额\"></td>";
    tablestr += "<td style='width: 15.4%!important;'><input type=\"text\" id=\"bonusPrec"+i+"\" name=\"bonusPrec\" class=\"form-control\"" +
        "placeholder=\"分红比例\"></td>";
    tablestr += "<td id=\"fileDiv"+i+"\">";
    tablestr += "<button type='button'  onclick=\"fileupload('"+i+"')\" class='layui-btn layui-btn-sm uploadBtn file_"+i+"' >";
    tablestr += "<i class='layui-icon'>&#xe67c;</i>分红协议附件";
    tablestr += "</button>"
    tablestr += "</td>";
    tablestr += "<td id=\"fileDiv2"+i+"\">";
    tablestr += "<button type='button' onclick=\"fileupload('"+i+"')\" class='layui-btn layui-btn-sm uploadBtn file2_"+i+"' >";
    tablestr += "<i class='layui-icon'>&#xe67c;</i>分红票据附件";
    tablestr += "</button>";
    tablestr += "</td>";
    tablestr += "<td>";
    tablestr += "<a class=\"layui-btn layui-btn-mini layui-btn-primary\" onclick=\"goDelBonus('"+i+"')\">";
    tablestr += "删除</a></td>";
    tablestr += "</tr>";
    $("#fenHBody1").append(tablestr);
    upload.render({
        elem: '.file_'+i
        ,url: '../file/fileUpload'
        ,method: 'post'
        ,done: function(res){ //上传后的回调
            if(res.msg=='1'){
                layer.msg("上传成功");
                console.log(res.file_name)
                addUpoloadTr(res.file_name,res.file_url,1);
            }else{
                layer.msg("上传失败");
            }
        }
        ,accept: 'file' //允许上传的文件类型
    })

    upload.render({
        elem: '.file2_'+i
        ,url: '../file/fileUpload'
        ,method: 'post'
        ,done: function(res){ //上传后的回调
            if(res.msg=='1'){
                layer.msg("上传成功");
                console.log(res.file_name)
                addUpoloadTr(res.file_name,res.file_url,2);
            }else{
                layer.msg("上传失败");
            }
        }
        ,accept: 'file' //允许上传的文件类型
    })
}

 

var uploadList = [];
function addUpoloadTr(file_name,file_url,type) {
    var uploadObject = new Object();
    uploadObject['parentId'] = parentId;
    uploadObject['annexName'] = file_name;
    uploadObject['fileUrl'] = file_url;
    //1是分红协议附件 2是分红票据附件
    uploadObject['type'] = type;
    if(type ==1 ){
        $("#fileDiv"+parentId).empty();
        var tablestr = "";
        tablestr += "<input type=\"text\" disabled value='"+file_name+"' class=\"form-control\">";
        $("#fileDiv"+parentId).append(tablestr);
    }
    if(type ==2 ){
        $("#fileDiv2"+parentId).empty();
        var tablestr = "";
        tablestr += "<input type=\"text\" disabled value='"+file_name+"' class=\"form-control\">";
        $("#fileDiv2"+parentId).append(tablestr);
    }
    uploadList.push(uploadObject);
}
var parentId ;
function fileupload(v){
    parentId = v
}
**接口地址**:`GET /residentOrg/page` **接口描述**:获取居民台账的分页列表 **请求参数**:CitySyncResidentOrgPageReqVo对象 | 参数名 | 类型 | 是否必选 | 描述 | | ------------------------ | ------- | -------- | ------------------------------------------------ | | page | Integer | 是 | 当前页码 | | limit | Integer | 是 | 每页记录数 | | areaCoding | String | 否 | 区编码 | | streetCoding | String | 否 | 街道编码 | | commCoding | String | 否 | 社区编码 | | name | String | 否 | 居住区名称 | | managementUnit | String | 否 | 管理单位 | | collectionEnterpriseName | String | 否 | 收集公司 | | orgType | Integer | 是 | 主体类型 0:城市居住区 1:农村居住区 2:平房居住区 | | orgTypeId | String | 否 | 主体uuid | **响应结果**:ResponseResult<PageUtils<CitySyncResidentOrgRespVo>> **响应参数说明**: | 参数名 | 类型 | 描述 | | ----------------------------------------- | ------- | ------------------------------------ | | code | Integer | 响应码,200表示成功 | | msg | String | 响应消息 | | data | Object | 分页数据 | | data.totalCount | Integer | 总记录数 | | data.pageSize | Integer | 每页记录数 | | data.totalPage | Integer | 总页数 | | data.currPage | Integer | 当前页数 | | data.list | Array | 居民台账列表数据 | | data.list[].id | Long | 自增主键 | | data.list[].orgId | String | 主体uuid | | data.list[].areaCoding | String | 区编码 | | data.list[].areaName | String | 区名称 | | data.list[].streetCoding | String | 街道编码 | | data.list[].streetName | String | 街道名称 | | data.list[].commCoding | String | 社区编码 | | data.list[].commName | String | 社区名称 | | data.list[].name | String | 居住区名称 | | data.list[].bulletinBoardImage | String | 公示牌照片 | | data.list[].detailedAddress | String | 详细地址 | | data.list[].isDeleted | Integer | 是否删除(0-否,1-) | | data.list[].orgTypeId | String | 主体类型uuid | | data.list[].orgTypeIdName | String | 主体类型名称 | | data.list[].orgSubTypeId | String | 主体类型子类uuid | | data.list[].orgSubTypeIdName | String | 主体类型子类名称 | | data.list[].householdNumber | String | 户数 | | data.list[].peopleNumber | String | 人数 | | data.list[].latitude | String | 主体地址-纬度 | | data.list[].longitude | String | 主体地址-经度 | | data.list[].createTime | Long | 创建时间戳 | | data.list[].updateTime | Long | 更新时间戳 | | data.list[].isHasWashingBucket | Integer | 是否具有洗桶设施(0-否,1-) | | data.list[].installGrinderHouseholdNumber | Integer | 安装厨余垃圾粉碎机的户数 | | data.list[].decrementDesc | String | 有减量设备的家庭地址,以;分隔 | | data.list[].isModel | Integer | 是否是示范小区/示范行政村(0-否,1-) | | data.list[].modelDate | Date | 取得示范小区的时间 | | data.list[].kitchenWasteCollectCar | String | 厨余垃圾直收直运收集单位名称 | | data.list[].kitchenWasteRubbish | String | 厨余垃圾垃圾楼名称 | | data.list[].kitchenWasteLocal | String | 厨余垃圾就地处理设施名称 | | data.list[].otherWasteCollectCar | String | 其他垃圾直收直运收集单位名称 | | data.list[].otherWasteRubbish | String | 其他垃圾垃圾楼名称 | | data.list[].recycleWasteCollectName | String | 可回收垃圾收集点名称 | | data.list[].recycleWasteCollectAddr | String | 可回收垃圾收集点地址 | | data.list[].recycleLatitude | String | 可回收垃圾收集位置-纬度 | | data.list[].recycleLongitude | String | 可回收垃圾收集位置-经度 | | data.list[].harmfulWasteCollectName | String | 有害垃圾收集点名称 | | data.list[].harmfulWasteCollectAddr | String | 有害垃圾收集点地址 | | data.list[].harmfulLatitude | String | 有害垃圾收集位置-纬度 | | data.list[].harmfulLongitude | String | 有害垃圾收集位置-经度 | | data.list[].bigRubbishCollectName | String | 大件垃圾收运公司名称 | | data.list[].decorationWasteCollectName | String | 装修垃圾收运公司名称 | | data.list[].fixedPointName | String | 定点投放-名称 | | data.list[].fixedPointAddr | String | 定点投放-地址 | | data.list[].fixedLatitude | String | 定点投放-位置-纬度 | | data.list[].fixedLongitude | String | 定点投放-位置-经度 | | data.list[].flowOther | String | 流动收集-直收直运其他垃圾公司名称 | | data.list[].flowKitchen | String | 流动收集-直收直运厨余垃圾公司名称 | | data.list[].propertyCompanies | String | 物业公司 | | data.list[].qllsj | Date | 在区平台的录入时间 | **示例请求**: ``` GET /residentOrg/page?page=1&limit=10&orgType=1 ``` **示例响应**: ```json { "code": 200, "msg": "success", "data": { "totalCount": 100, "pageSize": 10, "totalPage": 10, "currPage": 1, "list": [ { "id": 1, "orgId": "ORG001", "areaCoding": "110101", "areaName": "东城区", "streetCoding": "110101001", "streetName": "景山街道", "commCoding": "110101001001", "commName": "隆福寺社区", "name": "隆福寺小区", "bulletinBoardImage": "http://example.com/image.jpg", "detailedAddress": "东城区景山街道隆福寺街95号", "isDeleted": 0, "orgTypeId": "TYPE001", "orgTypeIdName": "居民小区", "orgSubTypeId": "SUBTYPE001", "orgSubTypeIdName": "普通小区", "householdNumber": "500", "peopleNumber": "1500" } ] } } ``` 上面是接口,下面是代码,js文件代码和后缀ftl文件代码 // import upload from '../../../view/infoSys/upload.vue' // window.customElements.define('upload', upload) // import myMixins from "../mixins.js"; // Vue.component(upload); var vues = new Vue({ el: '#app', // mixins: [myMixins], // components:{ // upload // }, data: { navList:[],//nav模块 paramList:{},//nav模块-url tableHead: [[ {type: 'numbers', width: "6%", title: '序号'}, { width: "20%", title: '街镇名称', templet: function (res) { return !res.name ? '-' : res.name; } }, { width: "10%", title: '负责人', templet: function (res) { return !res.personInCharge ? '-' : res.personInCharge; } }, { width: "10%", title: '联系方式', templet: function (res) { return !res.contact ? '-' : res.contact; } }, { width: "10%", title: '面积', templet: function (res) { return !res.area ? '-' : res.area; } }, { field: 'address', width: "30%", title: '详细地址', templet: function (res) { return !res.address ? '-' : res.address; } }, // {width: "110", title: '图片', templet: function (res){ // if(res.imageUrl){ // return '<div><img src="'+res.imageUrl+'" alt="" style="width:80px; height:80px;" onclick="vues.showBigImage(this)"></div>' // }else{ // return'-' // } // }}, // {width: "10%", title: '垃圾分类开始时间', templet: function (res){ // return !res.startTime ? '-': res.startTime; // }}, { fixed: 'right', title: '操作', width: "220", templet: function (res) { var btn = ""; // btn += '<a target="_blank" class="layui-btn layui-btn-xs" lay-event="look">查看</a>'; var btn = ""; var useBtn = ""; if (res.isEnable == 0) { useBtn = "停用"; } else if (res.isEnable == 1) { useBtn = "启用"; } else { useBtn = "启用"; } vues.menuBtn.forEach((e) => { if (e.buttonClass == 'look') { btn += '<a target="_blank" class="layui-btn layui-btn-xs" lay-event="look">查看</a>'; }else if (e.buttonClass == 'edit') { btn += '<a target="_blank" class="layui-btn layui-btn-xs layui-btn-normal" lay-event="edit">编辑</a>'; } else if (e.buttonClass == 'delete') { btn += '<a target="_blank" class="layui-btn layui-btn-xs layui-btn-normal" lay-event="delete">删除</a>'; } else if (e.buttonClass == 'status') { btn += '<a target="_blank" class="layui-btn layui-btn-xs" lay-event="status">' + useBtn + '</a>'; } }) // btn += '<a target="_blank" class="layui-btn layui-btn-xs" lay-event="look">查看</a>'; // btn += '<a target="_blank" class="layui-btn layui-btn-xs layui-btn-normal" lay-event="edit">编辑</a>'; // btn += '<a target="_blank" class="layui-btn layui-btn-xs layui-btn-normal" lay-event="delete">删除</a>'; // btn += '<a target="_blank" class="layui-btn layui-btn-xs" lay-event="status">' + useBtn + '</a>'; return btn; } } ]], streetList: [], communityList: [], menuBtn: [], btnJson: { add: false, moreUpload: false, download: false, export: false, print: false }, isHaveHandle: false, searchListFlag: false, searchLi: [], printQuery: '', cheakliat: "", name: '', imgShow: false, type: '', url: '', uploadFile: new FormData(), uploadsVar: '' }, mounted: function () { // this.getNav() this.menuListBtn() this.table(); // this.selcetInit(); }, methods: { menuListBtn() { this.$nextTick(() => { let arr = [] menusButtonList.forEach((e) => { if (e.menuId == menusIds) { this.menuBtn.push(e) if (e.attrType == 1) { arr.push(e) } } }) console.log(this.menuBtn) this.menuBtn.forEach((e) => { if (e.buttonClass == 'add') { vues.btnJson.add = true } else if (e.buttonClass == 'moreUpload') { vues.btnJson.moreUpload = true } else if (e.buttonClass == 'download') { vues.btnJson.download = true } else if (e.buttonClass == 'export') { vues.btnJson.export = true } else if (e.buttonClass == 'print') { vues.btnJson.print = true } }) if (arr.length == 0) { this.isHaveHandle = true; this.tableHead[0].pop(); } }) }, //显示大图片 showBigImage(e) { layer.open({ type: 1, title: false, closeBtn: 0, shadeClose: true, //点击阴影关闭 area: [$(e).width + 'px', $(e).height + 'px'], //宽高 content: "<img src=" + $(e).attr('src') + " />" }); }, //打印 prints() { var v = document.createElement("div"); let self = this; $.ajax({ url: ctx + '/service/base/street/list', data: {limit: 999999, page: 1, name: self.name}, success: function (res) { if (res.code == 0) { if (res.data.length) { // <head><link rel="stylesheet" href="'+ctx+'/plugins/layui/css/layui.css"></head> let str = '<html><body><head><style>tr,td{padding:3px}.layui-table {width: 100%;background-color: #fff;color: #666;margin: 10px 0;}.layui-table-cell {height: 28px;line-height: 28px;padding: 0 15px;position: relative;box-sizing: border-box}.layui-table-cell{top: -1px;padding: 0}.layui-table-cell .layui-table-link {color: #01AAED}</style></head><table border style="width: 100%;border-collapse: collapse;border-spacing: 0;" class="layui-table">'; str += '<thead style="background-color: #f2f2f2;width: 100%">'; str += '<tr class=" layui-table-col-special layui-table-cell laytable-cell-1-0-5" style="background-color: #f2f2f2;font-weight: 700">'; str += '<td style="background: #f2f2f2;width: 4%">序号</td>'; str += '<td style="background: #f2f2f2;width: 10%">街镇名称</td>'; str += '<td style="background: #f2f2f2;width: 10%">负责人</td>'; str += '<td style="background: #f2f2f2;width: 10%">联系方式</td>'; str += '<td style="background: #f2f2f2;width: 10%">面积</td>'; str += '<td style="background: #f2f2f2;width: 10%">详细地址</td>'; // str+='<td style="background: #f2f2f2;">经纬度</td>'; str += '<td style="background: #f2f2f2;width: 10%">图片</td>'; str += '<td style="background: #f2f2f2;width: 10%">创建人</td>'; str += '<td style="background: #f2f2f2;width: 10%">垃圾分类开始时间</td>'; str += '</tr>'; str += '</thead>'; str += '<tbody style="width: 100%">'; for (var i = 0; i < res.data.length; i++) { str += '<tr class="layui-table" >'; str += '<td style="width: 4%">' + (i + 1) + '</td>'; str += '<td style="width: 10%">' + res.data[i].name || '-' + '</td>'; str += '<td style="width: 10%">' + (res.data[i].personInCharge || '-') + '</td>'; str += '<td style="width: 10%">' + (res.data[i].contact ? res.data[i].contact : '-') + '</td>'; str += '<td style="width: 10%">' + (res.data[i].area ? res.data[i].area : '-') + '</td>'; str += '<td style="width: 10%">' + (res.data[i].address || '-') + '</td>'; str += '<td style="width: 10%">' + (res.data[i].image ? res.data[i].image : '-') + '</td>'; str += '<td style="width: 10%">' + (res.data[i].creatorName ? res.data[i].creatorName : '-') + '</td>'; str += '<td style="width: 10%">' + (res.data[i].startTime ? res.data[i].startTime : '-') + '</td>'; str += '</tr>'; } str += '</tbody>'; str += '</table></body></html>'; var h = window.open("打印窗口", "_blank"); h.document.write(str + $(v).prop("outerHTML")); h.document.close(); console.log(h) h.print(); h.close(); } else { layerObj.failMsg("该条件下暂无数据,无法打印!"); } } ; } }); }, //list table: function () { var self = this; //默认list var dataUrl = ctx + 'residentOrg/page`'; layerObj.tableList(self.tableHead, 'allTable', dataUrl, 'tool(allTable)', function (res, curr, count) { }, function (e) { let id = e.data.id; //查看 if (e.event === "look") { self.alertFun(id, 'look') } //编辑 if (e.event === "edit") { self.alertFun(id, 'edit') } if (e.event == 'status') { //启用禁用 let id = e.data.id; let tip = e.data.isEnable == 0 ? '停用' : '启用' layer.confirm('确定' + tip + '吗?', { btn: ['确定', '取消'] //可以无限个按钮 }, function (index, layero) { $.ajax({ url: ctx + '/service/base/street/editEnable?id=' + id + '&isEnable=' + (e.data.isEnable == 0 ? 1 : 0), type: "get", success: function (res) { if (res.code == 0) { layerObj.successMsg("修改成功!"); self.table(); } else { layerObj.failMsg(res.msg ? res.msg : "修改失败!"); } } }); layer.close(index); }, function (index) { layer.close(index); }); } // 删除 if (e.event === 'delete') { layer.confirm('是否删除所属街镇及其关联的数据(收运单位,物业,合同)?', { btn: ['确定', '取消'] //可以无限个按钮 }, function (index, layero) { layerObj.ajaxSend( 'get', ctx + '/service/base/street/delete?id=' + id, 'json', {}, function (data) { if (data.code === 1) { layer.alert(data.msg); } else { self.table(); } } ); layer.close(index); }, function (index) { layer.close(index); }); } }, "allTable"); //搜索 layui.use(['form', 'table', 'upload'], function () { var form = layui.form; var table = layui.table; var upload = layui.upload; form.on("submit(formSearch)", function (data) { table.reload("allTable", { headers: self.tableHead, url: dataUrl, page: {curr: 1}, where: data.field, done: function () { } }, 'data'); }); // 重置 form.on("submit(formReset)", function (data) { self.condition = null table.reload("allTable", { headers: self.tableHead, url: dataUrl, page: {curr: 1}, where: self.condition, done: function () { } }, 'data'); }); //导出 form.on("submit(export)", function (data) { var name = $('input[name="name"]').val(); var cs = ctx + "/service/base/street/export?name=" + name; window.open(cs); }); // // 监听导入按钮 // upload.render({ // elem: '#moreUpload' // , url: ctx + '/service/base/street/import' // , multiple: false // , accept: "file" // , acceptMime: "file/xls,file/xlsx" // , exts: "xls|xlsx" // , drag: true // , before: function (obj) { // layer.load(1); // }, done: function (res) { // layer.closeAll("loading"); // if (res.code == 0) {//上传成功 // layer.msg('导入成功'); // } else { // layer.msg(res.msg ? res.msg : '导入失败'); // } // }, error: function (res) { // layer.closeAll("loading"); // layer.msg(res.msg ? res.msg : '导入失败'); // } // }); //上传附件 var uploadInst = upload.render({ elem: '#uploadBtn' , url: ctx + '/service/upload/minio/uploadAttach' , accept: 'file' //普通文件 , choose: function (obj) { obj.preview(function (index, file, result) { self.fileName = file.name; $('#attachUrl').html(file.name); }) } , done: function (res) { if (res.code > 0) { self.filePath = res.data.filePath self.imgShow = true $('#attachUrl').on('click', function () { window.location.href = ctx + '/service/upload/minio/downloadReplaceFileName?filename=' + $('#attachUrl').text() + '&fileUrlName=' + res.data.fileName }) layer.msg('上传成功'); }else { layer.msg(res.msg); } } }); }); }, //添加和编辑弹窗 alertFun(myid, type) { var self = this; self.type = type document.getElementById("information").reset(); self.imgShow = false $('#image').val(""); $("#roleIds,#roleNames").val(""); var titleName; var postUrl = ''; if (type == 'edit') { titleName = "编辑"; postUrl = ctx + "/service/base/street/editItem" } else if (type == 'add'){ titleName = "新建"; postUrl = ctx + "/service/base/street/addItem" } $('#imageWrapper').html('<input type="hidden" name="image" id="image" />') layui.use(['form', 'layer', 'upload', 'laydate'], function () { let form = layui.form; let layer = layui.layer; let upload = layui.upload; let laydate = layui.laydate; var myLayer = layer.open({ title: titleName + "菜单", type: 1, area: ["900px", "700px"], content: $("#information"), success: function () { if (myid) { //回显 $.ajax({ url: ctx + "/service/base/street/detail?id=" + myid, success: function (res) { form.val("information", { name: res.data.name ? res.data.name : '', personInCharge: res.data.personInCharge ? res.data.personInCharge : '', contact: res.data.contact ? res.data.contact : '', residentNum: res.data.residentNum ? res.data.residentNum : '', area: res.data.area ? res.data.area : '', longitude: res.data.longitude, latitude: res.data.latitude, longitudeLatitude: res.data.longitude ? res.data.longitude + "," + res.data.latitude : "", address: res.data.address ? res.data.address : '', }); //地图标注 if (res.data.latitude && res.data.longitude) { addPointFun(res.data.longitude, res.data.latitude, true); } //文件 var image = res.data.image; self.filePath = image if (image && image != "") { self.imgShow = image ? true : false; $('#attachUrl').html(image.split('_')[image.split('_').length - 1]); $('#attachUrl').on('click', function () { window.location.href = ctx + '/service/upload/minio/downloadReplaceFileName?filename=' + $('#attachUrl').text() + '&fileUrlName=' + image }) } self.$nextTick(() => { form.render() }) } }); } else { form.val("information", {}); $('#attachUrl').html(''); self.imgShow = false; self.$nextTick(() => { form.render() }) } form.on('submit(up)', function (data) { let paramObj = data.field; paramObj.pid = self.pid; paramObj.imageUrl = self.filePath; if (myid) { paramObj.id = myid; } layerObj.commonAjax('POST', postUrl, "json", paramObj, function (data) { if (data.code == 0) { layer.closeAll(); layerObj.successMsg("保存成功!"); self.table(); } else { layerObj.failMsg(data.msg); } }); }); // 校验 form.verify({ population: function (value) { //户口 return reregister(value, '请输入正确的人口数量'); }, area: function (value) { //面积 return floating(value, '请输入正确的面积'); }, // 联系方式 informationl: function (value) { return information(value, '请输入正确的联系方式'); }, }) } }); }); }, // //三级联动 // selcetInit:function(){ // var self = this; // layui.use(['form'], function () { // var form = layui.form; // $.ajax({ // url: ctx + "/service/dictionary/getDicByCode?code=district", // success: function (res) { // if( res.code==1 ){ // self.streetList = res.data.children[0].children; // setTimeout(function(){ // form.render("select"); // },150); // }; // } // }); // // form.on('select(street)', function(data){ // self.communityList = []; // $("#community").val(""); // if (data.value != "") { // var index = $(data.elem).find("option:selected").index()-1; // self.communityList = self.streetList[index].children; // setTimeout(function(){ // form.render("select"); // },150); // }; // }); // }); // }, //点击搜索列表 queryBtn: function () { var self = this; self.searchListFlag = true; $.ajax({ url: ctx + '/service/baiduMap/get/suggestion', type: 'post', data: { "keyword": self.printQuery, "region": "北京市", "pageSize": 20, "pageNum": 1 }, success: function (res) { if (res.data.results) { self.searchLi = res.data.results; } } }); }, //确认选择li chooseLi: function (item) { var self = this; self.searchListFlag = false; var lng = item.location.longitude, lat = item.location.latitude; addPointFun(lng, lat); $(".longitudeLatitude").val(lng + "," + lat); $(".longitude").val(lng); $(".latitude").val(lat); self.printQuery = item.address; $(".detailAddress").val(item.address); bm.centerAndZoom(new BMap.Point(lng, lat), 14); }, // 页面初始化 pageInit() { var self = this; layui.use(['form', 'upload', 'layer'], function () { var upload = layui.upload; self.uploadsVar = upload.render({ elem: '#choice', accept: 'file', acceptMime: 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', exts: 'xlsx|xls', //只允许上传excel文件, auto: false, bindAction: '#checkFile' }); }) }, // 上传弹框 uploads() { $('#choiceWrapper').html('<button type="button" class="layui-btn layui-btn-normal" id="choice">选择文件</button>'); this.uploadsVar = ''; $('.layui-upload-choose').html(''); $('#checkFileWrapper').html('<span id="checkFileWrapper"><button type="button" class="layui-btn" id="checkFile">校验</button></span>'); this.pageInit() this.$nextTick(() => { $('#startUpload').css('display', 'none') }) let self = this layui.use(['form', 'upload', 'layer'], function () { let form = layui.form; let layer = layui.layer; var upload = layui.upload; var checkurl = '' var myLayer = layer.open({ title: '上传文件', type: 1, area: ["680px", "250px"], content: $("#UploadFile"), success: function (res) { // 校验接口 checkurl = ctx + '/service/base/street/checkExcelUpload' self.uploadsVar.reload({ elem: '#choice', accept: 'file', acceptMime: 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', exts: 'xlsx|xls', //只允许上传excel文件, url: checkurl, auto: false, bindAction: '#checkFile', choose: (obj) => { $('#startUpload').css('display', 'none') self.uploadFile = new FormData(); var files = obj.pushFile(); var firstProp; var count = 0; // 获取第一个属性 for (var key in files) { if (files.hasOwnProperty(key)) { firstProp = key; break; } } // 统计文件数 for (var k in files) { count++; } if (count > 1) { delete files[firstProp]; } //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9) obj.preview(function (index, file, result) { self.uploadFile.append('file', file); }); }, done: function (res, index) { if (res.code == 0) { layer.msg(res.msg); $('#startUpload').css('display', 'inline-block') } else { layer.alert(res.msg); $('#startUpload').css('display', 'none') } } }); } , end: () => { $('#startUpload').css('display', 'none') } }) }) }, // 上传 fnUploadFile() { var self = this layui.use(['layer'], function () { var layer = layui.layer; // 上传接口 var url = '' url = ctx + '/service/base/street/import' let key = self.uploadFile.getAll('file')[0]; $.ajax({ url: url, method: 'post', data: self.uploadFile, contentType: false, processData: false, dataType: "json", async: false, success: (res) => { if (res.code == 0) { layer.msg(res.msg); setTimeout(() => { layer.closeAll(); self.table(); }, 2500); } else { layer.alert(res.msg); } }, fail: (res) => { layer.alert(res.msg); } }) }) }, //nav-获取列表 getNav(){ let self = this let url = document.location.toString() let urlObj = url.split('?') let paramObj let paramList = {}//url参数集合 if(urlObj.length >0){ paramObj = urlObj[1].split('&') paramObj.forEach((val,index)=>{ let arrList = val.split('=') Object.defineProperty(paramList,arrList[0],{value:arrList[1]}) // paramList.arrList[0] = arrList[1] }) } self.paramList = paramList // console.log('paramList',urlObj,paramList) //获取菜单列表并渲染 $.ajax({ url:ctx + "/service/authorityMenu/listByMenuId?menuId="+paramList.pid, type:"get", success:function (res) { console.log('菜单请求返回值',res) if(res.code == 0){ //修改数据内容 渲染nav选中项 res.data.forEach((val,index)=>{ if(val.childMenus.length>0){ val.childMenus.forEach((value)=>{ value.select = false; if(value.id == self.paramList.cid||value.id == self.paramList.cPid){ value.select = true; } value.childMenus }) } }) self.navList = res.data // console.log('self.navList',self.navList) // self.changeNavState() } } }) }, //nav-页面跳转 toUrl(items){ console.log(items) if(items.url.indexOf('?') != -1){ window.location.href = ctx + items.url+'&pid='+this.paramList.pid+'&cid='+items.id+'&cPid='+items.pid }else{ window.location.href = ctx + items.url+'?pid='+this.paramList.pid+'&cid='+items.id+'&cPid='+items.pid } }, //nav-渲染nav选中项 changeNavState(items){ items.select = !items.select }, }, }) //时间戳转日期函数 function DateFormat(sjc) { var date = new Date(sjc); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? '0' + m : m; var d = date.getDate(); d = d < 10 ? ("0" + d) : d; var h = date.getHours(); h = h < 10 ? ("0" + h) : h; var min = date.getMinutes(); min = min < 10 ? ("0" + min) : min; var s = date.getSeconds(); s = s < 10 ? ("0" + s) : s; var str = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s; return str; }; 这个是js代码 下面是ftl代码 <!DOCTYPE html> <html lang="en"> <#include "/common/taglibs.ftl"> <head> <meta charset="UTF-8"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <title>街镇管理</title> <link rel="stylesheet" href="${ctx}/plugins/layui/css/layui.css"> <link rel="stylesheet" href="${ctx}/infoSys/css/style.css"> <script src="${ctx}/plugins/jquery-3.3.1.min.js"></script> <script src="${ctx}/plugins/vue/vue.js"></script> <script src="${ctx}/plugins/layui/layui.js"></script> <script src="${ctx}/plugins/common/custom_layui.js"></script> <script src="${ctx}/plugins/nightMap/api.js"></script> <script src="${ctx}/plugins/nightMap/heatmap_min.js"></script> <script src="${ctx}/plugins/nightMap/mapv.js"></script> <script src="${ctx}/plugins/nightMap/haidian.js"></script> <script src="${ctx}/aiplatform/js/verifyList.js"></script> <style> .left-nav-ul .streetManage { border-left: 2px #2080E7 solid; } .left-nav-ul .streetManage a { color: #2080E7; background-image: url(${ctx}/othersSys/images/icon-lajilou2.svg); } .layui-table-box th, .layui-table-box td { text-align: center; } .layui-table-cell { height: auto; line-height: auto; } #addMap { width: 100%; } </style> </head> <body class="body"> <div class="padding-body" id="app" v-cloak> <iframe src="${ctx}/service/allNav" style="position: fixed;left: 0;top: 0;width: 18rem;height: 100%;" allowfullscreen allow="autoplay; fullscreen"></iframe> <!-- left --> <#-- <#include "/infoSys/nav2.ftl">--> <!-- header --> <#include "/infoSys/header.ftl"> <!-- main --> <section class="main"> <div class="header-title white-bg clearfix"> <h1>街镇管理</h1> </div> <div class="main-content white-bg"> <form class="layui-form search-form" onkeypress="return event.keyCode != 13;"> <div class="layui-inline"> <label class="layui-form-label first-label">街镇名称:</label> <div class="layui-input-inline"> <input type="text" id="voicetValue" name="name" v-model="name" placeholder="请输入街镇名称" autocomplete="off" class="layui-input"/> </div> </div> <#--阻止回车触发提交--> <div class="layui-input-inline" style="width: 200px;display: none;"> <select lay-verify="" type="hidden"> </select> </div> <div class="layui-inline margin-left15" style="float: right;margin-right: 20px;"> <#-- <button type="button" class="layui-btn layui-btn-normal" id="taste_button" lay-submit="record"--> <#-- lay-filter="record">语音--> <#-- </button>--> <#-- <button type="button" class="layui-btn layui-btn-normal" id="start_button" class="start-button"--> <#-- style="display: none">停止--> <#-- </button>--> <button type="button" class="layui-btn layui-btn-normal" lay-submit="" lay-filter="formSearch">查询 </button> <button type="reset" lay-submit lay-filter="formReset" class="layui-btn layui-btn-primary">重置</button> </div> </form> <div> <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.add" @click="alertFun('','add')">新建</a> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.moreUpload" id="moreUpload"--> <#-- class="moreUpload">导入</a>--> <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.moreUpload" id="moreUpload" class="moreUpload" @click="uploads">导入</a> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.download"--> <#-- href="../../../excel/model_street_export.xlsx" download="街镇模板">模板下载</a>--> <a class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" v-if="btnJson.export" lay-filter="export">导出</a> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.print" @click="prints()">打印</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm">新建</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" id="moreUpload" class="moreUpload">导入</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" href="../../../excel/model_street_export.xlsx" download="街镇模板">模板下载</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="export">导出</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" @click="prints()">打印</a>--> </div> <div style="clear:both;"></div> <table id="allTable" lay-filter="allTable" lay-skin="line"></table> </div> </section> <!-- 添加和编辑查看弹窗 --> <form class="layui-form" lay-filter="information" id="information" style="display:none;padding:35px 30px"> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label"><span class="red">*</span> 街镇名称</label> <div class="layui-input-inline"> <input type="text" name="name" autocomplete="off" lay-verify="required" class="layui-input"/> </div> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">街镇负责人</label> <div class="layui-input-inline"> <input type="text" name="personInCharge" autocomplete="off" class="layui-input"/> </div> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">联系方式</label> <div class="layui-input-inline"> <input type="text" name="contact" autocomplete="off" lay-verify="informationl" class="layui-input"/> </div> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">人口数量</label> <div class="layui-input-inline"> <input type="text" name="residentNum" lay-verify="population" autocomplete="off" class="layui-input"/> </div> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">面积</label> <div class="layui-input-inline"> <input type="text" name="area" autocomplete="off" lay-verify="area" class="layui-input"/> </div> </div> </div> <div class="layui-form-item"> <#-- <div class="layui-form-item">--> <#-- <div class="layui-inline">--> <#-- <label class="layui-form-label">上传</label>--> <#-- <div class="layui-input-inline">--> <#-- <button type="button" class="layui-btn layui-btn-primary" id="uploadBtn">附件上传</button>--> <#-- <div class="layui-upload-list">--> <#-- <div id="imageWrapper"><input type="hidden" name="image" id="image"/></div>--> <#-- <a id="attachUrl" v-show="imgShow"></a>--> <#-- </div>--> <#-- </div>--> <#-- </div>--> <#-- </div>--> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label"><span class="red">*</span> 经纬度</label> <div class="layui-input-inline"> <input type="text" name="longitudeLatitude" lay-verify="required" placeholder="请点击地图标注" maxlength="45" readonly class="layui-input longitudeLatitude"/> <input type="hidden" name="longitude" class="longitude"/> <input type="hidden" name="latitude" class="latitude"/> </div> </div> </div> <div class="layui-form-item "> <div class="layui-input-block search-wrapper"> <div class="add-map-div" id="addMap"></div> <div class="search-block"> <div class="layui-input-inline" style="margin-right: 2px"> <input type="text" name="searchAddress" id="searchAddress" v-model="printQuery" autocomplete="off" placeholder="请输入搜索地址" class="layui-input" @keyup.enter="queryBtn()"/> <div class="command-search-list" v-if="searchListFlag"> <ul class="searchList"> <li v-for="item in searchLi" @click="chooseLi(item)">{{item.name}}</li> </ul> </div> </div> <button type="button" class="layui-btn layui-btn-sm search-btn" @click="queryBtn()"><i class="layui-icon layui-icon-search" style="font-size: 50px; color: #fff;"></i> </button> </div> </div> </div> <div class="layui-form-item"> <div class="layui-block"> <label class="layui-form-label">详细地址</label> <div class="layui-input-block"> <input type="text" name="address" maxlength="150" autocomplete="off" class="layui-input detailAddress"/> </div> </div> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button type="button" v-show="type!=='look'" class="layui-btn layui-btn-lg layui-btn-normal" lay-submit="" lay-filter="up">提交 </button> <button type="button" class="layui-btn layui-btn-lg layui-btn-normal" onclick="layer.closeAll()">取消 </button> </div> </div> </form> <div id="UploadFile" class="UploadFileWrapper" style="width: 100%;height: 100%;padding: 1rem;box-sizing: border-box;display: none"> <div class="layui-btn-container" id="upload-btn-warp"> <span id="choiceWrapper"><button type="button" class="layui-btn layui-btn-normal" id="choice">选择文件</button></span> <span id="checkFileWrapper"><button type="button" class="layui-btn" id="checkFile">校验</button></span> <button type="button" class="layui-btn" id="startUpload" @click="fnUploadFile">开始上传</button> </div> <div style="margin: 1rem 0"> <div>操作步骤:</div> <div>1.选择需要上传文件</div> <div>2.选择完成后点击“校验”按钮</div> <div>3.校验通过后点击“确认上传”</div> </div> </div> </div> <script> var menusButtonList = '${Session.buttonList?default("")}'; menusButtonList = menusButtonList ? JSON.parse(menusButtonList) : [] $(document).on("keypress", "form", function (event) { return event.keyCode != 13; }) </script> <script src="${ctx}/infoSys/js/public.js"></script> <#--<script src="${ctx}/infoSys/js/street/list.js"></script>--> <script src="${ctx}/infoSys/js/city/list.js"></script> <script src="${ctx}/infoSys/js/add-map.js"></script> <script src="${ctx}/plugins/rtasr/hmac-sha256.js"></script> <script src="${ctx}/plugins/rtasr/HmacSHA1.js"></script> <script src="${ctx}/plugins/rtasr/md5.js"></script> <script src="${ctx}/plugins/rtasr/enc-base64-min.js"></script> <script src="${ctx}/plugins/rtasr/index.js"></script> <script src="${ctx}/infoSys/js/navPublic.js"></script> </body> </html> 数据接口请求异常:error 这个项目是前后端不分离的项目, 给你的这两个文件是ftl文件和js文件
08-28
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <title></title> <header th:replace="header::html"></header> </head> <body class="pear-container"> <div class="layui-card"> <div class="layui-card-body"> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">模具型号</label> <div class="layui-input-inline"> <input type="text" name="modelMold" placeholder="" class="layui-input"> </div> <label class="layui-form-label">模具类型</label> <div class="layui-input-inline"> <!-- <select name="dp" id="dp" lay-verify="required"//这个参数为要求必填 lay-filter="xmFilter">--> <select name="modelType" id="modelType" > <option value=""></option> </select> </div> <label class="layui-form-label">在库状态</label> <div class="layui-input-inline"> <select name="instockStatus"> <option value=""></option> <option value="0">在库</option> <option value="1">不在库</option> </select> </div> <!--<label class="layui-form-label">报废状态</label> <div class="layui-input-inline"> <select name="scrapStatus"> <option value=""></option> <option value="0">未报废</option> <option value="1">已报废</option> </select> </div>--> <button id="model-query" class="pear-btn pear-btn-md pear-btn-primary" lay-submit="" lay-filter="model-query"> <i class="layui-icon layui-icon-search"></i> 查询 </button> <button type="reset" class="pear-btn pear-btn-md"> <i class="layui-icon layui-icon-refresh"></i> 重置 </button> </div> </form> </div> </div> <div class="layui-row layui-col-space15"> <!-- <div class="layui-col-md9">--> <div class="layui-card"> <div class="layui-card-body"> <table id="model-table" lay-filter="model-table"></table> </div> </div> <!-- </div>--> </div> <script type="text/html" id="model-toolbar"> <button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add"> <i class="layui-icon layui-icon-add-1"></i> 新增 </button> <button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove"> <i class="layui-icon layui-icon-delete"></i> 删除 </button> <button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchQR"> <i class="layui-icon layui-icon-add"></i> 打印 </button> <button class="pear-btn pear-btn-danger pear-btn-md" lay-event="exportTitle"> <i class="layui-icon layui-icon-add"></i> 导出标签 </button> </script> <script type="text/html" id="instock-status"> <input type="checkbox" name="instockStatus" value="{{d.modelUuid}}" lay-skin="switch" lay-text="在库|不在库" mid="{{d.modelUuid}}" lay-filter="instock-status" {{ d.instockStatus == '0' ? 'checked' : '' }}> </script> <script type="text/html" id="scrap-status"> <input type="checkbox" name="scrapStatus" value="{{d.modelUuid}}" lay-skin="switch" lay-text="未报废|已报废" mid="{{d.modelUuid}}" lay-filter="scrap-status" {{ d.scrapStatus == '0' ? 'checked' : '' }}> </script> <script type="text/html" id="model-bar"> <button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button> <button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button> </script> <script> layui.use(['upload', 'element', 'layer'], function(){ var $ = layui.jquery ,upload = layui.upload ,element = layui.element ,layer = layui.layer; upload.render({ elem: '#test3' ,url: '' //此处配置你自己的上传接口即可 ,accept: 'file' //普通文件 ,done: function(res){ layer.msg('上传成功'); console.log(res); } });}) </script> <script> //下拉框可能会用到 New option //这个里面的参数说明 第一个是显示的文本,第二个是value值 //例如:new Option(item.xm, item.id)第一个参数是下拉列表中显示的值 第二个参数是选中传递给后台的值 layui.use(['form', 'upload','jquery'],function(){ var form = layui.form; let $ = layui.jquery; $.ajax({ url: '/api/model/modelType', dataType: 'json', type: 'get', success: function (data) { console.log(data);//下面会提到这个data是什么值 //使用循环遍历,给下拉列表赋值 $.each(data.data, function (index, value) { $('#modelType').append(new Option(value.value,value.key));// 下拉菜单里添加元素 }); layui.form.render("select");//重新渲染 固定写法 } }) }); </script> <script> layui.use(['table', 'form', 'jquery'], function () { let table = layui.table; let form = layui.form; let $ = layui.jquery; let cols = [ [ {type:'checkbox'}, {title: 'modelUuid', field: 'modelUuid', align:'center', width:150}, {title: '模具型号', field: 'modelMold', align:'center'}, {title: '模具类型', field: 'modelType', align:'center'}, {title: '模具id', field: 'modelId', align:'center'}, {title: '在库状态', field: 'instockStatus', align:'center',templet:'#instock-status'}, // {title: '报废状态', field: 'scrapStatus', align:'center',templet:'#scrap-status'}, // {title: '报废时间', field: 'scrapTime', align:'center'}, // {title: '报废原因', field: 'scrapReason', align:'center'}, {title: '操作', toolbar: '#model-bar', align:'center', width:130} ] ] var tableIns =table.render({ elem: '#model-table', url: '/api/model', page: true , cols: cols , skin: 'line', toolbar: '#model-toolbar', defaultToolbar: [{ layEvent: 'refresh', icon: 'layui-icon-refresh', }, 'filter', 'print', 'exports'] }); // console.log(tableIns); table.on('tool(model-table)', function(obj) { if (obj.event === 'remove') { window.remove(obj); } else if (obj.event === 'edit') { window.edit(obj); } }); table.on('toolbar(model-table)', function (obj) { if (obj.event === 'add') { window.add(); } else if (obj.event === 'refresh') { window.refresh(); } else if (obj.event === 'batchRemove') { window.batchRemove(obj); }else if (obj.event === 'batchQR') { window.batchQR(obj); }else if (obj.event === 'exportTitle') { window.exportTitle(obj); } }); form.on('submit(model-query)', function(data){ var formData = data.field; var modelUuid = formData.modelUuid; var modelId = formData.modelId; var modelMold=formData.modelMold; var modelType=formData.modelType; var instockStatus=formData.instockStatus; var scrapStatus=formData.scrapStatus; var scrapTime=formData.scrapTime; var scrapReason=formData.scrapReason; tableIns.reload({ page: { curr: 1 //重新从第 1 页开始 } , where: {//这里传参 向后台 modelUuid: modelUuid, modelId: modelId, modelMold: modelMold, modelType:modelType, instockStatus:instockStatus, scrapStatus:scrapStatus //可传多个参数到后台... ,分隔 } , url: '/api/model'//后台做模糊搜索接口路径 , method: 'get' }); return false; }); window.add = function () { layer.open({ type: 2, title: '新增', shade: 0.1, area: ['500px', '500px'], content: '/api/model/modelAdd' }); } window.edit = function(obj){ console.log(obj) layer.open({ type: 2, title: '修改', shade: 0.1, area: ['500px', '500px'], content: '/api/model/modelEdit/?modelUuid='+ obj.data['modelUuid'] }); } window.remove = function(obj){ layer.confirm('确定要删除该用户', {icon: 3, title:'提示'}, function(index){ layer.close(index); let loading = layer.load(); $.ajax({ url: "/api/model?modelUuid="+obj.data['modelUuid'], dataType:'json', type:'delete', success:function(result){ layer.close(loading); if(result.success){ layer.msg(result.msg,{icon:1,time:1000},function(){ obj.del(); }); }else{ layer.msg(result.msg,{icon:2,time:1000}); } } }) }); } window.batchQR = function (obj) { let data = table.checkStatus(obj.config.id).data; if (data.length === 0) { layer.msg("未选中数据", { icon: 3, time: 1000 }); return false; } let ids = ""; for (let i = 0; i < data.length; i++) { ids += data[i].modelUuid + ","; } ids = ids.substr(0, ids.length - 1); layer.confirm('确定要打印这些型号的二维码', { icon: 3, title: '提示' }, function (index) { layer.close(index); let loading = layer.load(); $.ajax({ url: "batchQR/?ids=" + ids, dataType: 'json', type: 'get', success: function (result) { layer.close(loading); if (result.success) { layer.msg(result.msg, { icon: 1, time: 1000 }, function () { table.reload('model-table'); }); } else { layer.msg(result.msg, { icon: 2, time: 1000 }); } } }) }); } // 打印标签 window.exportTitle = function (obj) { let data = table.checkStatus(obj.config.id).data; if (data.length === 0) { layer.msg("未选中数据", { icon: 3, time: 1000 }); return false; } var list = []; for (let i = 0; i < data.length; i++) { var map={}; map["modelUuid"]=data[i].modelUuid; map["modelId"]=data[i].modelId; map["modelMold"]=data[i].modelMold; map["modelType"]=data[i].modelType; list.push(map); } var dataJson=JSON.stringify(list); layer.confirm('确定要导出这些型号的标签', { icon: 3, title: '提示' }, function (index) { layer.close(index); let loading = layer.load(); $.ajax({ url: "/api/model/exportTitle", data:dataJson, dataType: 'json', contentType:'application/json', type: 'post', success: function (result) { layer.close(loading); if (result.success) { layer.msg(result.msg, { icon: 1, time: 1000 }, function () { table.reload('model-table'); }); } else { layer.msg(result.msg, { icon: 2, time: 1000 }); } } }) }); } window.batchRemove = function (obj) { let data = table.checkStatus(obj.config.id).data; if (data.length === 0) { layer.msg("未选中数据", { icon: 3, time: 1000 }); return false; } let ids = ""; for (let i = 0; i < data.length; i++) { ids += data[i].organizationId + ","; } ids = ids.substr(0, ids.length - 1); layer.confirm('确定要删除这些用户', { icon: 3, title: '提示' }, function (index) { layer.close(index); let loading = layer.load(); $.ajax({ url: "batchRemove/" + ids, dataType: 'json', type: 'delete', success: function (result) { layer.close(loading); if (result.success) { layer.msg(result.msg, { icon: 1, time: 1000 }, function () { table.reload('model-table'); }); } else { layer.msg(result.msg, { icon: 2, time: 1000 }); } } }) }); } window.refresh = function (param) { table.reload('model-table'); } }) </script> </body> </html>我要新增一个上传文件的按钮和方法,请根据我的代码生成
最新发布
11-08
<!DOCTYPE html> <html lang="en"> <#include "/common/taglibs.ftl"> <head> <meta charset="UTF-8"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <title>农村居住区</title> <link rel="stylesheet" href="${ctx}/plugins/layui/css/layui.css"> <link rel="stylesheet" href="${ctx}/infoSys/css/style.css"> <script src="${ctx}/plugins/jquery-3.3.1.min.js"></script> <script src="${ctx}/plugins/vue/vue.js"></script> <script src="${ctx}/plugins/layui/layui.js"></script> <script src="${ctx}/plugins/common/custom_layui.js"></script> <script src="${ctx}/plugins/nightMap/api.js"></script> <script src="${ctx}/plugins/nightMap/heatmap_min.js"></script> <script src="${ctx}/plugins/nightMap/mapv.js"></script> <script src="${ctx}/plugins/nightMap/haidian.js"></script> <script src="${ctx}/aiplatform/js/verifyList.js"></script> <style> .left-nav-ul .streetManage { border-left: 2px #2080E7 solid; } .left-nav-ul .streetManage a { color: #2080E7; background-image: url(${ctx}/othersSys/images/icon-lajilou2.svg); } .layui-table-box th, .layui-table-box td { text-align: center; } .layui-table-cell { height: auto; line-height: auto; } #addMap { width: 100%; } .administrativeNumber{ width: 100%; height: 50px; line-height: 50px; background-color: #e6f7ff; border: 1px solid #c3e0eb; padding-left: 10px; } </style> </head> <body class="body"> <div class="padding-body" id="app" v-cloak> <iframe src="${ctx}/service/allNav" style="position: fixed;left: 0;top: 0;width: 18rem;height: 100%;" allowfullscreen allow="autoplay; fullscreen"></iframe> <!-- left --> <#-- <#include "/infoSys/nav2.ftl">--> <!-- header --> <#include "/infoSys/header.ftl"> <!-- main --> <section class="main"> <div class="header-title white-bg clearfix"> <h1>{{config.title}}</h1> </div> <div class="main-content white-bg"> <form class="layui-form search-form" onkeypress="return event.keyCode != 13;"> <div class="layui-inline" v-for="(item,index) in config.searchForm"> <label class="layui-form-label first-label">{{item.title}}:</label> <div class="layui-input-inline" v-if="item.type == 'select'"> <select :name="item.prop" :id="item.prop" v-model="searchData[item.prop]" style="width:150px;height:30px" :lay-filter="'form_'+item.prop"> <option v-for="sItem in item.option" :value="sItem.value" >{{sItem.label}}</option> </select> </div> <div class="layui-input-inline" v-else> <input type="text" :id="item.prop" :name="item.prop" v-model="searchData[item.prop]" :placeholder="`请输入`+item.title" autocomplete="off" class="layui-input"/> </div> </div> <#--阻止回车触发提交--> <div class="layui-input-inline" style="width: 200px;display: none;"> <select lay-verify="" type="hidden"> </select> </div> <div class="layui-inline margin-left15" style="float: right;margin-right: 20px;"> <#-- <button type="button" class="layui-btn layui-btn-normal" id="taste_button" lay-submit="record"--> <#-- lay-filter="record">语音--> <#-- </button>--> <#-- <button type="button" class="layui-btn layui-btn-normal" id="start_button" class="start-button"--> <#-- style="display: none">停止--> <#-- </button>--> <button type="button" class="layui-btn layui-btn-normal" lay-submit="" lay-filter="formSearch">查询 </button> <button type="reset" lay-submit lay-filter="formReset" class="layui-btn layui-btn-primary">重置</button> </div> </form> <#-- <div class="administrativeNumber">行政村总数:{{ count }}</div>--> <div> <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.add" @click="alertFun('','add')">新建</a> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.moreUpload" id="moreUpload"--> <#-- class="moreUpload">导入</a>--> <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.moreUpload" id="moreUpload" class="moreUpload" @click="uploads">导入</a> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.download"--> <#-- href="../../../excel/model_street_export.xlsx" download="街镇模板">模板下载</a>--> <a class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" v-if="btnJson.export" lay-filter="export">导出</a> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" v-if="btnJson.print" @click="prints()">打印</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm">新建</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" id="moreUpload" class="moreUpload">导入</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" href="../../../excel/model_street_export.xlsx" download="街镇模板">模板下载</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" lay-submit="" lay-filter="export">导出</a>--> <#-- <a class="layui-btn layui-btn-normal layui-btn-sm" @click="prints()">打印</a>--> </div> <div style="clear:both;"></div> <table id="allTable" lay-filter="allTable" lay-skin="line"></table> </div> </section> <!-- 添加和编辑查看弹窗 --> <form class="layui-form" lay-filter="information" id="information" style="display:none;padding:35px 30px"> <div class="layui-form-item" v-for="(item,index) in config.form"> <div class="layui-inline"> <label class="layui-form-label"><span class="red">*</span> {{item.title}}</label> <div class="layui-input-inline" v-if="item.type == 'select'"> <select :name="item.prop" :id="item.prop" style="width:150px;height:30px"> <option v-for="sItem in item.option" :value="sItem.value">{{sItem.label}}</option> </select> </div> <div class="layui-input-inline" v-else-if="item.type == 'custom-text'"> 自定义内容 </div> <div class="layui-input-inline" v-else> <input type="text" :name="item.prop" autocomplete="off" :lay-verify="item.rule" class="layui-input"/> </div> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button type="button" v-show="type!=='look'" class="layui-btn layui-btn-lg layui-btn-normal" lay-submit="" lay-filter="up">提交 </button> <button type="button" class="layui-btn layui-btn-lg layui-btn-normal" onclick="layer.closeAll()">取消 </button> </div> </div> </form> <div id="UploadFile" class="UploadFileWrapper" style="width: 100%;height: 100%;padding: 1rem;box-sizing: border-box;display: none"> <div class="layui-btn-container" id="upload-btn-warp"> <span id="choiceWrapper"><button type="button" class="layui-btn layui-btn-normal" id="choice">选择文件</button></span> <span id="checkFileWrapper"><button type="button" class="layui-btn" id="checkFile">校验</button></span> <button type="button" class="layui-btn" id="startUpload" @click="fnUploadFile">开始上传</button> </div> <div style="margin: 1rem 0"> <div>操作步骤:</div> <div>1.选择需要上传文件</div> <div>2.选择完成后点击“校验”按钮</div> <div>3.校验通过后点击“确认上传”</div> </div> </div> </div> <script> var menusButtonList = '${Session.buttonList?default("")}'; menusButtonList = menusButtonList ? JSON.parse(menusButtonList) : [] $(document).on("keypress", "form", function (event) { return event.keyCode != 13; }) </script> <script src="${ctx}/infoSys/js/public.js"></script> <script src="${ctx}/infoSys/js/countryPlanning/list.js"></script> <script src="${ctx}/infoSys/js/add-map.js"></script> <script src="${ctx}/plugins/rtasr/hmac-sha256.js"></script> <script src="${ctx}/plugins/rtasr/HmacSHA1.js"></script> <script src="${ctx}/plugins/rtasr/md5.js"></script> <script src="${ctx}/plugins/rtasr/enc-base64-min.js"></script> <script src="${ctx}/plugins/rtasr/index.js"></script> <script src="${ctx}/infoSys/js/navPublic.js"></script> </body> </html> const script = document.createElement('script'); script.src = `${ctx}/infoSys/js/commonJs/formConfig.js`; // 替换为实际的JavaScript文件路径 document.head.appendChild(script); script.onload = function() { // 此处可以执行其他操作 const config = countryPlanningCfg var vues = new Vue({ el: '#app', // mixins: [myMixins], // components:{ // upload // }, watch:{ 'searchData.streetName':function (n,o){ this.loadCommunityData(n) } }, computed:{ config:()=>{ return config } }, data: { navList:[],//nav模块 paramList:{},//nav模块-url tableHead: config.tableHead, streetList: [], communityList: [], menuBtn: [], btnJson: config.btnJson, isHaveHandle: false, searchListFlag: false, searchLi: [], printQuery: '', cheakliat: "", // searchData:{}, name: '', imgShow: false, type: '', url: '', uploadFile: new FormData(), uploadsVar: '', count:0, searchData: { name: '', commName: '', streetName: '', }, }, mounted: function () { // this.getNav() this.menuListBtn() this.table(); this.loadStreetData() // 绑定街道下拉框 change 事件 const streetSelect = document.getElementById('streetName'); if (streetSelect) { streetSelect.addEventListener('change', this.onStreetChange); } layui.use('form', () => { const form = layui.form form.render('select') // 页面加载时初始化所有下拉框 }) const self = this layui.use(['form'], function () { layui.form.on('select(form_streetName)', function (data) { self.searchData.streetName = data.value }) }) // this.selcetInit(); }, methods: { selectChange(prop){ console.log(prop,'prop') }, // 加载街道数据 loadStreetData() { const self = this $.ajax({ url: ctx + '/service/region/list', type: 'GET', data: { grade: 3 // 街道等级为3 }, success: function (res) { console.log(res,'resss') if (res.code === 0) { const streetOptions = res.data.map(item => ({ label: item.name, value: item.coding, coding: item.coding })) console.log('街道数据加载完成:', streetOptions) // 更新街道下拉选项 const streetItem = self.config.searchForm.find(i => i.prop === 'streetName'); if (streetItem) streetItem.option = streetOptions; // 更新搜索表单和编辑表单中的街道下拉选项 self.$set( self.config.searchForm.find(item => item.prop === 'streetName'), 'option', streetOptions ) console.log(self.config.searchForm,'self.config.searchForm') self.$set( self.config.form.find(item => item.prop === 'streetName'), 'option', streetOptions ) self.$forceUpdate() self.$nextTick(() => { setTimeout(() => { layui.form.render('select') }, 100) }) } else { console.error('加载街道数据失败:', res.msg) } }, error: function (xhr, status, error) { console.error('请求失败:', error) } }) }, // 根据街道编码加载社区数据 loadCommunityData(streetCoding) { const self = this; $.ajax({ url: ctx + '/service/region/list', type: 'GET', data: { grade: 4, // 社区等级为4 coding: streetCoding // 传入街道编码 }, success: function (res) { if (res.code === 0) { const commOptions = res.data.map(item => ({ label: item.name, value: item.id })); // 更新社区下拉选项 const commItem = self.config.searchForm.find(i => i.prop === 'commName'); if (commItem) { commItem.option = commOptions; } // 更新搜索表单和编辑表单中的社区下拉选项 const searchCommItem = self.config.searchForm.find(item => item.prop === 'commName'); const formCommItem = self.config.form.find(item => item.prop === 'commName'); if (searchCommItem) { searchCommItem.option.splice(0); // 清空旧数据 searchCommItem.option.push(...commOptions); } if (formCommItem) { formCommItem.option.splice(0); formCommItem.option.push(...commOptions); } self.$forceUpdate() self.$nextTick(() => { layui.form.render('select'); // 重新渲染下拉框 }); } }, error: function (xhr, status, error) { console.error('请求失败:', error); } }); }, // 监听街道选择变化 onStreetChange(event) { console.log('111',event) const streetValue = event.target.value; // 获取选中的街道值 const selectedStreet = this.config.searchForm .find(item => item.prop === 'streetName')?.option .find(item => item.value === streetValue); if (selectedStreet && selectedStreet.coding) { this.loadCommunityData(selectedStreet.coding); // 加载社区数据 } else { // 清空社区下拉框 const communityItem = this.config.searchForm.find(item => item.prop === 'commName'); if (communityItem) communityItem.option = []; const communityFormItem = this.config.form.find(item => item.prop === 'commName'); if (communityFormItem) communityFormItem.option = []; } self.$forceUpdate() this.$nextTick(() => { layui.form.render('select'); // 重新渲染下拉框 }); }, menuListBtn() { this.$nextTick(() => { let arr = [] menusButtonList.forEach((e) => { if (e.menuId == menusIds) { this.menuBtn.push(e) if (e.attrType == 1) { arr.push(e) } } }) console.log(this.menuBtn) this.menuBtn.forEach((e) => { if (e.buttonClass == 'add') { vues.btnJson.add = true } else if (e.buttonClass == 'moreUpload') { vues.btnJson.moreUpload = true } else if (e.buttonClass == 'download') { vues.btnJson.download = true } else if (e.buttonClass == 'export') { vues.btnJson.export = true } else if (e.buttonClass == 'print') { vues.btnJson.print = true } }) if (arr.length == 0) { this.isHaveHandle = true; this.tableHead[0].pop(); } }) }, //显示大图片 showBigImage(e) { layer.open({ type: 1, title: false, closeBtn: 0, shadeClose: true, //点击阴影关闭 area: [$(e).width + 'px', $(e).height + 'px'], //宽高 content: "<img src=" + $(e).attr('src') + " />" }); }, //打印 prints() { var v = document.createElement("div"); let self = this; $.ajax({ url: ctx + config.list, data: {limit: 999999, page: 1, ...self.searchData}, success: function (res) { if (res.code == 0) { if (res.data.length) { // <head><link rel="stylesheet" href="'+ctx+'/plugins/layui/css/layui.css"></head> let str = '<html><body><head><style>tr,td{padding:3px}.layui-table {width: 100%;background-color: #fff;color: #666;margin: 10px 0;}.layui-table-cell {height: 28px;line-height: 28px;padding: 0 15px;position: relative;box-sizing: border-box}.layui-table-cell{top: -1px;padding: 0}.layui-table-cell .layui-table-link {color: #01AAED}</style></head><table border style="width: 100%;border-collapse: collapse;border-spacing: 0;" class="layui-table">'; str += '<thead style="background-color: #f2f2f2;width: 100%">'; str += '<tr class=" layui-table-col-special layui-table-cell laytable-cell-1-0-5" style="background-color: #f2f2f2;font-weight: 700">'; config.tableHead[0].forEach(item=>{ str += `<td style="background: #f2f2f2;width: ${item.width}">${item.title}</td>` }) str += '</tr>'; str += '</thead>'; str += '<tbody style="width: 100%">'; for (var i = 0; i < res.data.length; i++) { str += '<tr class="layui-table" >'; config.tableHead[0].forEach(item=>{ if(item.type == 'numbers'){ str += `<td style="width: ${item.width}">${i+1}</td>`; } str += `<td style="background: #f2f2f2;width: ${item.width}">${res.data[i][item.prop] ? res.data[i][item.prop]:'-'}</td>` }) str += '</tr>'; } str += '</tbody>'; str += '</table></body></html>'; var h = window.open("打印窗口", "_blank"); h.document.write(str + $(v).prop("outerHTML")); h.document.close(); console.log(h) h.print(); h.close(); } else { layerObj.failMsg("该条件下暂无数据,无法打印!"); } } ; } }); }, //list table: function () { var self = this; //默认list var dataUrl = ctx + config.url.list; const tableHeadArr = self.tableHead[0].map(item=>{ let templet = null if(item.templet){ templet = item.templet }else if(item.title=='操作'){ templet =function (res){ var btn = ""; btn += '<a target="_blank" class="layui-btn layui-btn-xs" lay-event="look">详情</a >'; return btn; } }else{ templet =function (res) { return !res[item.prop] ? '-' : res[item.prop]; } } return { ...item, templet:templet } }) layerObj.tableList([tableHeadArr], 'allTable', dataUrl, 'tool(allTable)', function (res, curr, count) { self.count = count }, function (e) { let id = e.data.id; //查看 if (e.event === "look") { self.alertFun(id, 'look',e.data) } //编辑 if (e.event === "edit") { self.alertFun(id, 'edit') } // 删除 if (e.event === 'delete') { layer.confirm('是否删除?', { btn: ['确定', '取消'] //可以无限个按钮 }, function (index, layero) { layerObj.ajaxSend( 'get', ctx + `${config.url.delete}?id=` + id, 'json', {}, function (data) { if (data.code === 1) { layer.alert(data.msg); } else { self.table(); } } ); layer.close(index); }, function (index) { layer.close(index); }); } }, "allTable"); //搜索 layui.use(['form', 'table', 'upload'], function () { var form = layui.form; var table = layui.table; var upload = layui.upload; form.on("submit(formSearch)", function (data) { table.reload("allTable", { headers: self.tableHead, url: dataUrl, page: {curr: 1}, where: data.field, done: function () { } }, 'data'); }); // 重置 form.on("submit(formReset)", function (data) { self.condition = null table.reload("allTable", { headers: self.tableHead, url: dataUrl, page: {curr: 1}, where: self.condition, done: function () { } }, 'data'); }); //导出 form.on("submit(export)", function (data) { var name = $('input[name="name"]').val(); var cs = ctx + `${config.url.export}?name=` + name; window.open(cs); }); //上传附件 var uploadInst = upload.render({ elem: '#uploadBtn' , url: ctx + '/service/upload/minio/uploadAttach' , accept: 'file' //普通文件 , choose: function (obj) { obj.preview(function (index, file, result) { self.fileName = file.name; $('#attachUrl').html(file.name); }) } , done: function (res) { if (res.code > 0) { self.filePath = res.data.filePath self.imgShow = true $('#attachUrl').on('click', function () { window.location.href = ctx + '/service/upload/minio/downloadReplaceFileName?filename=' + $('#attachUrl').text() + '&fileUrlName=' + res.data.fileName }) layer.msg('上传成功'); }else { layer.msg(res.msg); } } }); }); }, //添加和编辑弹窗 alertFun(myid, type,data) { var self = this; self.type = type document.getElementById("information").reset(); self.imgShow = false $('#image').val(""); $("#roleIds,#roleNames").val(""); var titleName; var postUrl = ''; if (type == 'edit') { titleName = "编辑"; postUrl = ctx + config.url.edit } else if (type == 'add'){ titleName = "新建"; postUrl = ctx + config.url.add }else{ titleName = "查看"; } $('#imageWrapper').html('<input type="hidden" name="image" id="image" />') layui.use(['form', 'layer', 'upload', 'laydate'], function () { let form = layui.form; let layer = layui.layer; let upload = layui.upload; let laydate = layui.laydate; var myLayer = layer.open({ title: titleName + "菜单", type: 1, area: ["900px", "700px"], content: $("#information"), success: function () { if (myid && config.url.detail) { //回显 $.ajax({ url: ctx + `${config.url.detail}?id=` + myid, success: function (res) { const obj = {} config.form.forEach((item,index)=>{ obj[item.prop] = res.data[item.prop] ? res.data[item.prop] : '' }) form.val("information",obj); //文件 var image = res.data.image; self.filePath = image if (image && image != "") { self.imgShow = image ? true : false; $('#attachUrl').html(image.split('_')[image.split('_').length - 1]); $('#attachUrl').on('click', function () { window.location.href = ctx + '/service/upload/minio/downloadReplaceFileName?filename=' + $('#attachUrl').text() + '&fileUrlName=' + image }) } self.$nextTick(() => { form.render() }) } }); }else if(!config.url.detail){ const obj = {} config.form.forEach((item,index)=>{ obj[item.prop] = data[item.prop] ? data[item.prop] : '' }) form.val("information",obj); } else { form.val("information", {}); $('#attachUrl').html(''); self.imgShow = false; self.$nextTick(() => { form.render() }) } form.on('submit(up)', function (data) { let paramObj = data.field; paramObj.pid = self.pid; paramObj.imageUrl = self.filePath; if (myid) { paramObj.id = myid; } layerObj.commonAjax('POST', postUrl, "json", paramObj, function (data) { if (data.code == 0) { layer.closeAll(); layerObj.successMsg("保存成功!"); self.table(); } else { layerObj.failMsg(data.msg); } }); }); // 校验 form.verify(config.formVerify) } }); }); }, //点击搜索列表 queryBtn: function () { var self = this; self.searchListFlag = true; $.ajax({ url: ctx + '/service/baiduMap/get/suggestion', type: 'post', data: { "keyword": self.printQuery, "region": "北京市", "pageSize": 20, "pageNum": 1 }, success: function (res) { if (res.data.results) { self.searchLi = res.data.results; } } }); }, //确认选择li chooseLi: function (item) { var self = this; self.searchListFlag = false; var lng = item.location.longitude, lat = item.location.latitude; addPointFun(lng, lat); $(".longitudeLatitude").val(lng + "," + lat); $(".longitude").val(lng); $(".latitude").val(lat); self.printQuery = item.address; $(".detailAddress").val(item.address); bm.centerAndZoom(new BMap.Point(lng, lat), 14); }, // 页面初始化 pageInit() { var self = this; layui.use(['form', 'upload', 'layer'], function () { var upload = layui.upload; self.uploadsVar = upload.render({ elem: '#choice', accept: 'file', acceptMime: 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', exts: 'xlsx|xls', //只允许上传excel文件, auto: false, bindAction: '#checkFile' }); }) }, // 上传弹框 uploads() { $('#choiceWrapper').html('<button type="button" class="layui-btn layui-btn-normal" id="choice">选择文件</button>'); this.uploadsVar = ''; $('.layui-upload-choose').html(''); $('#checkFileWrapper').html('<span id="checkFileWrapper"><button type="button" class="layui-btn" id="checkFile">校验</button></span>'); this.pageInit() this.$nextTick(() => { $('#startUpload').css('display', 'none') }) let self = this layui.use(['form', 'upload', 'layer'], function () { let form = layui.form; let layer = layui.layer; var upload = layui.upload; var checkurl = '' var myLayer = layer.open({ title: '上传文件', type: 1, area: ["680px", "250px"], content: $("#UploadFile"), success: function (res) { // 校验接口 checkurl = ctx + '/service/base/street/checkExcelUpload' self.uploadsVar.reload({ elem: '#choice', accept: 'file', acceptMime: 'application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', exts: 'xlsx|xls', //只允许上传excel文件, url: checkurl, auto: false, bindAction: '#checkFile', choose: (obj) => { $('#startUpload').css('display', 'none') self.uploadFile = new FormData(); var files = obj.pushFile(); var firstProp; var count = 0; // 获取第一个属性 for (var key in files) { if (files.hasOwnProperty(key)) { firstProp = key; break; } } // 统计文件数 for (var k in files) { count++; } if (count > 1) { delete files[firstProp]; } //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9) obj.preview(function (index, file, result) { self.uploadFile.append('file', file); }); }, done: function (res, index) { if (res.code == 0) { layer.msg(res.msg); $('#startUpload').css('display', 'inline-block') } else { layer.alert(res.msg); $('#startUpload').css('display', 'none') } } }); } , end: () => { $('#startUpload').css('display', 'none') } }) }) }, // 上传 fnUploadFile() { var self = this layui.use(['layer'], function () { var layer = layui.layer; // 上传接口 var url = '' url = ctx + config.url.import let key = self.uploadFile.getAll('file')[0]; $.ajax({ url: url, method: 'post', data: self.uploadFile, contentType: false, processData: false, dataType: "json", async: false, success: (res) => { if (res.code == 0) { layer.msg(res.msg); setTimeout(() => { layer.closeAll(); self.table(); }, 2500); } else { layer.alert(res.msg); } }, fail: (res) => { layer.alert(res.msg); } }) }) }, //nav-获取列表 getNav(){ let self = this let url = document.location.toString() let urlObj = url.split('?') let paramObj let paramList = {}//url参数集合 if(urlObj.length >0){ paramObj = urlObj[1].split('&') paramObj.forEach((val,index)=>{ let arrList = val.split('=') Object.defineProperty(paramList,arrList[0],{value:arrList[1]}) // paramList.arrList[0] = arrList[1] }) } self.paramList = paramList //获取菜单列表并渲染 $.ajax({ url:ctx + "/service/authorityMenu/listByMenuId?menuId="+paramList.pid, type:"get", success:function (res) { console.log('菜单请求返回值',res) if(res.code == 0){ //修改数据内容 渲染nav选中项 res.data.forEach((val,index)=>{ if(val.childMenus.length>0){ val.childMenus.forEach((value)=>{ value.select = false; if(value.id == self.paramList.cid||value.id == self.paramList.cPid){ value.select = true; } value.childMenus }) } }) self.navList = res.data } } }) }, //nav-页面跳转 toUrl(items){ console.log(items) if(items.url.indexOf('?') != -1){ window.location.href = ctx + items.url+'&pid='+this.paramList.pid+'&cid='+items.id+'&cPid='+items.pid }else{ window.location.href = ctx + items.url+'?pid='+this.paramList.pid+'&cid='+items.id+'&cPid='+items.pid } }, //nav-渲染nav选中项 changeNavState(items){ items.select = !items.select }, //时间戳转日期函数 DateFormat(sjc) { var date = new Date(sjc); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? '0' + m : m; var d = date.getDate(); d = d < 10 ? ("0" + d) : d; var h = date.getHours(); h = h < 10 ? ("0" + h) : h; var min = date.getMinutes(); min = min < 10 ? ("0" + min) : min; var s = date.getSeconds(); s = s < 10 ? ("0" + s) : s; var str = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s; return str; }, }, }) }; 街镇下拉选择点击查询进行查询
09-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值