| | |
| | | @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); |
| | |
| | | users.add(userUp); |
| | | priOnline2.setSettleMsg(JSON.toJSONString(SettleDto.InItFlowPath(users, initNames, users.size()))); |
| | | priOnline2.setSettleSize(users.size()); |
| | | priOnline2.setPlanId(plan.getId()); |
| | | |
| | | //设置项目流程 |
| | | plan.setStep(2); |
| | |
| | | } |
| | | 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(); |
| | | } |
| | |
| | | @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); |
| | |
| | | //模板 |
| | | priQuote.setTemplate(map.get("template").toString()); |
| | | |
| | | priQuote.setPlanId(priOnline2.getPlanId()); |
| | | |
| | | |
| | | |
| | | //设置项目流程 |
| | |
| | | @TableField("host_id") |
| | | private Long hostId; |
| | | |
| | | @ApiModelProperty(value= "规划单ID") |
| | | @TableField("plan_id") |
| | | private Long planId; |
| | | |
| | | /** |
| | | * 审核进度 |
| | | */ |
| | |
| | | <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" /> |
| | |
| | | } |
| | | }); |
| | | |
| | | $("#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; |
| | |
| | | } |
| | | }); |
| | | 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; // 阻止默认的链接跳转行为 |
| | | }); |
| | | |
| | | // 搜索 |
| | | form.on('submit(search)', function (data) { |
| | | pageCurr = 1; |
| | |
| | | } |
| | | }); |
| | | |
| | | $("#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 = {}; |
| | |
| | | }) |
| | | }); |
| | | 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; // 阻止默认的链接跳转行为 |
| | | }); |
| | | |
| | | // 搜索 |
| | | form.on('submit(search)', function (data) { |
| | | pageCurr = 1; |
| | |
| | | <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)){ }} |
| | |
| | | {{# 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> |
| | |
| | | <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"> |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | {{# 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> |
| | |
| | | <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> |
| | | <!-- 表单弹窗 --> |