|  |  |  | 
|---|
|  |  |  | 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: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80,hide : true} | 
|---|
|  |  |  | ,{ | 
|---|
|  |  |  | field: 'templateName', | 
|---|
|  |  |  | align: 'center', | 
|---|
|  |  |  | title: '客户名称', | 
|---|
|  |  |  | style: 'color: #1890ff;cursor:pointer', | 
|---|
|  |  |  | event: 'moreCstmr', | 
|---|
|  |  |  | width: 350, | 
|---|
|  |  |  | hide: false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ,{field: 'cstmrId$', align: 'center',title: '客户id',hide: true} | 
|---|
|  |  |  | ,{field: 'inOrderNum', align: 'center',title: '报价编号',hide: false} | 
|---|
|  |  |  | ,{field: 'planId$', align: 'center',title: '规划单号',hide: false} | 
|---|
|  |  |  | // ,{field: 'orderNum', align: 'center',title: '报价预算单号',hide: false} | 
|---|
|  |  |  | ,{ | 
|---|
|  |  |  | field: 'planId$', | 
|---|
|  |  |  | align: 'center', | 
|---|
|  |  |  | title: '规划单号', | 
|---|
|  |  |  | style: 'color: #1890ff;cursor:pointer', | 
|---|
|  |  |  | event: 'morePlan'} | 
|---|
|  |  |  | ,{field: 'itemId', align: 'center',title: '规划单号', hide: true} | 
|---|
|  |  |  | ,{field: 'planName$', align: 'center',title: '规划单名称',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:200} | 
|---|
|  |  |  | ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:280} | 
|---|
|  |  |  | ]], | 
|---|
|  |  |  | request: { | 
|---|
|  |  |  | pageName: 'curr', | 
|---|
|  |  |  | 
|---|
|  |  |  | 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', | 
|---|
|  |  |  | shade: .1, | 
|---|
|  |  |  | offset: '200px', | 
|---|
|  |  |  | title: data.name | 
|---|
|  |  |  | }, function (i) { | 
|---|
|  |  |  | layer.close(i); | 
|---|
|  |  |  | approval(data.id); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 'refuse': | 
|---|
|  |  |  | layer.confirm('拒绝?', { | 
|---|
|  |  |  | skin: 'layui-layer-admin', | 
|---|
|  |  |  | shade: .1, | 
|---|
|  |  |  | offset: '200px', | 
|---|
|  |  |  | title: data.name | 
|---|
|  |  |  | }, function (i) { | 
|---|
|  |  |  | layer.close(i); | 
|---|
|  |  |  | refuse(data.id); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 'more': | 
|---|
|  |  |  | top.priQuoteByMore = data.id; | 
|---|
|  |  |  | console.log(top.priQuoteByMore) | 
|---|
|  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | 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"}); | 
|---|
|  |  |  | 
|---|
|  |  |  | layui.form.render('select'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function refuse(planId, plannerId, dIdx) { | 
|---|
|  |  |  | let loadIndex = layer.load(2); | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/priQuote/refuse/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | planId: planId, | 
|---|
|  |  |  | plannerId: plannerId | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (dIdx) { | 
|---|
|  |  |  | layer.close(dIdx); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | layer.close(loadIndex); | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 1}); | 
|---|
|  |  |  | tableReload(); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | function approval(planId, plannerId, dIdx) { | 
|---|
|  |  |  | let loadIndex = layer.load(2); | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/priQuote/approval/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | planId: planId, | 
|---|
|  |  |  | plannerId: plannerId | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | method: 'POST', | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | if (dIdx) { | 
|---|
|  |  |  | layer.close(dIdx); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | layer.close(loadIndex); | 
|---|
|  |  |  | if (res.code === 200){ | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 1}); | 
|---|
|  |  |  | tableReload(); | 
|---|
|  |  |  | } else if (res.code === 403){ | 
|---|
|  |  |  | top.location.href = baseUrl+"/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | layer.msg(res.msg, {icon: 2}); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //更新form | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function getItemInfo(val) { | 
|---|
|  |  |  | $.ajax({ | 
|---|
|  |  |  | url: baseUrl+"/priQuoteBudget/" + val + "/auth", | 
|---|
|  |  |  | url: baseUrl+"/priOnline2/" + val + "/auth", | 
|---|
|  |  |  | headers: {'token': localStorage.getItem('token')}, | 
|---|
|  |  |  | method: 'GET', | 
|---|
|  |  |  | traditional:true, | 
|---|