From cb3870820f63e6f7ba595d80dcbbfd3deae6fdf6 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期二, 07 十一月 2023 17:49:28 +0800 Subject: [PATCH] # --- src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java | 5 src/main/webapp/static/js/priQuote/priQuote.js | 145 ++++++++++++++++++++ src/main/webapp/views/priOnline2/priOnline.html | 39 ++++ src/main/java/com/zy/crm/manager/controller/PlanController.java | 5 src/main/resources/mapper/PriQuoteMapper.xml | 1 src/main/java/com/zy/crm/manager/controller/PriQuoteController.java | 4 src/main/webapp/static/js/priOnline2/priOnline.js | 145 ++++++++++++++++++++ src/main/java/com/zy/crm/manager/entity/PriQuote.java | 4 src/main/webapp/views/priQuote/priQuote.html | 28 ++++ 9 files changed, 366 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zy/crm/manager/controller/PlanController.java b/src/main/java/com/zy/crm/manager/controller/PlanController.java index ecd13fc..0cd26b0 100644 --- a/src/main/java/com/zy/crm/manager/controller/PlanController.java +++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java @@ -306,11 +306,14 @@ @RequestMapping(value = "/plan/view/file/auth") // @ManagerAuth public R viewFile(@RequestParam("planId") String planId){ + List<FileSaveExampleUtil.FileDTO> fileDTOS = new ArrayList<>(); + if (Cools.isEmpty(planId)){ + return R.ok(fileDTOS); + } int id = Integer.parseInt(planId); // String savePath = "D:/crm/plan/file/"+id+"/"; // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰� try{ List<Integer> ids = planService.selectPlanUrlId(id); - List<FileSaveExampleUtil.FileDTO> fileDTOS = new ArrayList<>(); for (int id2 : ids){ String url = planService.selectPlanUrlPlanIdUrl(id2); String name = planService.selectPlanUrlPlanIdName(id2); diff --git a/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java b/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java index 8f72fd0..a78fcc4 100644 --- a/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java +++ b/src/main/java/com/zy/crm/manager/controller/PriOnline2Controller.java @@ -277,6 +277,7 @@ users.add(userUp); priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPath(users, initNames, users.size()))); priOnline2.setSettleSize(users.size()); + priOnline2.setPlanId(plan.getId()); //璁剧疆椤圭洰娴佺▼ plan.setStep(2); @@ -593,8 +594,8 @@ } dto.setTime(DateUtils.convert(new Date())); } else if (dto.getStep().equals(priOnline2.getSettle() + 2)) { - if (priOnline2.getSettleSize().equals(4)){ - nextUserId = 0L; + if (Cools.isEmpty(dto.getUserId())){ + nextUserId= 0L; }else { nextUserId=dto.getUserId(); } diff --git a/src/main/java/com/zy/crm/manager/controller/PriQuoteController.java b/src/main/java/com/zy/crm/manager/controller/PriQuoteController.java index 8a25959..5bbb6fa 100644 --- a/src/main/java/com/zy/crm/manager/controller/PriQuoteController.java +++ b/src/main/java/com/zy/crm/manager/controller/PriQuoteController.java @@ -84,7 +84,7 @@ @RequestParam(required = false)String condition, @RequestParam Map<String, Object> param){ EntityWrapper<PriQuote> wrapper = new EntityWrapper<>(); - wrapper.setSqlSelect("id,title,create_time as createTime,filepath,item_id as itemId,order_num as orderNum,template_name as templateName,sheet_data as sheetData,user_id as userId,dept_id as deptId,settle,settle_msg as settleMsg,form,update_user_id as updateUserId,update_time as updateTime,in_order_num as inOrderNum,member_id as memberId,template"); + wrapper.setSqlSelect("id,title,create_time as createTime,plan_id as planId,filepath,item_id as itemId,order_num as orderNum,template_name as templateName,sheet_data as sheetData,user_id as userId,dept_id as deptId,settle,settle_msg as settleMsg,form,update_user_id as updateUserId,update_time as updateTime,in_order_num as inOrderNum,member_id as memberId,template"); // wrapper.in("member_id", getUserRoleBelongsToUserId()); excludeTrash(param); convert(param, wrapper); @@ -169,6 +169,8 @@ //妯℃澘 priQuote.setTemplate(map.get("template").toString()); + priQuote.setPlanId(priOnline2.getPlanId()); + //璁剧疆椤圭洰娴佺▼ diff --git a/src/main/java/com/zy/crm/manager/entity/PriQuote.java b/src/main/java/com/zy/crm/manager/entity/PriQuote.java index 04ff459..7202cc5 100644 --- a/src/main/java/com/zy/crm/manager/entity/PriQuote.java +++ b/src/main/java/com/zy/crm/manager/entity/PriQuote.java @@ -113,6 +113,10 @@ @TableField("host_id") private Long hostId; + @ApiModelProperty(value= "瑙勫垝鍗旾D") + @TableField("plan_id") + private Long planId; + /** * 瀹℃牳杩涘害 */ diff --git a/src/main/resources/mapper/PriQuoteMapper.xml b/src/main/resources/mapper/PriQuoteMapper.xml index f5e1741..135c1bc 100644 --- a/src/main/resources/mapper/PriQuoteMapper.xml +++ b/src/main/resources/mapper/PriQuoteMapper.xml @@ -9,6 +9,7 @@ <result column="sheet_data" property="sheetData" /> <result column="create_time" property="createTime" /> <result column="dept_id" property="deptId" /> + <result column="plan_id" property="planId" /> <result column="form" property="form" /> <result column="settle" property="settle" /> <result column="settle_msg" property="settleMsg" /> diff --git a/src/main/webapp/static/js/priOnline2/priOnline.js b/src/main/webapp/static/js/priOnline2/priOnline.js index b2a6eb5..de4daa2 100644 --- a/src/main/webapp/static/js/priOnline2/priOnline.js +++ b/src/main/webapp/static/js/priOnline2/priOnline.js @@ -259,6 +259,96 @@ } }); + $("#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 + '">鍑嗗涓婁紶</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) + + _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 + $("#upload-file-id-" + file.lastModified).html("涓婁紶涓�") + + putObject(file).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(priOnline)', function (obj) { var data = obj.data; @@ -507,9 +597,64 @@ } }); 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>'; + // 灏唗r鍏冪礌娣诲姞鍒扮洰鏍噒able涓� + 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; // 闃绘榛樿鐨勯摼鎺ヨ烦杞涓� + }); + // 鎼滅储 form.on('submit(search)', function (data) { pageCurr = 1; diff --git a/src/main/webapp/static/js/priQuote/priQuote.js b/src/main/webapp/static/js/priQuote/priQuote.js index 72ca174..5ef585b 100644 --- a/src/main/webapp/static/js/priQuote/priQuote.js +++ b/src/main/webapp/static/js/priQuote/priQuote.js @@ -149,6 +149,96 @@ } }); + $("#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 + '">鍑嗗涓婁紶</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) + + _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 + $("#upload-file-id-" + file.lastModified).html("涓婁紶涓�") + + putObject(file).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('sort(priQuote)', function (obj) { var searchData = {}; @@ -362,9 +452,64 @@ }) }); 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>'; + // 灏唗r鍏冪礌娣诲姞鍒扮洰鏍噒able涓� + 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; // 闃绘榛樿鐨勯摼鎺ヨ烦杞涓� + }); + // 鎼滅储 form.on('submit(search)', function (data) { pageCurr = 1; diff --git a/src/main/webapp/views/priOnline2/priOnline.html b/src/main/webapp/views/priOnline2/priOnline.html index 72e86c3..3bee7d9 100644 --- a/src/main/webapp/views/priOnline2/priOnline.html +++ b/src/main/webapp/views/priOnline2/priOnline.html @@ -76,6 +76,31 @@ <input type="button" onclick="upload()" value="涓婁紶"/> </form> +<div id="myModal" style="display: none;"> + <div style="padding: 10px"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal" id="data-btn-file2">閫夋嫨鏂囦欢</button><input id="data-btn-upload" class="layui-upload-file" type="file" accept="" name="file" multiple=""> + <div class="layui-upload-list" style="max-width: 1000px;"> + <table class="layui-table"> + <colgroup> + <col> + <col width="150"> + <col width="260"> + <col width="150"> + </colgroup> + <thead> + <tr><th>鏂囦欢鍚�</th> + <th>澶у皬</th> + <th>涓婁紶杩涘害</th> + <th>鎿嶄綔</th> + </tr></thead> + <tbody id="data-btn-file3"></tbody> + </table> + </div> + <button type="button" class="layui-btn" id="testListAction">寮�濮嬩笂浼�</button> + </div> + </div> +</div> <script type="text/html" id="operate"> {{# if ((d.settle == 0) || (d.settle == 1 && d.settleSize == 4)){ }} @@ -88,6 +113,7 @@ {{# if (d.settle == 1 || (d.settle == 2 && d.settleSize == 4)){ }} <a class="layui-btn layui-btn-xs btn-edit" lay-event="approvalEnd">鍥為��瀹℃壒</a> {{# } }} + <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="uploadLink">闄勪欢</a> <a class="layui-btn layui-btn-xs btn-edit" lay-event="check">鏍镐环</a> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">缂栬緫</a> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="upload">涓婁紶璇环</a> @@ -115,6 +141,7 @@ <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> <script type="text/javascript" src="../../static/js/luckysheet_js/pako.es5.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/luckysheet_js/base64.min.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/aliyun-oss-sdk.min.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/priOnline2/priOnline.js" charset="utf-8"></script> <!-- 琛ㄥ崟寮圭獥 --> <script type="text/html" id="editDialog"> @@ -140,12 +167,12 @@ </div> </div> - <div class="layui-form-item"> - <label class="layui-form-label layui-form-required">鏍镐环鍚�: </label> - <div class="layui-input-block"> - <input class="layui-input" type="text" name="name" placeholder="鏍镐环鍚�" autocomplete="off"> - </div> - </div> +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label layui-form-required">鏍镐环鍚�: </label>--> +<!-- <div class="layui-input-block">--> +<!-- <input class="layui-input" type="text" name="name" placeholder="鏍镐环鍚�" autocomplete="off">--> +<!-- </div>--> +<!-- </div>--> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">妯℃澘: </label> diff --git a/src/main/webapp/views/priQuote/priQuote.html b/src/main/webapp/views/priQuote/priQuote.html index 20e9c86..fd6c2b9 100644 --- a/src/main/webapp/views/priQuote/priQuote.html +++ b/src/main/webapp/views/priQuote/priQuote.html @@ -92,6 +92,32 @@ </div> </div> +<div id="myModal" style="display: none;"> + <div style="padding: 10px"> + <div class="layui-upload"> + <button type="button" class="layui-btn layui-btn-normal" id="data-btn-file2">閫夋嫨鏂囦欢</button><input id="data-btn-upload" class="layui-upload-file" type="file" accept="" name="file" multiple=""> + <div class="layui-upload-list" style="max-width: 1000px;"> + <table class="layui-table"> + <colgroup> + <col> + <col width="150"> + <col width="260"> + <col width="150"> + </colgroup> + <thead> + <tr><th>鏂囦欢鍚�</th> + <th>澶у皬</th> + <th>涓婁紶杩涘害</th> + <th>鎿嶄綔</th> + </tr></thead> + <tbody id="data-btn-file3"></tbody> + </table> + </div> + <button type="button" class="layui-btn" id="testListAction">寮�濮嬩笂浼�</button> + </div> + </div> +</div> + <script type="text/html" id="toolbar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" lay-event="addBlank">鏂板缓鎶ヤ环鍗�</button> @@ -106,6 +132,7 @@ {{# if (d.settle == 2 || d.settle == 3) { }} <a class="layui-btn layui-btn-xs btn-edit" lay-event="refuse">鍥為��瀹℃壒</a> {{# } }} + <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="uploadLink">闄勪欢</a> <a class="layui-btn layui-btn-xs btn-edit" lay-event="quote">鎶ヤ环</a> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">缂栬緫</a> <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a> @@ -116,6 +143,7 @@ <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/aliyun-oss-sdk.min.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/layui/lay/modules/cascader/citys-data.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/priQuote/priQuote.js" charset="utf-8"></script> <!-- 琛ㄥ崟寮圭獥 --> -- Gitblit v1.9.1