国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

702 lignes
23KB

  1. var fixupPos = false;
  2. var canMove = false;
  3. var leftLeaning = 0;
  4. //异步上传缩略图相关变量
  5. var nForm = null;
  6. var nFrame = null;
  7. var picnameObj = null;
  8. var vImg = null;
  9. function GetWinPos(w, h) {
  10. var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
  11. var dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
  12. var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
  13. var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
  14. var systemZoom = width / window.screen.availWidth;
  15. var left = (width - w) / 2 / systemZoom + dualScreenLeft;
  16. var top = (height - h) / 2 / systemZoom + dualScreenTop;
  17. return { left: left, top: top };
  18. }
  19. function $Nav() {
  20. if (window.navigator.userAgent.indexOf("MSIE") >= 1) return 'IE';
  21. else if (window.navigator.userAgent.indexOf("Firefox") >= 1) return 'FF';
  22. else return "OT";
  23. }
  24. function $Obj(objname) {
  25. return document.getElementById(objname);
  26. }
  27. function ColorSel(c, oname) {
  28. var tobj = $Obj(oname);
  29. if (!tobj) tobj = eval('document.form1.' + oname);
  30. if (!tobj) {
  31. $Obj('colordlg').style.display = 'none';
  32. return false;
  33. } else {
  34. tobj.value = c;
  35. $Obj('colordlg').style.display = 'none';
  36. return true;
  37. }
  38. }
  39. function ShowColor(e, o) {
  40. LoadNewDiv(e, '../../static/web/img/colornew.htm', 'colordlg');
  41. }
  42. function ShowHide(objname) {
  43. var obj = $Obj(objname);
  44. if (obj.style.display != "none") obj.style.display = "none";
  45. else obj.style.display = "inline-block";
  46. }
  47. function ShowHideT(objname) {
  48. var obj = $Obj(objname);
  49. if (obj.style.display != "none") obj.style.display = "none";
  50. else obj.style.display = ($Nav() == "IE" ? "inline-block" : "table");
  51. }
  52. function ShowObj(objname) {
  53. var obj = $Obj(objname);
  54. if (obj == null) return false;
  55. obj.style.display = ($Nav() == "IE" ? "inline-block" : "table");
  56. }
  57. function ShowObjRow(objname) {
  58. var obj = $Obj(objname);
  59. obj.style.display = ($Nav() == "IE" ? "inline-block" : "table-row");
  60. }
  61. function AddTypeid2() {
  62. ShowObjRow('typeid2tr');
  63. }
  64. function HideObj(objname) {
  65. var obj = $Obj(objname);
  66. if (obj == null) return false;
  67. obj.style.display = "none";
  68. }
  69. function SeePic(img, f) {
  70. if (f.value != '') img.src = f.value;
  71. }
  72. function SeePicNew(f, imgdid, frname, hpos, acname) {
  73. var newobj = null;
  74. if (f.value == '') return;
  75. vImg = $Obj(imgdid);
  76. picnameObj = document.getElementById('picname');
  77. nFrame = $Nav() == 'IE' ? eval('document.frames.' + frname) : $Obj(frname);
  78. nForm = f.form;
  79. //修改form的action等参数
  80. if (nForm.detachEvent) nForm.detachEvent("onsubmit", checkSubmit);
  81. else nForm.removeEventListener("submit", checkSubmit, false);
  82. nForm.action = 'archives_do.php';
  83. nForm.target = frname;
  84. nForm.dopost.value = 'uploadLitpic';
  85. nForm.submit();
  86. picnameObj.value = '';
  87. newobj = $Obj('uploadwait');
  88. if (!newobj) {
  89. newobj = document.createElement("DIV");
  90. newobj.id = 'uploadwait';
  91. newobj.style.position = 'absolute';
  92. newobj.className = 'uploadwait';
  93. newobj.style.width = 120;
  94. newobj.style.height = 20;
  95. newobj.style.top = hpos;
  96. newobj.style.left = 100;
  97. newobj.style.display = 'block';
  98. document.body.appendChild(newobj);
  99. newobj.innerHTML = '<img src="../../static/web/img/loadinglit.gif">';
  100. }
  101. newobj.style.display = 'block';
  102. //提交后还原form的action等参数
  103. nForm.action = acname;
  104. nForm.dopost.value = 'save';
  105. nForm.target = '';
  106. nForm.litpic.disabled = true;
  107. }
  108. function SelectFlash() {
  109. var pos = GetWinPos(800,600);
  110. window.open("./dialog/select_media.php?f=form1.flashurl", "popUpFlashWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  111. }
  112. function SelectMedia(fname) {
  113. var pos = GetWinPos(800,600);
  114. window.open("./dialog/select_media.php?f=" + fname, "popUpFlashWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  115. }
  116. function SelectSoft(fname) {
  117. var pos = GetWinPos(800,600);
  118. window.open("./dialog/select_soft.php?f=" + fname, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  119. }
  120. function SelectImage(fname, stype, imgsel="") {
  121. var pos = GetWinPos(800,600);
  122. if (!fname) fname = 'form1.picname';
  123. if (imgsel) imgsel = '&noeditor=yes';
  124. if (!stype) stype = 'small';
  125. window.open("./dialog/select_images.php?f=" + fname + "&noeditor=yes&imgstick=" + stype + imgsel, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  126. }
  127. function SelectImageN(fname, stype, vname) {
  128. var pos = GetWinPos(800,600);
  129. if (!fname) fname = 'form1.picname';
  130. if (!stype) stype = '';
  131. window.open("./dialog/select_images.php?f=" + fname + "&imgstick=" + stype + "&v=" + vname, "popUpImagesWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  132. }
  133. function SelectKeywords(f) {
  134. var pos = GetWinPos(800,600);
  135. window.open("article_keywords_select.php?f=" + f, "popUpkwWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  136. }
  137. function InitPage() {
  138. var selsource = $Obj('selsource');
  139. var selwriter = $Obj('selwriter');
  140. var colorbt = $Obj('color');
  141. if (selsource) { selsource.onmousedown = function (e) { SelectSource(e); } }
  142. if (selwriter) { selwriter.onmousedown = function (e) { SelectWriter(e); } }
  143. }
  144. function OpenMyWin(surl) {
  145. var pos = GetWinPos(800,600);
  146. window.open(surl, "popUpMyWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left="+pos.left+", top="+pos.top);
  147. }
  148. function OpenMyWinCoOne(surl) {
  149. var pos = GetWinPos(800,600);
  150. window.open(surl, "popUpMyWin2", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left="+pos.left+",top="+pos.top);
  151. }
  152. function PutSource(str) {
  153. var osource = $Obj('source');
  154. if (osource) osource.value = str;
  155. $Obj('mysource').style.display = 'none';
  156. ChangeFullDiv('hide');
  157. }
  158. function PutWriter(str) {
  159. var owriter = $Obj('writer');
  160. if (owriter) owriter.value = str;
  161. $Obj('mywriter').style.display = 'none';
  162. ChangeFullDiv('hide');
  163. }
  164. //添加选择投票文档
  165. function PutVote(str) {
  166. var ovote = $Obj('voteid');
  167. if (ovote) {
  168. ovote.value = str;
  169. tb_remove(false);
  170. } else {
  171. parent.document.form1.voteid.value = str;
  172. tb_remove(true);
  173. }
  174. }
  175. function ClearDivCt(objname) {
  176. if (!$Obj(objname)) return;
  177. $Obj(objname).innerHTML = '';
  178. $Obj(objname).style.display = 'none';
  179. ChangeFullDiv("hide");
  180. }
  181. function ChangeFullDiv(showhide, screenheigt) {
  182. var newobj = $Obj('fullpagediv');
  183. if (showhide == 'show') {
  184. if (!newobj) {
  185. newobj = document.createElement("DIV");
  186. newobj.id = 'fullpagediv';
  187. newobj.style.position = 'absolute';
  188. newobj.className = 'fullpagediv';
  189. newobj.style.height = document.body.clientHeight + 50 + 'px';
  190. document.body.appendChild(newobj);
  191. } else {
  192. newobj.style.display = 'block';
  193. }
  194. } else {
  195. if (newobj) newobj.style.display = 'none';
  196. }
  197. }
  198. function SelectSource(e) {
  199. LoadNewDiv(e, 'article_select_sw.php?t=source&k=8&rnd=' + Math.random(), 'mysource');
  200. }
  201. function SelectWriter(e) {
  202. LoadNewDiv(e, 'article_select_sw.php?t=writer&k=8&rnd=' + Math.random(), 'mywriter');
  203. }
  204. function LoadNewDiv(e, surl, oname) {
  205. var pxStr = '';
  206. if ($Nav() == 'IE') {
  207. var posLeft = window.event.clientX - 20;
  208. var posTop = window.event.clientY - 30;
  209. //IE下scrollTop的兼容性问题
  210. var scrollTop = document.documentElement.scrollTop || window.pageYOffset;
  211. if (typeof (scrollTop) == 'undefined') scrollTop = document.body.scrollTop;
  212. posTop += scrollTop;
  213. } else {
  214. var posLeft = e.pageX - 20;
  215. var posTop = e.pageY - 30;
  216. pxStr = 'px';
  217. }
  218. posLeft = posLeft - 100;
  219. var newobj = $Obj(oname);
  220. if (!newobj) {
  221. newobj = document.createElement("DIV");
  222. newobj.id = oname;
  223. newobj.style.position = 'absolute';
  224. newobj.className = oname;
  225. newobj.className += ' dlgws';
  226. newobj.style.top = posTop + pxStr;
  227. newobj.style.left = posLeft + pxStr;
  228. document.body.appendChild(newobj);
  229. } else {
  230. newobj.style.display = "block";
  231. }
  232. if (newobj.innerHTML.length < 10) {
  233. fetch(surl).then(resp => resp.text()).then((d) => { newobj.innerHTML = d });
  234. }
  235. }
  236. function LoadNewDiv2(e, surl, oname, dlgcls) {
  237. var posLeft = 300;
  238. var posTop = 50;
  239. var newobj = $Obj(oname);
  240. if (!newobj) {
  241. newobj = document.createElement("DIV");
  242. newobj.id = oname;
  243. newobj.style.position = 'absolute';
  244. newobj.className = dlgcls;
  245. newobj.style.top = posTop;
  246. newobj.style.left = posLeft;
  247. newobj.style.display = 'none';
  248. document.body.appendChild(newobj);
  249. }
  250. newobj.innerHTML = '';
  251. fetch(surl).then(resp => resp.text()).then((d) => {
  252. newobj.innerHTML = d;
  253. });
  254. if (newobj.innerHTML == '') newobj.style.display = 'none';
  255. else newobj.style.display = 'block';
  256. jQuery(newobj).css('top', '50px').css('left', '300px');
  257. DedeXHTTP = null;
  258. }
  259. function ShowUrlTr() {
  260. var jumpTest = $Obj('flagsj');
  261. var jtr = $Obj('redirecturltr');
  262. var jf = $Obj('redirecturl');
  263. if (jumpTest.checked) jtr.style.display = "block";
  264. else {
  265. jf.value = '';
  266. jtr.style.display = "none";
  267. }
  268. }
  269. function ShowUrlTrEdit() {
  270. ShowUrlTr();
  271. var jumpTest = $Obj('isjump');
  272. var rurl = $Obj('redirecturl');
  273. if (!jumpTest.checked) rurl.value = "";
  274. }
  275. function CkRemote() {
  276. document.getElementById('picname').value = '';
  277. }
  278. //载入指定宽高的Ajax窗体
  279. function LoadQuickDiv(e, surl, oname, w, h) {
  280. var newobj = $Obj(oname);
  281. if (!newobj) {
  282. newobj = document.createElement("DIV");
  283. newobj.id = oname;
  284. newobj.style.position = 'fixed';
  285. newobj.className = 'pubdlg';
  286. newobj.style.width = w;
  287. newobj.style.height = h + 30;
  288. document.body.appendChild(newobj);
  289. }
  290. newobj.style.minWidth = "500px";
  291. newobj.style.top = "50%";
  292. newobj.style.left = "50%";
  293. newobj.style.transform = "translate(-50%, -50%)";
  294. newobj.innerHTML = '<img src="../../static/web/img/loadinglit.gif">';
  295. newobj.style.display = 'block';
  296. fetch(surl).then(resp => resp.text()).then((d) => {
  297. newobj.innerHTML = d;
  298. });
  299. fixupPos = false;
  300. }
  301. //通用事件获取接口
  302. function getEvent() {
  303. if ($Nav() == 'IE') return window.event;
  304. func = getEvent.caller;
  305. while (func != null) {
  306. var arg0 = func.arguments[0];
  307. if (arg0) {
  308. if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
  309. return arg0;
  310. }
  311. }
  312. func = func.caller;
  313. }
  314. return null;
  315. }
  316. //模拟ondrop事件相关代码
  317. function DropStart() {
  318. this.style.cursor = 'move';
  319. }
  320. function DropStop() {
  321. this.style.cursor = 'default';
  322. }
  323. function DropMove() {
  324. if (this.style.cursor != 'move') return;
  325. var event = getEvent();
  326. if ($Nav() == 'IE') {
  327. var posLeft = event.clientX - 20;
  328. var posTop = event.clientY - 30;
  329. posTop += document.body.scrollTop;
  330. } else {
  331. var posLeft = event.pageX - 20;
  332. var posTop = event.pageY - 30;
  333. }
  334. this.style.top = posTop;
  335. this.style.left = posLeft - leftLeaning;
  336. }
  337. //对指定的元素绑定move事件
  338. function DropStartHand() {
  339. canMove = (canMove ? false : true);
  340. }
  341. function DropStopHand() {
  342. canMove = false;
  343. }
  344. function DropMoveHand(objid, mleftLeaning) {
  345. var event = getEvent();
  346. var obj = $Obj(objid);
  347. if (!canMove) return;
  348. if ($Nav() == 'IE') {
  349. var posLeft = event.clientX - 20;
  350. var posTop = event.clientY - 20;
  351. posTop += window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  352. } else {
  353. var posLeft = event.pageX - 20;
  354. var posTop = event.pageY - 20;
  355. }
  356. obj.style.top = posTop + "px";
  357. obj.style.left = posLeft - mleftLeaning + "px";
  358. }
  359. //复制文档到剪切板
  360. function copyToClipboard(txt) {
  361. if (txt == null || txt == '') {
  362. alert("没有选择任何文档");
  363. return;
  364. }
  365. if (window.clipboardData) {
  366. window.clipboardData.clearData();
  367. window.clipboardData.setData("Text", txt);
  368. } else if (navigator.userAgent.indexOf('Opera') != -1) {
  369. window.location = txt;
  370. } else {
  371. try {
  372. netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  373. } catch (e) {
  374. alert("浏览器已拒绝,请稍后重试");
  375. }
  376. var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
  377. if (!clip) return;
  378. var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
  379. if (!trans) return;
  380. trans.addDataFlavor('text/unicode');
  381. var str = new Object();
  382. var len = new Object();
  383. var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  384. var copytext = txt;
  385. str.data = copytext;
  386. trans.setTransferData("text/unicode", str, copytext.length * 2);
  387. var clipid = Components.interfaces.nsIClipboard;
  388. if (!clip) return false;
  389. clip.setData(trans, null, clipid.kGlobalClipboard);
  390. }
  391. }
  392. function getSelTxt() {
  393. var g, r;
  394. if (document.all) {
  395. g = document.selection.createRange().text;
  396. } else {
  397. g = document.getSelection();
  398. }
  399. return g;
  400. }
  401. //显示栏目Map地图
  402. function ShowCatMap(e, obj, cid, targetId, oldvalue) {
  403. fixupPos = true;
  404. LoadQuickDiv(e, 'archives_do.php?dopost=getCatMap&targetid=' + targetId + '&channelid=' + cid + '&oldvalue=' + oldvalue + '&rnd=' + Math.random(), 'getCatMap', '700px', '500px');
  405. ChangeFullDiv('show');
  406. }
  407. function getSelCat(targetId) {
  408. var selBox = document.quicksel.seltypeid;
  409. var targetObj = $Obj(targetId);
  410. var selvalue = '';
  411. //副栏目多选
  412. if (targetId == 'typeid2') {
  413. var j = 0;
  414. for (var i = 0; i < selBox.length; i++) {
  415. if (selBox[i].checked) {
  416. j++;
  417. if (j == 10) break;
  418. selvalue += (selvalue == '' ? selBox[i].value : ',' + selBox[i].value);
  419. }
  420. }
  421. if (targetObj) targetObj.value = selvalue;
  422. } else {
  423. //主栏目单选
  424. if (selBox) {
  425. for (var i = 0; i < selBox.length; i++) {
  426. if (selBox[i].checked) selvalue = selBox[i].value;
  427. }
  428. }
  429. if (selvalue == '') {
  430. alert('您没有选中任何项目');
  431. return;
  432. }
  433. if (targetObj) {
  434. for (var j = 0; j < targetObj.length; j++) {
  435. op = targetObj.options[j];
  436. if (op.value == selvalue) op.selected = true;
  437. }
  438. }
  439. }
  440. HideObj("getCatMap");
  441. ChangeFullDiv("hide");
  442. }
  443. function getElementLeft(element) {
  444. var actualLeft = element.offsetLeft;
  445. var current = element.offsetParent;
  446. while (current !== null) {
  447. actualLeft += current.offsetLeft;
  448. current = current.offsetParent;
  449. }
  450. return actualLeft;
  451. }
  452. function getElementTop(element) {
  453. var actualTop = element.offsetTop;
  454. var current = element.offsetParent;
  455. while (current !== null) {
  456. actualTop += current.offsetTop;
  457. current = current.offsetParent;
  458. }
  459. return actualTop;
  460. }
  461. //生成一个随机id
  462. function guid() {
  463. function S4() {
  464. return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  465. }
  466. return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
  467. }
  468. var _DedeConfirmFuncs = {};
  469. var _DedeConfirmFuncsClose = {};
  470. function __DedeConfirmRun(modalID) {
  471. _DedeConfirmFuncs[modalID]();
  472. }
  473. function __DedeConfirmRunClose(modalID) {
  474. _DedeConfirmFuncsClose[modalID]();
  475. }
  476. function DedeConfirm(content="",title="确认提示") {
  477. let modalID = guid();
  478. return new Promise((resolve, reject) => {
  479. _DedeConfirmFuncs[modalID] = ()=>{
  480. resolve("success");
  481. CloseModal(`DedeModal${modalID}`);
  482. }
  483. _DedeConfirmFuncsClose[modalID] = ()=>{
  484. reject("cancel");
  485. CloseModal(`DedeModal${modalID}`);
  486. }
  487. let footer = `<button type="button" class="btn btn-outline-success btn-sm" onClick="__DedeConfirmRunClose(\'${modalID}\')">取消</button><button type="button" class="btn btn-success btn-sm" onClick="__DedeConfirmRun(\'${modalID}\')">确定</button>`;
  488. let modal = `<div id="DedeModal${modalID}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="DedeModalLabel${modalID}"><div class="modal-dialog modal-dialog-centered" role="document"><div class="modal-content"><div class="modal-header"><h6 class="modal-title" id="DedeModalLabel${modalID}">${title}</h6>`;
  489. modal += `<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span>&times;</span></button>`;
  490. modal += `</div><div class="modal-body">${content}</div><div class="modal-footer">${footer}</div></div></div></div>`;
  491. $("body").append(modal)
  492. $("#DedeModal" + modalID).modal({
  493. backdrop: 'static',
  494. show: true
  495. });
  496. $("#DedeModal" + modalID).on('hidden.bs.modal', function (e) {
  497. $("#DedeModal" + modalID).remove();
  498. })
  499. })
  500. }
  501. //函数会返回一个modalID,通过这个id可自已定义一些方法,这里用到了一个展开语法https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax
  502. function ShowMsg(content, ...args) {
  503. title = "系统提示";
  504. size = "";
  505. if (typeof content == "undefined") content = "";
  506. modalID = guid();
  507. var footer = `<button type="button" class="btn btn-primary" onClick="CloseModal(\'GKModal${modalID}\')">确定</button>`;
  508. var noClose = false;
  509. if (args.length == 1) {
  510. //存在args参数
  511. if (typeof args[0].title !== 'undefined' && args[0].title != "") {
  512. title = args[0].title;
  513. }
  514. if (typeof args[0].footer !== 'undefined' && args[0].footer != "") {
  515. footer = args[0].footer;
  516. }
  517. if (typeof args[0].size !== 'undefined' && args[0].size != "") {
  518. size = args[0].size;
  519. }
  520. if (typeof args[0].noClose !== 'undefined' && args[0].noClose == true) {
  521. noClose = true;
  522. }
  523. }
  524. footer = footer.replaceAll("~modalID~", modalID);
  525. content = content.replaceAll("~modalID~", modalID);
  526. var modal = `<div id="GKModal${modalID}" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="GKModalLabel${modalID}"><div class="modal-dialog ${size}" role="document"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="GKModalLabel${modalID}">${title}</h5>`;
  527. if (!noClose) {
  528. modal += `<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span>&times;</span></button>`;
  529. }
  530. modal += `</div><div class="modal-body">${content}</div><div class="modal-footer">${footer}</div></div></div></div>`;
  531. $("body").append(modal)
  532. $("#GKModal" + modalID).modal({
  533. backdrop: 'static',
  534. show: true
  535. });
  536. $("#GKModal" + modalID).on('hidden.bs.modal', function (e) {
  537. $("#GKModal" + modalID).remove();
  538. })
  539. return modalID;
  540. }
  541. //隐藏并销毁modal
  542. function CloseModal(modalID) {
  543. $("#" + modalID).modal('hide');
  544. $("#" + modalID).on('hidden.bs.modal', function (e) {
  545. if ($("#" + modalID).length > 0) {
  546. $("#" + modalID).remove();
  547. }
  548. })
  549. }
  550. //获取缩略图
  551. var litpicImgSrc = "";
  552. var litpicImg = "";
  553. var currentCID = 0;
  554. var mdlCropperID = "";
  555. var pubAt = 0;
  556. var optCropper = {
  557. preview: ".pv",
  558. crop: function (e) {
  559. $("#cropWidth").text(Math.round(e.detail.height));
  560. $("#cropHeight").text(Math.round(e.detail.width));
  561. if ($(this).cropper("getCroppedCanvas")) {
  562. var dataUrl = $(this).cropper("getCroppedCanvas").toDataURL();
  563. litpicImg = dataUrl;
  564. $("#litPic").attr("src", litpicImg);
  565. }
  566. },
  567. aspectRatio: 4 / 3,
  568. //拖动截取缩略图后,截取的缩略图更新到imageItems中
  569. cropend: function (data) {
  570. //这里的id要单独取出来
  571. var dataUrl = $(this).cropper("getCroppedCanvas").toDataURL();
  572. litpicImg = dataUrl;
  573. $("#litPic").attr("src", litpicImg);
  574. $("#litpic_b64").val(litpicImg);
  575. }
  576. }
  577. var cropperAspectRatio = {
  578. 0: 16 / 9,
  579. 1: 4 / 3,
  580. 2: 1 / 1,
  581. 3: 2 / 3,
  582. 4: NaN,
  583. }
  584. function setAspectRatio(ar) {
  585. var opts = optCropper;
  586. opts.aspectRatio = cropperAspectRatio[ar];
  587. $("#cropImg" + mdlCropperID).cropper('destroy').cropper(opts);
  588. }
  589. function okImage(modalID) {
  590. uploadImage(litpicImg);
  591. $("#litPic").attr("src", litpicImg);
  592. CloseModal('GKModal' + modalID);
  593. }
  594. function useDefault(modalID) {
  595. uploadImage(litpicImgSrc);
  596. $("#litPic").attr("src", litpicImgSrc);
  597. CloseModal('GKModal' + modalID);
  598. }
  599. function uploadImage(litpicImgSrc) {
  600. const formData = new FormData()
  601. formData.append('litpic_b64', litpicImgSrc);
  602. fetch('archives_do.php?dopost=upload_base64_image', {
  603. method: 'POST',
  604. body: formData
  605. })
  606. .then(r => {
  607. if (r.ok) {
  608. return r.json()
  609. }
  610. throw new Error(errMsg);
  611. })
  612. .then(d => {
  613. if (d.code == 200) {
  614. $("#picname").val(d.data.image_url);
  615. }
  616. }).catch((error) => {
  617. alert("上传缩略图错误");
  618. });
  619. }
  620. $(document).ready(function () {
  621. $("#btnClearAll").click(function (event) {
  622. litpicImgSrc = "";
  623. litpicImg = "";
  624. $("#picname").val(litpicImg);
  625. $("#litPic").attr("src", "../../static/web/img/thumbnail.jpg");
  626. })
  627. //添加图片
  628. $("#iptAddImages").change(function (event) {
  629. var files = event.target.files;
  630. for (var i = 0, f; f = files[i]; i++) {
  631. //如果不是图片忽略
  632. if (!f.type.match('image.*')) {
  633. continue;
  634. }
  635. //将图片渲染到浏览器
  636. var reader = new FileReader();
  637. reader.onload = (function (theFile) {
  638. return function (e) {
  639. litpicImgSrc = e.target.result;
  640. if (cfg_uplitpic_cut == 'Y') {
  641. SetThumb(litpicImgSrc);
  642. } else {
  643. uploadImage(litpicImgSrc);
  644. $("#litPic").attr("src", litpicImgSrc);
  645. }
  646. };
  647. })(f);
  648. reader.readAsDataURL(f);
  649. }
  650. $("#iptAddImages").val("");
  651. });
  652. //截取缩略图
  653. function SetThumb(srcURL) {
  654. var footer = "<p><a href='javascript:useDefault(\"~modalID~\");' class='btn btn-success btn-sm'>使用原图</a><a href='javascript:okImage(\"~modalID~\")' class='btn btn-success btn-sm'>确定</a></p>";
  655. var optButton = `<p><label for="aspectRatio">比例</label><select id="aspectRatio" onchange="setAspectRatio(this.selectedIndex)"><option>16:9</option><option selected>4:3</option><option>1:1</option><option>2:3</option><option>自定义</option></select></p>`;
  656. mdlCropperID = ShowMsg('<div class="float-left" style="width:320px"><p><img id="cropImg~modalID~" src="' + srcURL + '"></p><p>宽度:<span id="cropWidth"></span>px,高度:<span id="cropHeight"></span>px</p>' + optButton + '</div><div class="pv float-right" style="width:200px;height:100px;overflow:hidden"></div>', {
  657. footer: footer,
  658. noClose: false,
  659. title: '图片裁剪',
  660. });
  661. setTimeout(function () {
  662. $("#cropImg" + mdlCropperID).cropper(optCropper);
  663. }, 500);
  664. }
  665. if ($.fn.daterangepicker) {
  666. $('.datepicker').daterangepicker({
  667. "singleDatePicker": true,
  668. "autoApply": true,
  669. "showDropdowns": true,
  670. "linkedCalendars": false,
  671. "timePicker": true,
  672. "timePicker24Hour": true,
  673. "timePickerSeconds": true,
  674. "showCustomRangeLabel": false,
  675. "drops": "up",
  676. ranges: {
  677. '今日': [moment(), moment()],
  678. '昨日': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
  679. '本月': [moment().startOf('month'), moment().startOf('month')],
  680. '上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').startOf('month')]
  681. },
  682. "locale": {
  683. format: 'YYYY-MM-DD HH:mm:ss',
  684. applyLabel: '确定',
  685. cancelLabel: '取消',
  686. daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
  687. monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
  688. firstDay: 1
  689. }
  690. }, function (start) {
  691. $(this).val(start.format("YYYY-MM-DD HH:mm:ss"));
  692. });
  693. $('.datepicker').on('show.daterangepicker', function (ev, picker) {
  694. if (picker.element.offset().top - $(window).scrollTop() + picker.container.outerHeight() > $(window).height()) {
  695. picker.drops = 'up';
  696. } else {
  697. picker.drops = 'down';
  698. }
  699. picker.move();
  700. })
  701. }
  702. });