mainview.jsp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. <!DOCTYPE HTML>
  2. <%@ page language="java" pageEncoding="UTF-8" import="java.util.*" contentType="text/html; charset=UTF-8"%>
  3. <%@include file="/jsp/framework/head.jsp"%>
  4. <%@ taglib uri="/WEB-INF/hnisi.tld" prefix="hnisi"%>
  5. <%
  6. String sdjlid = (DTOUtil.getValue("sdjlid") == ""? "" : DTOUtil.getValue("sdjlid"));
  7. String sdzlid = (DTOUtil.getValue("sdzlid") == ""? "" : DTOUtil.getValue("sdzlid"));
  8. String isview = (DTOUtil.getValue("isview") == ""? "0" : DTOUtil.getValue("isview"));
  9. Map dataMap = new HashMap();
  10. dataMap = (Map) DTOUtil.getData().get("dataMap") == null?null:(Map) DTOUtil.getData().get("dataMap");
  11. %>
  12. <html>
  13. <link rel="stylesheet" href="/web/jsp/shoudan/web/mainview/css/viewer.min.css">
  14. <style>
  15. html,body{
  16. width: 100%;
  17. height: 100%;
  18. margin: 0;
  19. padding: 0;
  20. }
  21. .div-default:active, .div-default:hover {
  22. background-color:#FFFACD;
  23. }
  24. .zllb-div1{
  25. padding: 10px 5px 10px 5px;
  26. background: #fbfbfb;
  27. border-top: 1px solid #efefef;
  28. border-bottom: 1px solid #efefef;
  29. }
  30. .zllb-div2{
  31. padding: 10px 5px 10px 5px;
  32. background: #fff;
  33. border-top: 1px solid #fff;
  34. border-bottom: 1px solid #fff;
  35. }
  36. .div-on {
  37. background-color:#FFFACD;
  38. border-color: #8c8c8c;
  39. color: #8c8c8c;
  40. }
  41. #dowebok { width: 98%; margin: 0 auto; font-size: 0;}
  42. #dowebok li { display: inline-block; width: 23%;height: 240px; margin-left: 1%; padding-top: 1%;}
  43. #dowebok li img { width: 100%; height: 100%;}
  44. #dowebok li div { text-align: center; }
  45. </style>
  46. <head lang="zh-cn">
  47. <meta charset="utf-8">
  48. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  49. <meta name="viewport" content="width=device-width,initial-scale=1">
  50. <title>收单页面</title>
  51. </head>
  52. <body>
  53. <div id="root" style="width: 100%;height: 100%;padding:0 0 5px 0;">
  54. <div class="row" style="height:100%;margin:10px 0">
  55. <!-- 第一块资料类别 -->
  56. <div class="col col-2">
  57. <div class="section" style="width: 100%;height: 100%;">
  58. <div class="section-title">
  59. <img class="title-icon" src="${ctx}/themes/zjrs/images/title-icon.png" />
  60. <span class="section-title-text">资料类别</span>
  61. <%
  62. //查看方式显示
  63. if(!"0".equals(isview)){
  64. %>
  65. <a class="btn btn-ghost" onclick="downloadFilesAll()">下载全部附件</a>
  66. <%} %>
  67. </div>
  68. <div id="zllb" class="bg_set" style="overflow:auto;">
  69. <%if(dataMap != null){
  70. List<Map<String, Object>> sdzlList = (List) dataMap.get("sdzlList");
  71. if(sdzlList != null){
  72. for(int i=0;i<sdzlList.size();i++){
  73. %>
  74. <div id="zllbdiv<%=sdzlList.get(i).get("SDZLID") %>" <%if(i%2 == 0){ %> class="zllb-div1 div-default" <%}else{ %> class="zllb-div2 div-default" <%} %> onclick="getSdzlmx('<%=sdzlList.get(i).get("SDZLID")%>','0','<%=i+1%>')">
  75. <%
  76. if("1".equals(sdzlList.get(i).get("SFBSBZ"))){
  77. %>
  78. <a style="color:red;">*</a>
  79. <%
  80. }
  81. %>
  82. <%=(String) sdzlList.get(i).get("ZLLBMC")%>(<a id="zllb<%=sdzlList.get(i).get("SDZLID") %>" style="color:blue;"><%=sdzlList.get(i).get("CNT")%></a>)
  83. </div>
  84. <%
  85. }
  86. }
  87. } %>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="col col-10">
  92. <div class="section" style="width: 100%;height: 100%;overflow:auto;">
  93. <div class="section-title">
  94. <img class="title-icon" src="${ctx}/themes/zjrs/images/title-icon.png" />
  95. <span class="section-title-text">缩略图</span>
  96. <span class="section-title-extra-btn">
  97. <%
  98. //查看方式不显示
  99. if("0".equals(isview)){
  100. %>
  101. <a class="btn btn-primary" style="margin-right:20px" onclick="doFounder()">高拍仪</a>
  102. <a class="btn btn-primary" style="margin-right:20px" onclick="doFujitsu()">扫描仪</a>
  103. <a class="btn btn-primary" style="margin-right:50px" onclick="doUpload()">本地上传</a>
  104. <a class="btn btn-ghost" style="margin-right:20px" id="previouPage" onclick="previouPage()">上一页</a>
  105. <a class="btn btn-ghost" style="margin-right:20px" id="nextPage" onclick="nextPage()">下一页</a>
  106. <a class="btn btn-ghost" style="margin-right:20px" onclick="setAllChecked()">全选</a>
  107. <a class="btn btn-ghost" style="margin-right:20px" onclick="setAllUnchecked()">全不选</a>
  108. <a class="btn btn-ghost" onclick="doDelete()">删除</a>
  109. <%
  110. }else{
  111. %>
  112. <a class="btn btn-ghost" style="margin-right:20px" id="downloadFiles" onclick="downloadFiles()">批量下载附件</a>
  113. <a class="btn btn-ghost" style="margin-right:20px" id="previouPage" onclick="previouPage()">上一页</a>
  114. <a class="btn btn-ghost" style="margin-right:20px" id="nextPage" onclick="nextPage()">下一页</a>
  115. <%
  116. }
  117. %>
  118. </span>
  119. </div>
  120. <div id=image_list_div class="bg_set" style="overflow:auto;">
  121. <ul id="dowebok">
  122. </ul>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. </body>
  129. <script src="/web/jsp/shoudan/web/mainview/js/viewer.min.js"></script>
  130. <script src="/web/jsp/shoudan/web/mainview/js/jszip.min.js"></script>
  131. <script src="/web/jsp/shoudan/web/mainview/js/FileSaver.js"></script>
  132. <script src="/web/jsp/shoudan/web/mainview/js/axios.min.js"></script>
  133. <script type="text/javascript">
  134. var GVAR_VIEW= {
  135. "sdjlid":"<%=sdjlid%>",
  136. "sdzlid":"<%=sdzlid%>",
  137. "isview":"<%=isview%>",
  138. "xh":"1",
  139. "lbxh":"1"
  140. };
  141. //如果GVAR已经定义了则追加
  142. if(GVAR){
  143. GVAR = $.extend(GVAR, GVAR_VIEW);
  144. }else{
  145. var GVAR = GVAR_VIEW;
  146. }
  147. //初始化界面
  148. $(function(){
  149. //计算高度
  150. var distance = document.documentElement.clientHeight;
  151. var divHeight = distance-62;
  152. document.getElementById("zllb").style.height= divHeight + "px";//左侧div
  153. document.getElementById("image_list_div").style.height= divHeight + "px";//右侧div
  154. var sdzlid = "<%=sdzlid%>";
  155. if(sdzlid.length > 0){
  156. //默认打开收单明细资料预览图
  157. getSdzlmx(sdzlid,"1");
  158. }
  159. });
  160. //获取收单资料明细
  161. function getSdzlmx(sdzlid,isrefresh,lbxh){
  162. //未切换资料类别
  163. if(GVAR.sdzlid == sdzlid && isrefresh == "0"){
  164. return;
  165. }else if(GVAR.sdzlid != sdzlid && isrefresh == "0"){//切换资料类别
  166. GVAR.xh = "1";//还原序号
  167. }
  168. if(!CFW.oValid.fnIsNull(lbxh) ){
  169. GVAR.lbxh=lbxh;
  170. }
  171. var mParams={
  172. sdzlid:sdzlid,
  173. xh:GVAR.xh
  174. };
  175. CFW.oAJax.doService("mainviewService.getSdzlmx", mParams, '获取资料明细信息...',
  176. function(mData) {
  177. console.log("获取收单资料明细...");
  178. var images = mData[0].sdzlList;
  179. var url = mData[0].URL;
  180. //alert("images="+JSON.stringify(images));
  181. var strImageList = "";
  182. for(var i = 0; i < images.length; i++){
  183. console.log('picurl:'+url+images[i].ML );
  184. var filename=images[i].YWJM+"."+images[i].WJLX;
  185. //界面显示
  186. if(images[i].WJLX == "jpeg" || images[i].WJLX == "jpg" || images[i].WJLX == "png" || images[i].WJLX == "bmp"){
  187. strImageList += "<li id=\"li"+images[i].SDZLMXID+"\"><img src=\"" + url+images[i].ML + "\" alt=\"img"+(i+1)+"\" onclick=\"viewPic()\">";
  188. if(GVAR.isview == "0"){
  189. strImageList += "<div><input type=\"checkbox\" name=\"zlmximgs\" value=\""+images[i].SDZLMXID+"\"/>勾选删除</div>";
  190. }else{
  191. strImageList += "<div>"+filename+"</div>";
  192. }
  193. strImageList += "</li>";
  194. }else{
  195. strImageList += "<li id=\"li"+images[i].SDZLMXID+"\"><img src='${ctx}/jsp/shoudan/img/pdf.png' onclick=\"downloadPdf('"+url+images[i].ML+"','"+filename+"')\">";
  196. strImageList += "<div>"+filename+"</div>";
  197. strImageList += "</li>";
  198. }
  199. }
  200. document.getElementById("dowebok").innerHTML = strImageList;
  201. //div增加选中样式
  202. if(GVAR.xh == "1"){
  203. var div = document.getElementById("zllbdiv"+sdzlid);
  204. div.className += ' div-on';
  205. }
  206. //资料类别切换去掉选中样式
  207. if(GVAR.sdzlid != sdzlid && GVAR.sdzlid != "" && isrefresh == "0"){
  208. var divdel = document.getElementById("zllbdiv"+GVAR.sdzlid);
  209. var classVal = divdel.getAttribute("class");
  210. classVal = classVal.replace(" div-on","");
  211. divdel.setAttribute("class",classVal);
  212. }
  213. GVAR.sdzlid = sdzlid;
  214. }
  215. );
  216. }
  217. //上一页
  218. function previouPage(){
  219. if(GVAR.xh == "1"){
  220. alert("当前为第一页!");
  221. }else{
  222. GVAR.xh = (parseInt(GVAR.xh) - 40) + "";
  223. getSdzlmx(GVAR.sdzlid,"1");
  224. }
  225. }
  226. //下一页
  227. function nextPage(){
  228. var cnt = document.getElementById("zllb"+GVAR.sdzlid).innerHTML;
  229. var xh = (parseInt(GVAR.xh) + 40);
  230. if(parseInt(cnt) >= xh){
  231. GVAR.xh = xh + "";
  232. getSdzlmx(GVAR.sdzlid,"1");
  233. }else{
  234. alert("当前为最后一页!");
  235. }
  236. }
  237. //全选
  238. function setAllChecked(){
  239. var zlmximgs = document.getElementsByName("zlmximgs");
  240. for (var i = 0; i < zlmximgs.length; i++) {
  241. if (zlmximgs[i].checked == false){
  242. zlmximgs[i].checked = true;
  243. }
  244. }
  245. }
  246. //全不选
  247. function setAllUnchecked(){
  248. var zlmximgs = document.getElementsByName("zlmximgs");
  249. for (var i = 0; i < zlmximgs.length; i++) {
  250. if (zlmximgs[i].checked == true){
  251. zlmximgs[i].checked = false;
  252. }
  253. }
  254. }
  255. //删除图片
  256. function doDelete(){
  257. var zlmximgs = document.getElementsByName("zlmximgs");
  258. var delStr = "";//删除图片ID
  259. for (var i = 0; i < zlmximgs.length; i++) {
  260. if (zlmximgs[i].checked == true){
  261. //校验是否隐藏,若隐藏则为已删除图片,不再处理
  262. var liDisplay = document.getElementById("li"+zlmximgs[i].value).style.display;
  263. if(liDisplay != "none"){
  264. delStr += zlmximgs[i].value + ",";
  265. }
  266. }
  267. }
  268. if(delStr.length > 0){
  269. var mParams={
  270. sdzlid:GVAR.sdzlid,
  271. sdzlmxids:delStr
  272. };
  273. CFW.oAJax.doService("mainviewService.delSdzlmx", mParams, '删除资料明细信息...',
  274. function(mData) {
  275. if(mData[0].FLAG=="1"){
  276. alert("删除成功!");
  277. //更新资料类别总数
  278. var cnt = document.getElementById("zllb"+GVAR.sdzlid).innerHTML;
  279. var reg = new RegExp(",", "g");
  280. var delCnt = delStr.match(reg).length;
  281. var zlmxCnt = parseInt(cnt)-parseInt(delCnt);
  282. document.getElementById("zllb"+GVAR.sdzlid).innerHTML = zlmxCnt;
  283. //刷新缩略图片
  284. var sdzlmxids = delStr.split(",");
  285. for(var i=0;i<sdzlmxids.length-1;i++){
  286. document.getElementById("li"+sdzlmxids[i]).style.display = "none";
  287. }
  288. }else{
  289. alert("删除失败!");
  290. }
  291. }
  292. );
  293. }else{
  294. alert("请勾选需要删除的图片");
  295. }
  296. }
  297. //显示图片
  298. function viewPic(){
  299. var viewer = new Viewer(document.getElementById('dowebok'), {});
  300. viewer.show();
  301. }
  302. //跳转方正高拍仪
  303. function doFounder(){
  304. var title=encodeURIComponent('高拍仪页面');
  305. window.location.href = "${ctx}/shoudan/web/mainview/mainview!founder.do?title="+title+"&sdzlid="+ GVAR.sdzlid +"&sdjlid="+GVAR.sdjlid;
  306. }
  307. //跳转富士通扫描仪
  308. function doFujitsu(){
  309. var title=encodeURIComponent('扫描仪页面');
  310. window.location.href = "${ctx}/shoudan/web/mainview/mainview!fujitsu.do?title="+title+"&sdzlid="+ GVAR.sdzlid +"&sdjlid="+GVAR.sdjlid;
  311. }
  312. //跳转本地上传
  313. function doUpload(){
  314. var title=encodeURIComponent('本地上传页面');
  315. window.location.href = "${ctx}/shoudan/web/mainview/mainview!localfile.do?title="+title+"&sdzlid="+ GVAR.sdzlid +"&sdjlid="+GVAR.sdjlid;
  316. }
  317. //非图片文件格式下载
  318. function downloadPdf(url, filename){
  319. getBlob(url, function (blob) {
  320. saveAs(blob, filename);
  321. });
  322. }
  323. function getBlob(url, cb) {
  324. var xhr = new XMLHttpRequest();
  325. xhr.open('GET', url, true);
  326. xhr.responseType = 'blob';
  327. xhr.onload = function () {
  328. if (xhr.status === 200) {
  329. cb(xhr.response);
  330. }
  331. };
  332. xhr.send();
  333. }
  334. function saveAs(blob, filename) {
  335. if (window.navigator.msSaveOrOpenBlob) {
  336. navigator.msSaveBlob(blob, filename);
  337. } else {
  338. var link = document.createElement('a');
  339. var body = document.querySelector('body');
  340. link.href = window.URL.createObjectURL(blob);
  341. link.download = filename;
  342. // fix Firefox
  343. link.style.display = 'none';
  344. body.appendChild(link);
  345. link.click();
  346. body.removeChild(link);
  347. window.URL.revokeObjectURL(link.href);
  348. };
  349. }
  350. //批量下载附件
  351. function downloadFiles(){
  352. var zip = new JSZip();
  353. var mParams={
  354. SDZLID:GVAR.sdzlid,
  355. SDJLID:GVAR.sdjlid
  356. };
  357. CFW.oAJax.doService("mainviewService.getSdzlmxDownloadBatch", mParams, '获取资料明细信息...',
  358. function(mData) {
  359. console.log("批量下载附件,获取收单资料明细...");
  360. var images = mData[0].sdzlList;
  361. var url = mData[0].URL;
  362. var foldername="images";
  363. if(images.length>0){
  364. foldername = images[0].ZLLBMC;
  365. }else{
  366. alert("附件为空!");
  367. return;
  368. }
  369. console.log(foldername +',批量下载,文件数:'+images.length );
  370. var zipname=mData[0].SLBH+mData[0].ZTMC+'材料('+GVAR.lbxh+').zip';
  371. var img = zip.folder(foldername);
  372. for(var i = 0; i < images.length; i++){
  373. console.log('picurl:'+url+images[i].ML );
  374. var picurl = url+images[i].ML;
  375. var filename=images[i].FILENAME;
  376. img.file(filename, getOneFile(picurl), {base64: true});
  377. }
  378. zip.generateAsync({type:"blob"})
  379. .then(function(content) {
  380. saveAs(content, zipname);
  381. });
  382. }
  383. );
  384. }
  385. //根据URL取文件
  386. function getOneFile(url) {
  387. return new Promise((resolve, reject) => {
  388. axios({
  389. method: 'get',
  390. url,
  391. responseType: 'arraybuffer'
  392. }).then(res => {
  393. resolve(res.data)
  394. }).catch(error => {
  395. reject(error.toString())
  396. })
  397. })
  398. }
  399. //下载全部附件
  400. function downloadFilesAll(){
  401. var zip = new JSZip();
  402. var mParams={
  403. SDJLID:GVAR.sdjlid
  404. };
  405. CFW.oAJax.doService("mainviewService.getSdzlmxDownloadAll", mParams, '获取资料明细信息...',
  406. function(mData) {
  407. console.log("下载全部附件,获取收单资料明细...");
  408. var url = mData[0].URL;
  409. var zipname=mData[0].SLBH+mData[0].ZTMC;
  410. var allList = mData[0].allList;
  411. if(allList.length == 0){
  412. alert("附件为空!");
  413. return;
  414. }
  415. for(var i = 0; i < allList.length; i++){
  416. var mxlist=allList[i];
  417. var foldername="images";
  418. if(mxlist.length > 0){
  419. foldername = mxlist[0].ZLLBMC;
  420. }else{
  421. continue;
  422. }
  423. console.log(foldername +',文件数:'+mxlist.length );
  424. var img = zip.folder(foldername);
  425. for(var j = 0; j < mxlist.length; j++){
  426. var picurl = url+mxlist[j].ML;
  427. var filename=mxlist[j].FILENAME;
  428. img.file(filename, getOneFile(picurl), {base64: true});
  429. }
  430. }
  431. zip.generateAsync({type:"blob"})
  432. .then(function(content) {
  433. saveAs(content, zipname);
  434. });
  435. }
  436. );
  437. }
  438. </script>
  439. </html>