poster.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>首页菜单</title>
  6. <style>
  7. .box_left {
  8. display: block;
  9. width: 375px;
  10. height: 667px;
  11. border: 5px solid #26B3A0;
  12. position: relative;
  13. }
  14. .box_right {
  15. display: block;
  16. position: absolute;
  17. width: 375px;
  18. right: 0px;
  19. height: 95%;
  20. height: 650px;
  21. overflow-y: scroll
  22. }
  23. .lanmu a {
  24. margin-top: 10px;
  25. }
  26. .settexts {
  27. position: absolute;
  28. font-size: 16px;
  29. cursor: pointer;
  30. z-index: 100;
  31. }
  32. .fountsizes {
  33. width: 80px !important;
  34. position: absolute;
  35. display: inline !important;
  36. height: 24px !important;
  37. }
  38. .selects {
  39. border: 1px solid #26B3A0;
  40. border-radius: 3px
  41. }
  42. .setimgsrc {
  43. width: 80px;
  44. }
  45. .setimgs {
  46. position: absolute;
  47. cursor: pointer;
  48. z-index: 50;
  49. width: auto;
  50. height: auto;
  51. box-shadow: rgba(255,255,255,0.4);
  52. padding:5px;
  53. }
  54. .selectimgs {
  55. border: 1px solid #26B3A0;
  56. padding: 2px;
  57. border-radius: 3px
  58. }
  59. .nbts {
  60. width: 360px;
  61. position: absolute;
  62. bottom: 20px;
  63. z-index: 101;
  64. right: 0px;
  65. }
  66. .box_left{
  67. width: 375px;
  68. height: auto;
  69. }
  70. .bg-img{
  71. display: block;
  72. width: 100%;
  73. height: auto;
  74. }
  75. </style>
  76. </head>
  77. <body class="laytp-container">
  78. <div class="layui-card" id="search-form">
  79. <div class="layui-card-body">
  80. <blockquote class="layui-elem-quote">使用方法:1. 上传背景图,2. 点击左侧二维码,并选中二维码元素拖动,3. 保存配置</blockquote>
  81. <a type="button" href="https://source.iduomi.cc/poster_bg.jpg" target="_blank" download="poster_bg.jpg" class="laytp-btn laytp-btn-primary laytp-btn-sm" >
  82. <i class="layui-icon layui-icon-download-circle"></i>
  83. 下载海报背景图
  84. </a>
  85. <a type="button" href="https://source.iduomi.cc/gpt%E6%B5%B7%E6%8A%A5.ai" target="_blank" download="poster_bg.ai" class="laytp-btn laytp-btn-warning laytp-btn-sm" >
  86. <i class="layui-icon layui-icon-download-circle"></i>
  87. 下载海报源文件
  88. </a>
  89. </div>
  90. </div>
  91. <div class="layui-row layui-col-space10">
  92. <div class="layui-col-xs6 layui-col-sm6 layui-col-md8">
  93. <div class="layui-card">
  94. <div class="layui-card-body" style="display: flex;
  95. justify-content: center;
  96. align-items: center;">
  97. <div class="box_left">
  98. <img class="bg-img" id="bg-img" src="" alt="">
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
  104. <div class="layui-card">
  105. <div class="layui-card-body">
  106. <div class="layui-form-item">
  107. <label class="layui-form-label">背景图片:</label>
  108. <div class="layui-input-block">
  109. <img class="layui-upload-img" id="backimgtmp" style="width: 80px"
  110. src="" />
  111. </div>
  112. <div class="layui-form-mid layui-word-aux" style="margin-left: 30px">当前背景图片尺寸: <span class="bg-width"></span> * <span class="bg-height"></span></div>
  113. <div class="layui-form-mid layui-word-aux" style="margin-left: 30px">建议背景图片尺寸: 375 * 667</span></div>
  114. </div>
  115. <div class="layui-form-item posteryuansu" >
  116. <label class="layui-form-label">海报元素:</label>
  117. <div class="layui-input-block lanmu">
  118. <a href="javascript:;" onclick="setimg('qrcode','二维码',1)"
  119. class="layui-btn layui-btn-primary layui-btn-xs"><i class="layui-icon layui-icon-addition"></i>二维码</a>
  120. </div>
  121. </div>
  122. <div class="layui-form-item" style="display:none">
  123. <label class="layui-form-label">二维码x位置:</label>
  124. <div class="layui-input-block">
  125. <input type="text" class="layui-input" name="name" id="qrcode-x"
  126. value="0" onblur="saveimg()" disabled style="width: 180px;" />
  127. </div>
  128. </div>
  129. <div class="layui-form-item" style="display:none">
  130. <label class="layui-form-label">二维码y位置:</label>
  131. <div class="layui-input-block">
  132. <input type="text" class="layui-input" name="name" id="qrcode-y"
  133. value="0" onblur="saveimg()" disabled style="width: 180px;" />
  134. </div>
  135. </div>
  136. <div class="layui-form-item">
  137. <label class="layui-form-label">二维码宽度:</label>
  138. <div class="layui-input-block">
  139. <input class="layui-input" type="number" fountsizes value="80" id="qrcode-width" onblur="onQrcodeBlur()" style="width: 180px;" />
  140. </div>
  141. </div>
  142. <!-- <div class="layui-form-item" id="posternum"></div> -->
  143. <div class="layui-form-item" style="position: absolute; bottom: 20px; margin-left: 36px">
  144. <input type="hidden" value="" name="bg-width" id="bg-width" />
  145. <input type="hidden" value="" name="textvalue" id="bg-height" />
  146. <input type="hidden" value="" name="setvalue" id="bg-img-id" />
  147. <input type="hidden" value="" name="settitle" id="settitle" />
  148. <input type="hidden" value="{$poster['id']}" name="ids" />
  149. </div>
  150. <!-- <a href="javascript:;" onclick="delimg()" class="layui-btn layui-btn-primary layui-btn-xs" style="margin-left: 110px;margin-bottom: 100px;">重置二维码</a> -->
  151. <button type="submit" class="submit laytp-btn laytp-btn-primary laytp-btn-sm" lay-submit="" lay-filter="add" >
  152. <i class="layui-icon layui-icon-ok"></i>
  153. 保存配置
  154. </button>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. <script src="https://s3.pstatp.com/cdn/expire-1-M/jquery/3.2.1/jquery.min.js"></script>
  160. <script>
  161. if(localStorage.getItem("staticDomain")){
  162. document.write("<link rel='stylesheet' href='" + localStorage.getItem("staticDomain") +
  163. "/component/layui/css/layui.css?v=" + localStorage.getItem("version") + "'>");
  164. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/layui/layui.js?v="+localStorage.getItem("version")+"'><\/script>");
  165. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/laytp/layuiConfig.js?v="+localStorage.getItem("version")+"'><\/script>");
  166. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/jquery.event.ue.js?v="+localStorage.getItem("version")+"'><\/script>");
  167. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/jquery.udraggable.js?v="+localStorage.getItem("version")+"'><\/script>");
  168. }else{
  169. document.write("<link rel='stylesheet' href='" + localStorage.getItem("staticDomain") +
  170. "/component/layui/css/layui.css?v=" + localStorage.getItem("version") + "'>");
  171. document.write("<script src='" + localStorage.getItem("staticDomain") + "/component/layui/layui.js?v="+localStorage.getItem("version")+"'><\/script>");
  172. document.write("<script src='/static/component/layui/layui.js?v="+localStorage.getItem("version")+"'><\/script>");
  173. document.write("<script src='/static/component/laytp/layuiConfig.js?v="+localStorage.getItem("version")+"'><\/script>");
  174. document.write("<script src='/static/component/jquery.event.ue.js?v="+localStorage.getItem("version")+"'><\/script>");
  175. document.write("<script src='/static/component/jquery.udraggable.js?v="+localStorage.getItem("version")+"'><\/script>");
  176. }
  177. </script>
  178. <script>
  179. let dom,ratio=0,qrcode_ratio_width,qrcode_ratio_height;
  180. layui.use(['laytp', 'drawer','element'], function() {
  181. var group = "system.commission";
  182. var upload = layui.upload;
  183. var drawer = layui.drawer;
  184. var element = layui.element;
  185. let form = layui.form;
  186. let $ = layui.jquery;
  187. // 先获取数据,渲染表单
  188. // 渲染完表单之后,设置滚动条
  189. facade.ajax({
  190. route: "/admin.conf/getGroupConf",
  191. data: {
  192. "group": group
  193. },
  194. successAlert: false,
  195. showLoading: true
  196. }).done(function(res) {
  197. if (res.code === 0) {
  198. // layui.laytpl($("#form").html()).render(res.data, function (string) {
  199. // $("form").html(string);
  200. // layui.laytpForm.render();
  201. // form.render();
  202. // });
  203. if(res.data.poster_bg_img){
  204. $('#backimgtmp').attr('src', res.data.poster_bg_img_path);
  205. $('#bg-img').attr('src', res.data.poster_bg_img_path);
  206. $('#bg-img-id').val(res.data.poster_bg_img)
  207. }else{
  208. $('#backimgtmp').attr('src', localStorage.getItem("staticDomain")+'/admin/images/uploadimg.png');
  209. }
  210. if(res.data.poster_bg_width){
  211. $('.bg-width').text(res.data.poster_bg_width)
  212. $('.bg-height').text(res.data.poster_bg_height)
  213. $('#bg-width').val(res.data.poster_bg_width)
  214. $('#bg-height').val(res.data.poster_bg_height)
  215. ratio = res.data.poster_bg_width/375;
  216. qrcode_ratio_width = res.data.poster_qrcode_width/ratio;
  217. qrcode_ratio_height = res.data.poster_qrcode_width/ratio;
  218. console.log(qrcode_ratio_width);
  219. }
  220. if(res.data.poster_qrcode_x){
  221. $('#qrcode-width').val(res.data.poster_qrcode_width)
  222. $('#qrcode-x').val(res.data.poster_qrcode_x/ratio)
  223. $('#qrcode-y').val(res.data.poster_qrcode_y/ratio)
  224. $('.box_left').prepend('<div class="setimgs" id="qrcode"><img src="'+localStorage.getItem("staticDomain")+'/admin/images/qrcode.png'+'" onclick="imgstyle(\'' + 'qrcode' + '\')" class="setimgsrc" style="width:' + res.data.poster_qrcode_width/ratio + 'px;height:' + res.data.poster_qrcode_width/ratio + 'px;" id="qrcode-img" /></div>');
  225. $('#qrcode').css("inset", res.data.poster_qrcode_y/ratio + "px auto auto " + res.data.poster_qrcode_x/ratio + "px");
  226. }
  227. }
  228. });
  229. $('#btnClose').on('click',function(){
  230. dom.close();
  231. });
  232. var ajaxHeaders = {};
  233. ajaxHeaders[layui.context.get("tokenKey")] = facade.getCookie(layui.context.get("tokenCookieKey"));
  234. var uploadInst = upload.render({
  235. headers: ajaxHeaders,
  236. elem: '#backimgtmp',
  237. data: {
  238. accept: "image",
  239. height: "0",
  240. upload_type: "local",
  241. width: "0",
  242. is_get_image_info: "1",
  243. },
  244. accept: 'image',
  245. multiple:false,
  246. field: "laytpUploadFile",
  247. url: facade.url("/admin.common/upload"),
  248. before: function (obj) {
  249. obj.preview(function (index, file, result) {
  250. $('#backimgtmp').attr('src', result); //图片链接(base64)
  251. //图片链接(base64)
  252. });
  253. },
  254. done: function (res) {
  255. if (res.code === 1) {
  256. facade.error(res["msg"], "失败提示");
  257. return;
  258. }
  259. facade.success(res.msg);
  260. // $('.box_left').css('background', 'url("' + res.data.path + '") no-repeat');
  261. $('#bg-img').attr('src', res.data.path);
  262. $('.bg-width').text(res.data.width)
  263. $('.bg-height').text(res.data.height)
  264. $('#bg-width').val(res.data.width)
  265. $('#bg-height').val(res.data.height)
  266. $('#bg-img-id').val(res.data.id)
  267. ratio = res.data.width/375;
  268. // getposter()
  269. },
  270. error: function () {
  271. return layer.msg('上传失败');
  272. },
  273. });
  274. })
  275. $('.submit').on('click',function(){
  276. // alert(ratio)
  277. // return;
  278. var field = {
  279. 'poster_bg_width': $('#bg-width').val(),
  280. 'form_type[poster_bg_width]': 'input',
  281. 'poster_bg_height': $('#bg-height').val(),
  282. 'form_type[poster_bg_height]': 'input',
  283. 'poster_qrcode_x': $('#qrcode-x').val()*ratio,
  284. 'form_type[poster_qrcode_x]': 'input',
  285. 'poster_qrcode_y': $('#qrcode-y').val()*ratio,
  286. 'form_type[poster_qrcode_y]': 'input',
  287. 'poster_bg_img': $('#bg-img-id').val(),
  288. 'form_type[poster_bg_img]': 'upload',
  289. 'poster_qrcode_width': $('#qrcode-width').val(),
  290. 'form_type[poster_qrcode_width]': 'upload'
  291. };
  292. field.group = "system.commission";
  293. facade.ajax({
  294. route: '/admin.conf/saveGroupConf',
  295. data: field
  296. }).done(function (res) {
  297. if (res.code === 0) {
  298. parent.layui.layer.close(parent.layui.layer.getFrameIndex(window
  299. .name)); //关闭当前页
  300. parent.layui.table.reload("laytp-table");
  301. }
  302. // btnAnim.stop();
  303. }).fail(function () {
  304. // btnAnim.stop();
  305. });
  306. })
  307. </script>
  308. <script>
  309. function onQrcodeBlur(){
  310. console.log(ratio)
  311. $('.setimgsrc').css('width',$('#qrcode-width').val()/ratio )
  312. $('.setimgsrc').css('height',$('#qrcode-width').val()/ratio )
  313. }
  314. function requesturl(action = '') {
  315. var tourl = '{:addons_url("poster/lists/xxxx")}';
  316. return tourl.replace(new RegExp('xxxx', 'g'), action);
  317. }
  318. function initBgImg(){}
  319. function getposter() {
  320. $(".box_left").html("");
  321. // $.post(requesturl('getposter'), $('#addform').serialize(), function (r) {
  322. // if (r.backimg) {
  323. $('.box_left').css('background', 'url("' + 'https://dev.iduomi.cc/attachment/headimg_2.jpg?time=1684491452' + '") no-repeat');
  324. $('#backimgtmp').attr('src', 'https://dev.iduomi.cc/attachment/headimg_2.jpg?time=1684491452');
  325. $('.posteryuansu').show();
  326. // }
  327. // if (r.text) {
  328. // for (var i = 0; i < r.text.length; i++) {
  329. // if ($('#' + r.text[i].name).length > 0) {
  330. //
  331. // } else {
  332. // $('.box_left').prepend('<div onclick="textstyle(\'' + r.text[i].name + '\')" class="settexts" id="' + r.text[i].name + '">' + r.text[i].data.title + '</div>');
  333. // }
  334. // $('#' + r.text[i].name).css("color", r.text[i].data.color ? r.text[i].data.color : "#000000");
  335. // $('#' + r.text[i].name).css("font-size", (r.text[i].data.size ? r.text[i].data.size : 16) + "px");
  336. // $('#' + r.text[i].name).html(r.text[i].data.title ? r.text[i].data.title : "文字");
  337. // $('#' + r.text[i].name).css("inset", r.text[i].data.y + "px auto auto " + r.text[i].data.x + "px");
  338. // }
  339. // }
  340. // if (r.image) {
  341. // for (var i = 0; i < r.image.length; i++) {
  342. // if ($('#' + r.image[i].name).length > 0) {
  343. //
  344. // } else {
  345. // if(r.image[i].name=='qrcode'||r.image[i].name=='syscode'){
  346. // $('.box_left').prepend('<div class="setimgs" id="' + r.image[i].name + '" ><img src="{$codeurl}static/web/image/'+r.image[i].name+'.png" onclick="imgstyle(\'' + r.image[i].name + '\')" class="setimgsrc" style="width:' + r.image[i].data.width + 'px;height:' + r.image[i].data.height + 'px;" id="' + r.image[i].name + 'img" /></div>');
  347. // } else {
  348. // $('.box_left').prepend('<div class="setimgs" id="' + r.image[i].name + '" ><img src="' + r.image[i].data.saveurl + '" onclick="imgstyle(\'' + r.image[i].name + '\')" class="setimgsrc" style="width:' + r.image[i].data.width + 'px;height:' + r.image[i].data.height + 'px;" id="' + r.image[i].name + 'img" /></div>');
  349. // }
  350. // }
  351. // $('#' + r.image[i].name).css("inset", r.image[i].data.y + "px auto auto " + r.image[i].data.x + "px");
  352. // }
  353. // }
  354. // if (r.name) {
  355. // $('#poster_name').val(r.name);
  356. // }
  357. // });
  358. }
  359. function settext(textid, title, tps = 0) {
  360. var tpsnum = '';
  361. if ($('#' + textid).length > 0 && tps == 1) {
  362. layer.msg('元素已存在');
  363. return;
  364. } else {
  365. if (tps == 0) {
  366. var thistimes = new Date();
  367. tpsnum = thistimes.getHours().toString() + thistimes.getMinutes().toString() + thistimes.getSeconds().toString();
  368. }
  369. }
  370. $('.box_left').prepend('<div onclick="textstyle(\'' + textid + tpsnum + '\')" class="settexts" id="' + textid + tpsnum + '">' + title + '</div>');
  371. textstyle(textid + tpsnum, tps);
  372. $('#setvalue').val(textid + tpsnum);
  373. $('#settitle').val(title);
  374. console.log(tps);
  375. }
  376. function textstyle(textid, tps = 0) {
  377. // $('#posternum').html("");
  378. $('.settexts').removeClass("selects");
  379. $('.setimgs').removeClass("selectimgs");
  380. $('#setvalue').val(textid);
  381. $('#textvalue').val(textid);
  382. $("#" + textid).addClass("selects");
  383. // console.log($('#' + textid + 'muninfo').length);
  384. if ($('#' + textid + 'muninfo').length < 1 || $('#' + textid + 'muninfo').val() != 1 || $('#' + textid + 'muninfo').val() == undefined) {
  385. $.get(requesturl('gettext'), $('#addform').serialize(), function (r) {
  386. $html = '<label class="layui-form-label">文字设置:</label><div class="layui-input-block lanmu"><label>颜色</label><div id="' +
  387. textid +
  388. 'bt" style="margin-left:10px;"></div><input onblur="savetxt()" id="' +
  389. textid +
  390. 'color" name="color" type="hidden" value="' +
  391. (r.color ? r.color : '#000000') +
  392. '" /></br><div class="numitems"><label>字体大小</label><input onblur="savetxt()" type="number" id="' +
  393. textid +
  394. 'size" name="size" class="layui-input fountsizes" value="' +
  395. (r.size ? r.size : 16) +
  396. '" style="margin-left:10px;" /><span style="margin-left: 100px">px</span></div></br><div class="numitems"><label>位置 </label>X:<input onblur="savetxt()" type="number" id="' +
  397. textid +
  398. 'x" name="x" class="layui-input fountsizes" value="' +
  399. (r.x ? r.x : 0) +
  400. '" style="margin-left:10px;" /></div></br><div class="numitems">位置 Y:<input onblur="savetxt()" type="number" id="' +
  401. textid +
  402. 'y" name="y" class="layui-input fountsizes" value="' +
  403. (r.y ? r.y : 0) +
  404. '" style="margin-left:10px;" /></div></br>';
  405. if (r.texttypes > 0 || tps > 0) {
  406. $html += '<div class="numitems">' +
  407. (r.title ? r.title : ($('#settitle').val() ? $('#settitle').val() : '文字')) +
  408. '</div>'
  409. } else {
  410. $html += '<div class="numitems">自定义文字:<input onblur="savetxt()" type="text" id="' +
  411. textid +
  412. 'txt" name="txt" class="layui-input fountsizes" value="' +
  413. (r.title ? r.title : ($('#settitle').val() ? $('#settitle').val() : '文字')) +
  414. '" style="margin-left:10px;width: 150px !important;" /></div>'
  415. }
  416. $html += '</div></br><input type="hidden" value="1" name="' +
  417. textid +
  418. 'muninfo" id="' +
  419. textid +
  420. 'muninfo" /><a href="javascript:;" onclick="deltext()" class="layui-btn layui-btn-primary layui-btn-xs" style="margin-left: 110px;margin-bottom: 100px;">删除元素</a>'
  421. $('#posternum').html($html);
  422. $('#texttypes').val(r.texttypes ? r.texttypes : tps);
  423. $('#settitle').val(r.title ? r.title : ($('#settitle').val() ? $('#settitle').val() : '文字'));
  424. setcolor(textid, r.color ? r.color : '#000000');
  425. });
  426. }
  427. udraggables(textid);
  428. }
  429. function setcolor(textid, colors = '#000000') {
  430. layui.use('colorpicker', function () {
  431. var colorpicker = layui.colorpicker;
  432. colorpicker.render({
  433. elem: '#' + textid + 'bt',
  434. color: colors,
  435. done: function (color) {
  436. $('#' + textid + 'color').val(color);
  437. $('#' + textid).css("color", color);
  438. $('#setvalue').val(textid);
  439. savetxt();
  440. },
  441. });
  442. });
  443. }
  444. function savetxt() {
  445. $.post(requesturl('settext'), $('#addform').serialize(), function (r) {
  446. getposter();
  447. });
  448. }
  449. function saveimg() {
  450. $.post(requesturl('saveimage'), $('#addform').serialize(), function (r) {
  451. getposter();
  452. });
  453. }
  454. function udraggables(textid) {
  455. $('#' + textid).udraggable({
  456. distance: 0,
  457. containment: 'parent',
  458. disable: true,
  459. start: function () {
  460. $('#setvalue').val(textid);
  461. $('#textvalue').val(textid);
  462. },
  463. positionElement: function ($el, dragging, x, y) {
  464. if (dragging) {
  465. $el.css({
  466. left: 'auto',
  467. top: 'auto',
  468. transform: 'translate(' + x + 'px,' + y + 'px)',
  469. });
  470. $('#' + textid + 'x').val(x);
  471. $('#' + textid + 'y').val(y);
  472. } else {
  473. $el.css({
  474. left: x,
  475. top: y,
  476. transform: 'none',
  477. });
  478. $('#' + textid + 'x').val(x);
  479. $('#' + textid + 'y').val(y);
  480. $('#setvalue').val(textid), $.post(requesturl('settext'), $('#addform').serialize(), function (r) {
  481. $('#textvalue').val(textid);
  482. $("#" + textid).addClass("selects");
  483. getposter();
  484. });
  485. }
  486. }
  487. });
  488. }
  489. function deltext() {
  490. layer.msg('你确定删除?删除后不可恢复', {
  491. time: 0 //不自动关闭
  492. , btn: ['删除', '取消']
  493. , yes: function (index) {
  494. layer.close(index);
  495. $.post(requesturl('deltext'), $('#addform').serialize(), function (r) {
  496. $("#" + $('#setvalue').val()).remove();
  497. $('#posternum').html("");
  498. getposter();
  499. });
  500. }
  501. });
  502. }
  503. function delimg() {
  504. layer.msg('你确定删除?删除后不可恢复', {
  505. time: 0 //不自动关闭
  506. , btn: ['删除', '取消']
  507. , yes: function (index) {
  508. layer.close(index);
  509. $("#" + $('#setvalue').val()).remove();
  510. $('#qrcode').html("");
  511. $('.settexts').removeClass("selects");
  512. $('.setimgs').removeClass("selectimgs");
  513. $('#qrcode-x').val(0)
  514. $('#qrcode-y').val(0)
  515. }
  516. });
  517. }
  518. function setimg(textid, title, tps = 0) {
  519. var thistimes = new Date();
  520. var tpsnum = '';
  521. if(!$('#bg-img-id').val()){
  522. layer.msg('请上传背景图');
  523. return;
  524. }
  525. if ($('#' + textid).length > 0 && tps == 1) {
  526. layer.msg('元素已存在');
  527. return;
  528. } else {
  529. if (tps == 0) {
  530. var thistimes = new Date();
  531. tpsnum = thistimes.getHours().toString() + thistimes.getMinutes().toString() + thistimes.getSeconds().toString();
  532. }
  533. }
  534. $('.box_left').prepend('<div class="setimgs" id="' + textid + tpsnum + '"><img src="'+localStorage.getItem("staticDomain")+'/admin/images/qrcode.png'+'" style="width:' + 80/ratio + 'px;height:' + 80/ratio + 'px;" onclick="imgstyle(\'' + textid + tpsnum + '\')" class="setimgsrc" id="' + textid + tpsnum + 'img" /></div>');
  535. imgstyle(textid + tpsnum);
  536. $('#setvalue').val(textid + tpsnum);
  537. $('#settitle').val(title);
  538. }
  539. function imgstyle(textid) {
  540. if ($('#' + textid + 'muninfo').length > 0 || $('#' + textid + 'muninfo').val() > 0 || $('#' + textid + 'muninfo').val() != undefined) {
  541. setTimeout(function () {
  542. loadimg(textid);
  543. }, 100);
  544. }
  545. $('.settexts').removeClass("selects");
  546. $('.setimgs').removeClass("selectimgs");
  547. $('#setvalue').val(textid);
  548. $('#textvalue').val(textid);
  549. $('#' + textid).addClass("selectimgs");
  550. // return;
  551. // $.get(requesturl('getimg'), $('#addform').serialize(), function (r) {
  552. $('#posternum').html(
  553. '<label class="layui-form-label">图片设置:</label><input id="' +
  554. textid + 'savepath" name="savepath" type="hidden" value="https://dev.iduomi.cc/attachment/headimg_2.jpg?time=1685440884" /><input id="' +
  555. textid + 'saveurl" name="saveurl" type="hidden" value="https://dev.iduomi.cc/attachment/headimg_2.jpg?time=1685440884" /></br></br><div class="numitems"><label>位置 </label>X:<input onblur="saveimg()" type="number" id="' +
  556. textid +
  557. 'x" name="x" class="layui-input fountsizes" value="' +
  558. ( 0) +
  559. '" style="margin-left:10px;" /></div></br><div class="numitems">位置 Y:<input onblur="saveimg()" type="number" id="' +
  560. textid +
  561. 'y" name="y" class="layui-input fountsizes" value="' +
  562. (0) +
  563. '" style="margin-left:10px;" /></div></br><div class="numitems">宽度 :<input onblur="saveimg()" type="number" id="' +
  564. textid +
  565. 'width" name="width" class="layui-input fountsizes" value="' +
  566. (80) +
  567. '" style="margin-left:10px;" /></div></br><div class="numitems">高度 :<input onblur="saveimg()" type="number" id="' +
  568. textid +
  569. 'height" name="height" class="layui-input fountsizes" value="' +
  570. (80) +
  571. '" style="margin-left:10px;" /></div></br></div></br><input type="hidden" value="1" name="' +
  572. textid +
  573. 'muninfo" id="' +
  574. textid +
  575. 'muninfo" /><a href="javascript:;" onclick="delimg()" class="layui-btn layui-btn-primary layui-btn-xs" style="margin-left: 110px;margin-bottom: 100px;">删除元素</a>'
  576. );
  577. setcolor(textid, '#000000');
  578. // });
  579. udraggableimgs(textid);
  580. }
  581. function udraggableimgs(textid) {
  582. $('#' + textid).udraggable({
  583. distance: 15,
  584. containment: 'parent',
  585. disable: true,
  586. start: function () {
  587. $('#setvalue').val(textid);
  588. $('#textvalue').val(textid);
  589. },
  590. positionElement: function ($el, dragging, x, y) {
  591. if (dragging) {
  592. $el.css({
  593. left: 'auto',
  594. top: 'auto',
  595. transform: 'translate(' + x + 'px,' + y + 'px)',
  596. });
  597. $('#' + textid + '-x').val(x);
  598. $('#' + textid + '-y').val(y);
  599. } else {
  600. $el.css({
  601. left: x,
  602. top: y,
  603. transform: 'none',
  604. });
  605. $('#' + textid + '-x').val(x);
  606. $('#' + textid + '-y').val(y);
  607. // $('#setvalue').val(textid);
  608. // $('#textvalue').val(textid);
  609. $("#" + textid).addClass("selectimgs");
  610. }
  611. }
  612. });
  613. }
  614. function loadimg(textid) {
  615. // console.log(textid)
  616. var upurl = requesturl('upimage');
  617. layui.use(['upload', 'element', 'layer'], function () {
  618. var upload = layui.upload,
  619. element = layui.element,
  620. form = layui.form,
  621. layer = layui.layer;
  622. console.log(textid)
  623. var uploadInst = upload.render({
  624. elem: '#' + textid + 'upimg',
  625. data: form.val('addform'),
  626. url: upurl,
  627. done: function (res) {
  628. console.log(res);
  629. if (res.code != 1) {
  630. return layer.msg('上传失败');
  631. } else {
  632. $('#' + textid + 'upimg').attr("src", res.saveurl);
  633. $('#' + textid + 'img').attr("src", res.saveurl);
  634. $('#' + textid + 'savepath').val(res.savepath);
  635. $('#' + textid + 'saveurl').val(res.saveurl);
  636. $('#setvalue').val(textid), $.post(requesturl('saveimage'), $('#addform').serialize(), function (r) {
  637. $('#textvalue').val(textid);
  638. $("#" + textid).addClass("selectimgs");
  639. getposter();
  640. });
  641. }
  642. },
  643. error: function () {
  644. return layer.msg('上传失败');
  645. },
  646. });
  647. });
  648. }
  649. function saveall() {
  650. getposter();
  651. }
  652. function showposter(ids,types){
  653. var title='输入职位ID,并确认!请在职位处获取ID';
  654. if(types==2){
  655. title='输入简历ID,并确认!请在简历处获取ID';
  656. }
  657. layer.prompt({title: title, formType: 3}, function(text, index){
  658. layer.close(index);
  659. $.get(requesturl('showposter'),{ids:ids,postids:text} , function (r) {
  660. if(r.code>0){
  661. layer.msg(r.data);
  662. } else {
  663. layer.open({
  664. type: 1,
  665. title: '海报预览',
  666. shadeClose: true,
  667. shade: 0.8,
  668. area: ['395px', '737px'],
  669. content: '<img style="width:375px;height:667px;margin-left: 10px;margin-top:10px;" src="'+r.data+'" />',
  670. });
  671. }
  672. });
  673. });
  674. }
  675. </script>
  676. </body>
  677. </html>