|  |  | 
 |  |  |         cellMinWidth: 150, | 
 |  |  |         cols: [[ | 
 |  |  |             {type: 'checkbox', fixed: 'left'} | 
 |  |  |             ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80} | 
 |  |  |             ,{field: 'templateName', align: 'center',title: '模板名', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false} | 
 |  |  |             ,{field: 'orderNum', align: 'center',title: '报价预算单号',hide: false} | 
 |  |  |             ,{field: 'inOrderNum', align: 'center',title: '报价编号',hide: false} | 
 |  |  |             ,{field: 'planId$', align: 'center',title: '规划单号',hide: false} | 
 |  |  |             ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80,hide : true, sort:true} | 
 |  |  |             ,{ | 
 |  |  |                 field: 'templateName', | 
 |  |  |                 align: 'center', | 
 |  |  |                 title: '客户名称', | 
 |  |  |                 style: 'color: #1890ff;cursor:pointer', | 
 |  |  |                 event: 'moreCstmr', | 
 |  |  |                 width: 350, | 
 |  |  |                 hide: false, sort:true | 
 |  |  |             } | 
 |  |  |             ,{field: 'cstmrId$', align: 'center',title: '客户id',hide: true} | 
 |  |  |             ,{field: 'inOrderNum', align: 'center',title: '报价编号',hide: false, sort:true} | 
 |  |  |             // ,{field: 'orderNum', align: 'center',title: '报价预算单号',hide: false} | 
 |  |  |             ,{ | 
 |  |  |                 field: 'planId$', | 
 |  |  |                 align: 'center', | 
 |  |  |                 title: '规划单号', | 
 |  |  |                 style: 'color: #1890ff;cursor:pointer', | 
 |  |  |                 event: 'morePlan'} | 
 |  |  |             ,{field: 'itemId', align: 'center',title: '规划单ID', hide: true, sort:true} | 
 |  |  |             ,{field: 'planName$', align: 'center',title: '规划单名称',hide: false} | 
 |  |  |             ,{field: 'settle$', align: 'center',title: '进度', width: 150,hide: false} | 
 |  |  |             ,{ | 
 |  |  |                 field: 'settle$', | 
 |  |  |                 align: 'center', | 
 |  |  |                 title: '进度', | 
 |  |  |                 style: 'color: #1890ff;cursor:pointer', | 
 |  |  |                 event: 'more', | 
 |  |  |                 width: 150, | 
 |  |  |                 hide: false | 
 |  |  |             } | 
 |  |  |             ,{field: 'createTime$', align: 'center',title: '创建时间',hide: false} | 
 |  |  |             ,{field: 'updateTime$', align: 'center',title: '更新时间',hide: false} | 
 |  |  |             ,{field: 'memberId$', align: 'center',title: '业务员',hide: false} | 
 |  |  |             ,{field: 'userId$', align: 'center',title: '创建人员',hide: true} | 
 |  |  |             // ,{field: 'memberId$', align: 'center',title: '业务员',hide: false} | 
 |  |  |             ,{field: 'userId$', align: 'center',title: '业务员',hide: true} | 
 |  |  |             ,{field: 'updateUserId$', align: 'center',title: '更新人员',hide: false} | 
 |  |  |             ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:280} | 
 |  |  |         ]], | 
 |  |  | 
 |  |  |             pageCurr=curr;pageCount=count; | 
 |  |  |             limit(); | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     $("#data-btn-file2").on("click", (e) => { | 
 |  |  |         $("#data-btn-upload").click() | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     var _uploadFile = null | 
 |  |  |     //响应上传 | 
 |  |  |     $("#data-btn-upload").on("change",(evt) => { | 
 |  |  |         var files = evt.target.files; | 
 |  |  |         if(files==null || files.length==0){ | 
 |  |  |             alert("No files wait for import"); | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         var file = files[0] | 
 |  |  |  | 
 |  |  |         var tr = $(['<tr id="upload-">' | 
 |  |  |             ,'<td id="upload-filename-id-'+ file.lastModified + '">' + file.name +'</td>' | 
 |  |  |             ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>' | 
 |  |  |             ,'<td id="upload-file-id-' + file.lastModified + '"><div class="layui-progress layui-progress-big" lay-showPercent="true" lay-filter="progress-demo-'+ file.lastModified +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>' | 
 |  |  |             ,'<td>' | 
 |  |  |             ,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>' | 
 |  |  |             ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>' | 
 |  |  |             ,'<button id="file-download" class="layui-btn layui-btn-xs demo-reload layui-hide">下载</button>' | 
 |  |  |             ,'</td>' | 
 |  |  |             ,'</tr>'].join('')); | 
 |  |  |  | 
 |  |  |         //删除 | 
 |  |  |         tr.find('.demo-delete').on('click', function(){ | 
 |  |  |             tr.remove(); | 
 |  |  |             $("#data-btn-upload").val("") | 
 |  |  |             _uploadFile = null | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         $('#data-btn-file3').append(tr) | 
 |  |  |  | 
 |  |  |         element.progress('progress-demo-'+ file.lastModified, '0%'); //执行进度条。 | 
 |  |  |         element.init(); | 
 |  |  |  | 
 |  |  |         _uploadFile = file | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  |     //开始上传 | 
 |  |  |     $("#testListAction").on("click", async (e) => { | 
 |  |  |         if (_uploadFile == null) { | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         var index = layer.load(1, { | 
 |  |  |             shadeClose: false, | 
 |  |  |             title: '上传中..', | 
 |  |  |             shade: [0.5,'#000'] | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         var file = _uploadFile | 
 |  |  |  | 
 |  |  |         putObject(file,(p) => { | 
 |  |  |             element.progress('progress-demo-'+ file.lastModified, (Math.round(p * 100)) + "%"); //执行进度条。 | 
 |  |  |         }).then((result) => { | 
 |  |  |             var filename = result.name | 
 |  |  |             layer.msg('上传成功', {icon: 1}); | 
 |  |  |             $("#upload-file-id-" + file.lastModified).html("上传成功") | 
 |  |  |             $("#upload-filename-id-" + file.lastModified).html(filename) | 
 |  |  |  | 
 |  |  |             $.ajax({ | 
 |  |  |                 url: baseUrl+"/plan/insert/file/auth", | 
 |  |  |                 headers: {'token': localStorage.getItem('token')}, | 
 |  |  |                 data: { | 
 |  |  |                     'planId': $('.layui-layer-title').text(), | 
 |  |  |                     'filename': filename, | 
 |  |  |                     'filesize': file.size | 
 |  |  |                 }, | 
 |  |  |                 method: 'POST', | 
 |  |  |                 success: function (res) { | 
 |  |  |                     if (res.code === 200){ | 
 |  |  |                         layer.close(index) | 
 |  |  |                         console.log(res) | 
 |  |  |                     } else if (res.code === 403){ | 
 |  |  |                         top.location.href = baseUrl+"/"; | 
 |  |  |                     } else { | 
 |  |  |                         layer.msg(res.msg) | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |         }).catch((e) => { | 
 |  |  |             console.log(e) | 
 |  |  |             layer.msg('上传失败', {icon: 2}); | 
 |  |  |             $("#upload-file-id-" + file.lastModified).html("上传失败") | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |         //清空file | 
 |  |  |         $("#data-btn-upload").val("") | 
 |  |  |         _uploadFile = null | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 监听排序事件 | 
 |  |  | 
 |  |  |     table.on('tool(priQuote)', function(obj){ | 
 |  |  |         var data = obj.data; | 
 |  |  |         switch (obj.event) { | 
 |  |  |             case 'moreCstmr': | 
 |  |  |                 top.cstmrByMore = data.cstmrId$; | 
 |  |  |                 admin.popupRight({ | 
 |  |  |                     type: 1, | 
 |  |  |                     window: "top", | 
 |  |  |                     area: "1250px", | 
 |  |  |                     url: "../cstmr/cstmr_more.html", | 
 |  |  |                     end: function () { | 
 |  |  |                         // $(".layui-laypage-btn")[0].click(); | 
 |  |  |                     } | 
 |  |  |                 }) | 
 |  |  |                 break; | 
 |  |  |             case 'morePlan': | 
 |  |  |                 top.planByMore = data.itemId; | 
 |  |  |                 admin.popupRight({ | 
 |  |  |                     type: 1, | 
 |  |  |                     window: "top", | 
 |  |  |                     area: "1250px", | 
 |  |  |                     url: "../plan/plan_more_other.html", | 
 |  |  |                     end: function () { | 
 |  |  |                         // $(".layui-laypage-btn")[0].click(); | 
 |  |  |                     } | 
 |  |  |                 }) | 
 |  |  |                 break; | 
 |  |  |             case 'approval': | 
 |  |  |                 layer.confirm('审批通过?', { | 
 |  |  |                     skin: 'layui-layer-admin', | 
 |  |  | 
 |  |  |                 }) | 
 |  |  |                 break; | 
 |  |  |             case "quote": | 
 |  |  |                 console.log(data) | 
 |  |  |                 layer.open({ | 
 |  |  |                     type: 2, | 
 |  |  |                     title: '报价单编辑', | 
 |  |  |                     maxmin: true, | 
 |  |  |                     area: [top.detailWidth, top.detailHeight], | 
 |  |  |                     shadeClose: false, | 
 |  |  |                     content: 'priQuote_detail.html?id=' + data.id, | 
 |  |  |                     content: 'priQuote_detail.html?id=' + data.id + "&template=" + data.template, | 
 |  |  |                     success: function(layero, index){ | 
 |  |  |                         // layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"}); | 
 |  |  |                     } | 
 |  |  | 
 |  |  |                     }) | 
 |  |  |                 }); | 
 |  |  |                 break; | 
 |  |  |             case "uploadLink": | 
 |  |  |                 // 打开弹窗 | 
 |  |  |                 // 构建带参数的内容 | 
 |  |  |                 console.log(data) | 
 |  |  |                 layer.open({ | 
 |  |  |                     type: 1, | 
 |  |  |                     title: '上传文件-'+data.itemId, | 
 |  |  |                     content: $('#myModal') | 
 |  |  |                 }); | 
 |  |  |                 // 获取路径下的文件列表,使用 jQuery 的 ajax 方法 | 
 |  |  |                 $.ajax({ | 
 |  |  |                     url: '/plan/view/file/auth', | 
 |  |  |                     data:{ | 
 |  |  |                         planId:data.itemId | 
 |  |  |                     }, | 
 |  |  |                     success: function(response) { | 
 |  |  |                         if (response.code==200){ | 
 |  |  |                             var targetTable = document.getElementById("data-btn-file3"); | 
 |  |  |                             targetTable.innerHTML = ''; | 
 |  |  |                             // 将获取到的文件列表添加到文件队列中进行显示 | 
 |  |  |                             response.data.forEach(function(file,index) { | 
 |  |  |                                 // 创建tr元素 | 
 |  |  |                                 var tr = document.createElement("tr"); | 
 |  |  |                                 tr.id = "upload-"+index; | 
 |  |  |                                 tr.innerHTML = '<td>' + file.name + '</td>' | 
 |  |  |                                     + '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>' | 
 |  |  |                                     // + '<td><div class="layui-progress" lay-filter="progress-demo-' + index ,100 + '%'+ '"><div class="layui-progress-bar" lay-percent=""></div></div></td>' | 
 |  |  |                                     + '<td>'+'已完成'+'</td>' | 
 |  |  |                                     + '<td>' | 
 |  |  |                                     + '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>' | 
 |  |  |                                     // + '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>' | 
 |  |  |                                     + '<a href="' + file.path + '" download class="layui-btn layui-btn-xs layui-btn-primary">下载</a>' | 
 |  |  |                                     + '</td>'; | 
 |  |  |                                 // 将tr元素添加到目标table中 | 
 |  |  |                                 targetTable.appendChild(tr); | 
 |  |  |                             }); | 
 |  |  |                         }else { | 
 |  |  |                             console.log('Failed to get file list error.'); | 
 |  |  |                         } | 
 |  |  |                     }, | 
 |  |  |                     error: function() { | 
 |  |  |                         console.log('Failed to get file list.'); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 点击下载按钮时触发文件下载 | 
 |  |  |     $('#data-btn-file3').on('click', 'a', function() { | 
 |  |  |         console.log(this) | 
 |  |  |         var downloadUrl = $(this).attr('href'); | 
 |  |  |         let url = getObjectUrl(downloadUrl) | 
 |  |  |         layer.msg("准备下载中", {icon: 1}); | 
 |  |  |         location.href = url | 
 |  |  |         return false;  // 阻止默认的链接跳转行为 | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 搜索 | 
 |  |  | 
 |  |  |                         maxmin: true, | 
 |  |  |                         area: [top.detailWidth, top.detailHeight], | 
 |  |  |                         shadeClose: false, | 
 |  |  |                         content: 'priQuote_detail.html?priQuoteBudgetId=' + data.field.id, | 
 |  |  |                         content: 'priQuote_detail.html?priQuoteBudgetId=' + data.field.id + "&template=" + data.field.template, | 
 |  |  |                         success: function(layero, index){ | 
 |  |  |                             clearFormVal(layer.getChildFrame('#detail', index)); | 
 |  |  |                             // layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"}); | 
 |  |  | 
 |  |  |  | 
 |  |  | function getItemInfo(val) { | 
 |  |  |     $.ajax({ | 
 |  |  |         url: baseUrl+"/priQuoteBudget/" + val + "/auth", | 
 |  |  |         url: baseUrl+"/priOnline2/" + val + "/auth", | 
 |  |  |         headers: {'token': localStorage.getItem('token')}, | 
 |  |  |         method: 'GET', | 
 |  |  |         traditional:true, |