config.zml 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959
  1. <#---------------------------------------------------->
  2. <#-- 以下为变量定义 ------------------------>
  3. <#---------------------------------------------------->
  4. <#--脚注标注-->
  5. <#var zmr_copyname="2023 领淘众创"/>
  6. <#var zmr_copyright="Copyright&nbsp;&nbsp;&copy;&nbsp;"+zmr_copyname+"&nbsp;All&nbsp;Rights&nbsp;Reserved"/>
  7. ${Styles.src(zhiqim.css)}
  8. ${Scripts.src(zhiqim.js)}
  9. ${Styles.src(context.getRootPath("/zinc/css/yangcai_question_main_v1.4.0R2018031701.css"))}
  10. ${Scripts.src(context.getRootPath("/zinc/css/zhiqim_search_auto_list_v1.4.0R2018031701.js"))}
  11. <#--属性定义-->
  12. <#var name="设计师工作台"/>
  13. <#var version="V4.0"/>
  14. <#var zhiqim_uploadlarge.js = new ZmrCdnRuntime(context, "/service/res/zhiqim_upload_large_v1.5.0.r2018111001.js")/>
  15. <#--刷新左边区域自定义块-->
  16. <#function zhiqim_manager_topnav_left_defined()>
  17. <a class="nav-item" href="/question.htm" target="_blank">知识库</a>
  18. <div class="my-message" onclick="Z.L.href('${context.getRootPath("/manager/message.htm")}');"><img src="/zinc/images/message_icon.png" /></div>
  19. <script>
  20. Z.onload(function()
  21. {
  22. //工作台任务轮询,3分钟一次
  23. var ajax = new Z.Ajax();
  24. ajax.setClassName("ConsolePresenter");
  25. ajax.setMethodName("doDesignBacklogAffairNum");
  26. ajax.setSuccess(function(responseText){
  27. //Z("#backLogNum").text(responseText);
  28. });
  29. ajax.execute();
  30. setInterval(function()
  31. {
  32. var ajax = new Z.Ajax();
  33. ajax.setClassName("ConsolePresenter");
  34. ajax.setMethodName("doDesignBacklogAffairNum");
  35. ajax.setSuccess(function(responseText){
  36. //Z("#backLogNum").text(responseText);
  37. });
  38. ajax.execute();
  39. }, 180000);
  40. });
  41. </script>
  42. </#function>
  43. <#-- 不同商户展示控制-->
  44. <#function mercolumn_js(pageCode, pageName, orgId)>
  45. ${Scripts.src("/zinc/js/mercolumn_2018102301.js")}
  46. <script>
  47. Z.onload(function(){
  48. try{Mercolumn.doShowMerPageColumn('${pageCode}', '${pageName}', '${orgId}');}catch(e){console.error(e)}
  49. })
  50. </script>
  51. </#function>
  52. <#-- 重写模板编辑版本号-->
  53. <#var media_editor_js_version="v1.5.0_r2020121101"/>
  54. <#-- 重写模板定稿、预览-->
  55. <#function zhqim_media_edit_print(mediaId)>
  56. <script>
  57. //提交初稿设计订单
  58. function doSubmitDraftOrderTempalte(mediaId)
  59. {
  60. var dzmpPreviewUrl = "";
  61. var orderIsDzmpCardType = '${orderIsCardType}';
  62. if (orderIsDzmpCardType == 'true') {
  63. // 保存名片关联信息
  64. doUpdateCardInfo('${cardId}','${designId}', false);
  65. dzmpPreviewUrl = "https://design.yangcai365.com/preview/" + '${cardId}' + "&preview=true";
  66. }
  67. // 保存后的回调方法
  68. function callbackAfterSave(mediaId)
  69. {
  70. var ajax2 = new Z.Ajax();
  71. ajax2.setClassName("TemplateOrderPresenter");
  72. ajax2.setMethodName("doSubmitDraftOrderTempalte");
  73. ajax2.addParam("mediaId", mediaId);
  74. ajax2.addParam("dzmpPreviewUrl", encodeURI(dzmpPreviewUrl));
  75. ajax2.setFailure(function(){
  76. setTimeout(function()
  77. {
  78. doDraftOrder_ajaxLoading.close()
  79. Z.failure(ajax2.responseText);
  80. },400);
  81. });
  82. ajax2.setSuccess(function(){
  83. setTimeout(function()
  84. {
  85. doDraftOrder_ajaxLoading.close();
  86. Z.success("初稿成功");
  87. },400);
  88. });
  89. ajax2.execute();
  90. }
  91. // 1:定义加载框
  92. window.doDraftOrder_ajaxLoading = Z.loading({text:"正在提交初稿文件,请稍后...", shadow:true , width:400});
  93. if (hasSvg2pdfAPI)
  94. {
  95. doSubmitDraftLocalSave(callbackAfterSave, mediaId);
  96. }
  97. else
  98. {
  99. doAutoSaveMedia(callbackAfterSave, mediaId, true);
  100. }
  101. }
  102. //完成定稿,预览设计稿
  103. function doPreviewFinalOrderTempalte(mediaId)
  104. {
  105. //生成PDF文件并预览展示,保存后的回调方法
  106. function callbackAfterSave(mediaId)
  107. {
  108. var doHandle = (hasSvg2pdfAPI) ? 0 : 1;
  109. var ajax = new Z.Ajax();
  110. ajax.setClassName("TemplateOrderPresenter");
  111. ajax.setMethodName("doPreviewFinalOrderTempalte");
  112. ajax.addParam("mediaId", mediaId);
  113. ajax.addParam("doHandle", doHandle);
  114. ajax.setFailure(function(){
  115. previewFinal_ajaxLoading.close();
  116. Z.failure(ajax.responseText);
  117. });
  118. ajax.setSuccess(function(){
  119. doPreviewFinalOrderDialog(mediaId);
  120. });
  121. ajax.execute();
  122. }
  123. //检测订单模板的版面数
  124. var ajax = new Z.Ajax();
  125. ajax.setClassName("TemplateOrderPresenter");
  126. ajax.setMethodName("doCheckTempatePage");
  127. ajax.addParam("mediaId", mediaId);
  128. ajax.setFailure(function(){
  129. Z.failure(ajax.responseText);
  130. });
  131. ajax.setSuccess(function()
  132. {
  133. //加载框
  134. window.previewFinal_ajaxLoading = Z.loading({shadow: true, text:"定稿预览处理中...", width:200});
  135. if (hasSvg2pdfAPI)
  136. {
  137. callbackAfterSave(mediaId);
  138. }
  139. else
  140. {
  141. doAutoSaveMedia(callbackAfterSave, mediaId, true);
  142. }
  143. });
  144. ajax.setLoading(document, true);
  145. ajax.execute();
  146. }
  147. //预览定稿展示
  148. function doPreviewFinalOrderDialog(mediaId)
  149. {
  150. if (hasSvg2pdfAPI)
  151. {
  152. ServiceAPI.mediaId = mediaId;
  153. doPreviewFileLocalSave(previewFinal_ajaxLoading);
  154. }
  155. else
  156. {
  157. doPreviewDialogQuery(mediaId);
  158. }
  159. }
  160. function previewPdfLocal()
  161. {//重写pdfMaker,预览pdf方法
  162. // ajax 查询订单金额
  163. var amount = 0;
  164. var ajax = new Z.Ajax();
  165. ajax.setSync();
  166. ajax.setClassName("TemplateOrderPresenter");
  167. ajax.setMethodName("doQueryOrderAmount");
  168. ajax.addParam("mediaId", media.canvas.mediaId);
  169. ajax.setFailure(function(){
  170. previewFinal_ajaxLoading.close();
  171. });
  172. ajax.setSuccess(function(){
  173. amount = parseFloat(this.responseText || 0);
  174. });
  175. ajax.execute();
  176. if (amount <= 0)
  177. return doClearErrorLocalSave("订单金额查询有误!");
  178. previewFinal_ajaxLoading.close();
  179. var mediaId = ServiceAPI.mediaId;
  180. var height = Z.D.clientHeight() - 200;
  181. var html = '<div id="previewId" class="z-text-center" style="height:'+height+'px">';
  182. //html += ' <object type="text/html" width="100%" height="100%" data="'+objUrl+'"></object>';
  183. //html += ' <iframe width="100%" height="100%" src="'+objUrl.+'"></iframe>';
  184. //html += '<embed src="'+objUrl+'" type="application/pdf" width="100%" height="100%">';
  185. //html += '<embed src="'+objUrl+'" type="text/html" width="100%" height="100%">';
  186. //html += ' <object type="application/pdf" width="100%" height="100%" data="'+objUrl+'"></object>';
  187. html += '</div>';
  188. html += '<div class="z-absolute z-w100p z-h60 z-text-center z-bg-gray z-pd10" style="bottom:0;left:0">';
  189. html += ' <button id="save" type="button" class="z-button z-large z-w120 z-cyan"';
  190. html += 'onclick="confirmSubmitFinalOrderTempalte('+mediaId+','+amount+')">完成定稿</button>&nbsp;';
  191. html += ' <button type="button" class="z-button z-large z-mg-l10" onclick="previewPdfDialogLocal.close();">关闭</button>';
  192. html += '</div>';
  193. top.previewPdfDialogLocal = new Z.Dialog();
  194. previewPdfDialogLocal.title = "预览定稿文件";
  195. previewPdfDialogLocal.text = html;
  196. previewPdfDialogLocal.width = parseInt(Z.D.clientWidth()/2);
  197. previewPdfDialogLocal.height = parseInt(height + 60);
  198. previewPdfDialogLocal.fixed = true;
  199. previewPdfDialogLocal.execute();
  200. // 重写弹窗关闭方法
  201. var closeFun = previewPdfDialogLocal.close;
  202. previewPdfDialogLocal.close = function()
  203. {
  204. closeFun.call(previewPdfDialogLocal);
  205. previewPdfDialogLocal = null;
  206. doClearPreviewLocalSave();
  207. }
  208. previewPdfDialogLocal.$title.find(".z-font.z-error").hide();
  209. Z('<i class="z-font z-error"></i>').appendTo(previewPdfDialogLocal.$title).on("click",previewPdfDialogLocal.close);
  210. // pdfJs显示效果
  211. pdfjsLib.renderAllFromData({node:"#previewId",scale:300/72},ServiceAPI.pdfFinaly.result).then(function()
  212. {
  213. // 样式校准
  214. var previewWidth = Z.D.id("previewId").getBoundingClientRect().width - 30;
  215. var $$canvas = Z("#previewId canvas");
  216. $$canvas.each(function($canvas)
  217. {
  218. var canvasWidth = $canvas.width;
  219. if (previewWidth > canvasWidth)
  220. return;
  221. var canvasHeight = $canvas.height;
  222. $canvas.style.width = previewWidth + "px";
  223. $canvas.style.height = previewWidth/canvasWidth*canvasHeight + "px";
  224. });
  225. });
  226. }
  227. //定稿预览显示
  228. function doPreviewDialogQuery(mediaId)
  229. {
  230. //ajax查询处理状态
  231. function doQueryPreviewProgressing(mediaId)
  232. {
  233. var ajax = new Z.Ajax();
  234. ajax.setClassName("TemplateOrderPresenter");
  235. ajax.setMethodName("doQueryPreviewFinalOrderTempalteProgressing");
  236. ajax.addParam("mediaId", mediaId);
  237. ajax.setFailure(function(){
  238. previewFinal_ajaxLoading.close();
  239. Z.failure(ajax.responseText);
  240. });
  241. ajax.setSuccess(function(){
  242. var obj = Z.J.toObject(ajax.responseText);
  243. var mediaHandlePdfModel = obj.mediaHandlePdfModel;
  244. if (mediaHandlePdfModel)
  245. {
  246. console.log("预览处理状态:"+mediaHandlePdfModel.handleStatus)
  247. if (mediaHandlePdfModel.handleStatus == 0 || mediaHandlePdfModel.handleStatus == 1)
  248. {// 待处理 // 处理中
  249. setTimeout(doQueryPreviewProgressing, 5000, mediaId);
  250. }
  251. else if (mediaHandlePdfModel.handleStatus == 3)
  252. {//处理失败
  253. previewFinal_ajaxLoading.close();
  254. Z.failure(mediaHandlePdfModel.errorMsg);
  255. }
  256. else if (mediaHandlePdfModel.handleStatus == 2)
  257. {// 处理完成
  258. previewFinal_ajaxLoading.close();
  259. var height = Z.D.clientHeight() - 200;
  260. var amount = obj.amount;
  261. var html = '<div id="previewId" style="height:'+height+'px">';
  262. html += window.pdfjsLib?'':'<object type="text/html" width="100%" height="100%" data="'+obj.url+'"></object>';
  263. html += '</div>';
  264. html += '<div class="z-absolute z-w100p z-h60 z-text-center z-bg-gray z-pd10" style="bottom:0;left:0">';
  265. html += ' <button id="save" type="button" class="z-button z-large z-w120 z-cyan" onclick="confirmSubmitFinalOrderTempalte('+mediaId+','+amount+')">完成定稿</button>&nbsp;';
  266. html += ' <button type="button" class="z-button z-large z-mg-l10" onclick="Z.Dialog.close(location.hash);">关闭</button>';
  267. html += '</div>';
  268. var dialog = new Z.Dialog();
  269. dialog.title = "预览定稿文件";
  270. dialog.text = html;
  271. dialog.width = parseInt(Z.D.clientWidth()/2);
  272. dialog.height = parseInt(height + 60);
  273. dialog.fixed = true;
  274. dialog.execute();
  275. window.pdfjsLib && pdfjsLib.renderAll("#previewId", obj.url);
  276. }
  277. else
  278. {
  279. previewFinal_ajaxLoading.close();
  280. console.log("定稿预览收到异常处理状态")
  281. }
  282. }
  283. else
  284. {//查不到处理对象
  285. previewFinal_ajaxLoading.close();
  286. console.log("定稿预览找不到处理对象")
  287. Z.failure("预览处理失败");
  288. }
  289. });
  290. ajax.execute();
  291. }
  292. //延时处理 查询
  293. setTimeout(doQueryPreviewProgressing, 500, mediaId);
  294. }
  295. //确认定稿操作
  296. function confirmSubmitFinalOrderTempalte(mediaId, amount)
  297. {
  298. //提交定稿确认弹窗
  299. var tips = "确定完成对稿吗?定稿后该订单模板不再支持修改!";
  300. if (amount >= 10000)
  301. {
  302. tips="此订单金额较大,请仔细核对无误再定稿,以免造成售后损失。定稿后该订单模板不再支持修改!"
  303. }
  304. Z.confirm(tips, function()
  305. {
  306. var ajax = new Z.Ajax();
  307. ajax.setClassName("TemplateOrderPresenter");
  308. ajax.setMethodName("doCheckTempatePage");
  309. ajax.addParam("mediaId", mediaId);
  310. ajax.setFailure(function(){
  311. Z.failure(ajax.responseText);
  312. });
  313. ajax.setSuccess(function()
  314. {
  315. //加载筐
  316. window.submitFinal_ajaxLoading = Z.loading({shadow: true, text:"定稿处理中...", width:180});
  317. var doHandle = (hasSvg2pdfAPI) ? 0 : 1;
  318. var ajax2 = new Z.Ajax();
  319. ajax2.setClassName("TemplateOrderPresenter");
  320. ajax2.setMethodName("doSubmitFinalOrderTempalte");
  321. ajax2.addParam("mediaId", mediaId);
  322. ajax2.addParam("doHandle", doHandle);
  323. ajax2.setFailure(function(){
  324. window.submitFinal_ajaxLoading.close();
  325. Z.failure(ajax2.responseText);
  326. });
  327. ajax2.setSuccess(function()
  328. {
  329. //直接使用预览的pdf文件来定稿
  330. var obj = Z.J.toObject(this.responseText ? this.responseText : "{}");
  331. if(obj.success == "true")
  332. {
  333. submitFinal_ajaxLoading.close();
  334. Z.success("定稿完成", function(){Z.L.reload()});
  335. }
  336. else
  337. {
  338. //重新生成pdf文件来定稿
  339. if (hasSvg2pdfAPI)
  340. {
  341. doSubmitFinalLocalSave(this.responseText);
  342. }
  343. else
  344. {
  345. doSubmitFinalAjaxSave(mediaId);
  346. }
  347. }
  348. });
  349. ajax2.setLoading(document, true);
  350. ajax2.execute();
  351. });
  352. ajax.setLoading("save", '正在提交', {disabled:true});
  353. ajax.execute();
  354. });
  355. }
  356. //客户端提交定稿,生成PDF
  357. function doSubmitFinalLocalSave(responseText)
  358. {
  359. var fileData = Z.J.toObject(responseText);
  360. // 上传完成,更新数据
  361. var callback = function()
  362. {
  363. submitFinal_ajaxLoading.close();
  364. Z.success("定稿完成", function(){Z.L.reload()});
  365. }
  366. //上传pdf
  367. doUploadPdfLocal(fileData.fileName, fileData.uploadPath, callback, {
  368. className: "TemplateOrderPresenter",
  369. methodName: "doSubmitFinalLocalSave",
  370. mediaId: mediaId, // mediaID
  371. mediaUrl: ServiceAPI.imgPath, // 缩略图
  372. pdfPath: fileData.pdfPath, // pdf成品
  373. });
  374. }
  375. //ajax提交定稿,生成PDF
  376. function doSubmitFinalAjaxSave(mediaId)
  377. {//发送异步处理成功
  378. function queryProgressing(mediaId)
  379. {
  380. var ajax = new Z.Ajax();
  381. ajax.setClassName("TemplateOrderPresenter");
  382. ajax.setMethodName("doQueryFinalOrderTemplateProgressing");
  383. ajax.addParam("mediaId", mediaId);
  384. ajax.setFailure(function(){
  385. submitFinal_ajaxLoading.close();
  386. Z.failure(ajax.responseText);
  387. });
  388. ajax.setSuccess(function()
  389. {
  390. var obj = Z.J.toObject(ajax.responseText);
  391. var mediaHandlePdfModel = obj.mediaHandlePdfModel;
  392. if (mediaHandlePdfModel)
  393. {
  394. var handleStatus = mediaHandlePdfModel.handleStatus;
  395. console.log("定稿处理状态:"+handleStatus);
  396. if (handleStatus == 0 || handleStatus == 1)
  397. {//待处理 处理中
  398. setTimeout(queryProgressing, 500, mediaId)
  399. }
  400. else if (handleStatus == 2)
  401. {//处理完成
  402. submitFinal_ajaxLoading.close();
  403. Z.success("定稿完成", function(){Z.L.reload()});
  404. }
  405. else if (handleStatus == 3)
  406. {//处理失败
  407. submitFinajaxaxLoading.close();
  408. Z.failure(mediaHandlePdfModel.errorMsg);
  409. }
  410. else
  411. {
  412. submitFinal_ajaxLoading.close();
  413. console.log("定稿预览收到异常处理状态")
  414. }
  415. }
  416. else
  417. {//查不到处理对象
  418. submitFinal_ajaxLoading.close();
  419. console.log("定稿处理找不到处理对象");
  420. Z.failure("定稿处理失败");
  421. }
  422. });
  423. ajax.execute();
  424. }
  425. setTimeout(queryProgressing, 500, mediaId);
  426. }
  427. </script>
  428. <!-- 模板修改和已定稿的电子名片不支持定稿功能 -->
  429. <#if !isTemplateEdit && editable>
  430. <style>
  431. .topnav .topToolBar .topToolRight{flex-basis: 480px;}
  432. .topnav .topToolRight #draftBtn{background-color:#009049;}
  433. .topnav .topToolRight #finalBtn{background-color:#de1e08;}
  434. </style>
  435. <div id="draftBtn" class="nav topTool" onclick="doSubmitDraftOrderTempalte('${mediaId}');">提交初稿</div>
  436. <div id="finalBtn" class="nav topTool" onclick="doPreviewFinalOrderTempalteCheckLabel('${mediaId}');">完成定稿</div>
  437. </#if>
  438. </#function>
  439. <#-- 重写模板左边订单选项-->
  440. <#function zhqim_media_edit_order_item_defined(mediaId)>
  441. <script>
  442. function openWangWang(buyerNick)
  443. {//打开旺旺
  444. Z("#openFrm").attr("src","http://amos.alicdn.com/msg.aw?v=2&uid="+buyerNick+"&site=cntaobao&s=2&charset=utz-8");
  445. }
  446. function openQQ(userQq)
  447. {//打开QQ
  448. if (!Z.V.isInteger(userQq))
  449. {
  450. Z.alert("客户未提供QQ号,请旺旺联系");
  451. return;
  452. }
  453. Z("#openFrm").attr("src","tencent://message/?uin="+userQq);
  454. }
  455. function doTemplateOrderEdit(mediaId)
  456. {//编辑
  457. Z.l.href ="/zhiqimMediaEditor/mediaDesign.htm?mediaId=" + mediaId;
  458. }
  459. function doTemplateOrderDelete(mediaId, designId)
  460. {//删除
  461. if (Z.V.isEmpty(mediaId))
  462. {
  463. Z.alert("请选择模板");
  464. return;
  465. }
  466. Z.confirm("你确定要删除该模板吗?", function(){
  467. var ajax = new Z.Ajax();
  468. ajax.setClassName("TemplatePresenter");
  469. ajax.setMethodName("doTemplateDelete");
  470. ajax.addParam("mediaId", mediaId);
  471. ajax.addParam("designId", designId);
  472. ajax.setFailureAlert();
  473. ajax.setSuccess(function(){
  474. Z.success("删除成功", function(){Z.L.reload();});
  475. });
  476. ajax.execute();
  477. });
  478. }
  479. function doTabnavCss(value)
  480. {
  481. if (value == 1)
  482. {
  483. Z("#tabnav_user").addClass("z-active");
  484. Z("#tabnav_template").removeClass("z-active");
  485. Z("#tabnav_user_content").addClass("z-active");
  486. Z("#tabnav_template_content").removeClass("z-active");
  487. }
  488. else if (value == 2)
  489. {
  490. Z("#tabnav_user").removeClass("z-active");
  491. Z("#tabnav_template").addClass("z-active");
  492. Z("#tabnav_user_content").removeClass("z-active");
  493. Z("#tabnav_template_content").addClass("z-active");
  494. }
  495. else if (value == 3)
  496. {
  497. Z("#tabnav_userText").addClass("z-active");
  498. Z("#tabnav_paramText").removeClass("z-active");
  499. Z("#tabnav_userText_content").addClass("z-active");
  500. Z("#tabnav_paramText_content").removeClass("z-active");
  501. }
  502. else if (value == 4)
  503. {
  504. Z("#tabnav_userText").removeClass("z-active");
  505. Z("#tabnav_paramText").addClass("z-active");
  506. Z("#tabnav_userText_content").removeClass("z-active");
  507. Z("#tabnav_paramText_content").addClass("z-active");
  508. }
  509. }
  510. function doQueryOrderInfo(mediaId)
  511. {//订单API
  512. var ajax = new Z.Ajax();
  513. ajax.setClassName("TemplateOrderPresenter");
  514. ajax.setMethodName("doTemplateOrderQuery");
  515. ajax.addParam("mediaId", mediaId);
  516. ajax.setCallback("side_order");
  517. ajax.setLoading("side_order");
  518. ajax.execute();
  519. }
  520. function doCopyOtherPage(mediaSrcId, bid, mediaId)
  521. {//复制其它页
  522. Z.confirm("你确定要复制该版面?", function()
  523. {
  524. // 新建 coverMaterial,字符串传参
  525. var lastBgObj = media.bgList[media.bgList.length - 1];
  526. var newBid = lastBgObj.bid + 1;
  527. var bgObj = new Z.Bg();
  528. bgObj.bid = newBid;
  529. media.bgList.push(bgObj);
  530. var newCMList = setCoverMaterial(bgObj, media.canvas.widthMm, media.canvas.heightMm);
  531. // ajax调用
  532. var ajax = new Z.Ajax();
  533. ajax.setClassName("MediaPresenter");
  534. ajax.setMethodName("doCopyOtherPage");
  535. ajax.addParam("mediaSrcId", mediaSrcId);
  536. ajax.addParam("bid", bid);
  537. ajax.addParam("newBid", newBid);
  538. ajax.addParam("mediaId", mediaId);
  539. ajax.addParam("coverMaterialList", Z.AR.toString(newCMList));
  540. ajax.setFailure(media.bgList.pop);
  541. ajax.setFailureAlert();
  542. ajax.setSuccess(function()
  543. {
  544. //定义 media
  545. var newMedia = Z.J.toObject(this.responseText);
  546. media = new Z.Media({canvas: newMedia.canvas, bgList: newMedia.bgList, materialList: newMedia.materialList, coverMaterialList: newMedia.coverMaterialList});
  547. //刷新画布
  548. loadCanvas();
  549. //刷新版面
  550. refreshPageList();
  551. Z.tips("复制成功");
  552. });
  553. ajax.setLoading(document);
  554. ajax.execute();
  555. });
  556. }
  557. function doDownFile(attaId)
  558. {//下载
  559. Z.l.href ="/templateDownload.htm?attaId=" + attaId + "&type=orderFile";
  560. }
  561. //标签选择客户类型
  562. function doSelectConsumerType(flag){
  563. Z("#consumerType_"+flag).addClass("z-blue").siblings("button").removeClass("z-blue");
  564. }
  565. //通过关键词查主行业
  566. function doQueryIndustryByKey(){
  567. var industryKey=Z("#industryKey").val();
  568. var labelOid = Z("#labelOid").val();
  569. var unmatchkey=Z("#unmatchkey").val();
  570. var ajax = new Z.Ajax();
  571. ajax.setClassName("TemplateOrderPresenter");
  572. ajax.setMethodName("doQueryIndustryByKey");
  573. ajax.addParam("industryKey",industryKey);
  574. ajax.addParam("labelOid",labelOid);
  575. ajax.addParam("unmatchkey",unmatchkey);
  576. ajax.setFailureAlert();
  577. ajax.setSuccess(function(){
  578. var map=Z.J.toObject(this.responseText);
  579. var industrys=map.industrys;
  580. var newUnmatchkey=map.unmatchkey;
  581. var htmlstr="";
  582. Z.each(industrys, function(industry, i){
  583. htmlstr+='<button id="industry_'+industry.industryId+'" type="button" class="z-button z-mg3 main-industry" value="'+industry.industryId+'" onclick="doQueryIndustryLabel('+industry.industryId+')">'+industry.industryName+'</button>';
  584. });
  585. Z("#mainIndustry").html(htmlstr);
  586. Z("#subIndustry").html("");
  587. Z("#applicationScenario").html("");
  588. Z("#designStyle").html("");
  589. Z("#unmatchkey").val(newUnmatchkey);
  590. // 推荐行业页面元素遍历拼接
  591. var recommendIndHtml = "";
  592. var recommendIndustrys = map.recommendIndustryList;
  593. Z.each(recommendIndustrys, function(industry, i){
  594. recommendIndHtml += '<button id="recommend_industry_'+industry.industryId+'" type="button" class="z-button z-mg3 recommend-industry" value="'+industry.industryId+'" onclick="doQueryIndustryLabel('+industry.industryId+', 1)">'+industry.industryName+'</button>';
  595. });
  596. Z("#recommendIndustry").html(recommendIndHtml);
  597. });
  598. ajax.setLoading("queryIndustryByKey", '<i class="z-font z-return"></i>正在处理',{disabled:true});
  599. ajax.execute();
  600. }
  601. function doQueryOrderLabel(mediaId){
  602. var ajax = new Z.Ajax();
  603. ajax.setClassName("TemplateOrderPresenter");
  604. ajax.setMethodName("doTemplateOrderLabelQuery");
  605. ajax.addParam("mediaId", mediaId);
  606. ajax.setCallback("side_label");
  607. ajax.setLoading("side_label");
  608. ajax.execute();
  609. }
  610. //查询标签
  611. function doQueryIndustryLabel(industryId, isRecommend){
  612. if(isRecommend)
  613. {
  614. Z("#recommend_industry_"+industryId).addClass("z-blue").siblings("button").removeClass("z-blue");
  615. Z(".main-industry").removeClass("z-blue");
  616. }
  617. else
  618. {
  619. Z("#industry_"+industryId).addClass("z-blue").siblings("button").removeClass("z-blue");
  620. Z(".recommend-industry").removeClass("z-blue");
  621. }
  622. var ajax = new Z.Ajax();
  623. ajax.setClassName("TemplateOrderPresenter");
  624. ajax.setMethodName("doQueryIndustryLabel");
  625. ajax.addParam("industryId",industryId);
  626. ajax.setFailureAlert();
  627. ajax.setSuccess(function(){
  628. var map=Z.J.toObject(this.responseText);
  629. var htmlSI="";
  630. var htmlAS="";
  631. var htmlDS="";
  632. var labelList=map.labelList;
  633. var dimensionList=map.dimensionList;
  634. var dimensionMap=new Map();
  635. for (var i in dimensionList) {
  636. dimensionMap.set(dimensionList[i].dimensionId,dimensionList[i].dimensionName);
  637. }
  638. Z.each(labelList, function(label, i){
  639. if("子行业"==dimensionMap.get(label.dimensionId)){
  640. htmlSI+='<button id="label_'+label.id+'" type="button" class="z-button z-mg3" value="'+label.id+'" onclick="doLabelSelected('+label.id+')">'+label.labelName+'</button>';
  641. }
  642. if("应用场景"==dimensionMap.get(label.dimensionId)){
  643. htmlAS+='<button id="label_'+label.id+'" type="button" class="z-button z-mg3" value="'+label.id+'" onclick="doLabelSelected('+label.id+')">'+label.labelName+'</button>';
  644. }
  645. if("设计风格"==dimensionMap.get(label.dimensionId)){
  646. htmlDS+='<button id="label_'+label.id+'" type="button" class="z-button z-mg3" value="'+label.id+'" onclick="doLabelSelected('+label.id+')">'+label.labelName+'</button>';
  647. }
  648. });
  649. Z("#subIndustry").html(htmlSI);
  650. Z("#applicationScenario").html(htmlAS);
  651. Z("#designStyle").html(htmlDS);
  652. });
  653. ajax.execute();
  654. }
  655. //选择标签
  656. function doLabelSelected(id){
  657. Z("#label_"+id).addClass("z-blue").siblings("button").removeClass("z-blue");
  658. }
  659. //保存标签
  660. function doSaveLabel(){
  661. var unmatchkey=Z("#unmatchkey").val();
  662. var labelOid = Z("#labelOid").val();
  663. var consumerType=Z("button[id^='consumerType'][class*='z-blue']").val();//客户类型
  664. var industryId=Z("div[id='mainIndustry'] button[class*='z-blue']").val();//主行业
  665. // 如果选择了推荐行业则保存时替换为主行业id
  666. var recommendIndustryId = Z("div[id='recommendIndustry'] button[class*='z-blue']").val();// 推荐行业
  667. if (!industryId)
  668. {
  669. if (Z.V.isEmpty(recommendIndustryId))
  670. {
  671. Z.alert("请选择主行业或者推荐行业");
  672. return;
  673. }
  674. industryId = recommendIndustryId;
  675. }
  676. var subIndustryId=Z("div[id='subIndustry'] button[class*='z-blue']").val();//子行业
  677. var applicationScenarioId=Z("div[id='applicationScenario'] button[class*='z-blue']").val();//应用场景
  678. var designStyleId=Z("div[id='designStyle'] button[class*='z-blue']").val();//设计风格
  679. var ajax = new Z.Ajax();
  680. ajax.setClassName("TemplateOrderPresenter");
  681. ajax.setMethodName("doSaveIndustryLabel");
  682. ajax.addParam("labelOid",labelOid);
  683. ajax.addParam("consumerType",consumerType);
  684. ajax.addParam("industryId",industryId);
  685. ajax.addParam("subIndustryId",subIndustryId);
  686. ajax.addParam("applicationScenarioId",applicationScenarioId);
  687. ajax.addParam("designStyleId",designStyleId);
  688. ajax.addParam("unmatchkey",unmatchkey);
  689. ajax.setFailureAlert();
  690. ajax.setSuccess(function(){
  691. Z("#unmatchkey").val("");
  692. Z.alert("保存成功");
  693. });
  694. ajax.setLoading("saveLabel", '<i class="z-font z-return"></i>正在处理',{disabled:true});
  695. ajax.execute();
  696. }
  697. function doCancelLabel(){
  698. Z("button[id^='consumerType'][class*='z-blue']").removeClass("z-blue");
  699. Z("div[id='mainIndustry'] button[class*='z-blue']").removeClass("z-blue");
  700. Z("div[id='subIndustry'] button[class*='z-blue']").removeClass("z-blue");
  701. Z("div[id='applicationScenario'] button[class*='z-blue']").removeClass("z-blue");
  702. Z("div[id='designStyle'] button[class*='z-blue']").removeClass("z-blue");
  703. Z("#subIndustry").html("");
  704. Z("#applicationScenario").html("");
  705. Z("#designStyle").html("");
  706. }
  707. function doPreviewFinalOrderTempalteCheckLabel(mediaId)
  708. {
  709. // 智能电子名片单独的确认页面和后台定稿逻辑
  710. var orderIsDzmpCardType = '${orderIsCardType}';
  711. if (orderIsDzmpCardType == 'true') {
  712. beforeShowDzmpQrcode("endDraft");
  713. return;
  714. }
  715. //常规产品定稿流程
  716. doPreviewFinalOrderTempalte(mediaId);
  717. /* var ajax = new Z.Ajax();
  718. ajax.setClassName("TemplateOrderPresenter");
  719. ajax.setMethodName("doPreviewFinalOrderTempalteCheckLabel");
  720. ajax.addParam("mediaId",mediaId);
  721. ajax.setFailureAlert();
  722. ajax.setSuccess(function(){
  723. var map=Z.J.toObject(this.responseText);
  724. if(map.flag==false){
  725. var dialog = new Z.Dialog();
  726. dialog.title = "补充订单【"+map.designId+"】的标签信息";
  727. dialog.url = "/fillLabelInfo.htm?designId="+map.designId+"&mediaId="+mediaId;
  728. dialog.width = 900;
  729. dialog.height = 360;
  730. dialog.execute();
  731. }else{
  732. }
  733. });
  734. ajax.setLoading("finalBtn", '<i class="z-font z-return"></i>正在处理',{disabled:true});
  735. ajax.execute();
  736. */
  737. }
  738. </script>
  739. <li onclick="doChangeSidebar(this,'order');doQueryOrderInfo('${mediaId}');"><i class="z-font z-text zi-px24"></i><br>订单</li>
  740. <!-- <li id="label" onclick="doChangeSidebar(this,'label');doQueryOrderLabel('${mediaId}');"><i class="z-font z-add zi-px24"></i><br>标签</li> -->
  741. </#function>
  742. <#--刷新右边区域自定义块-->
  743. <#function zhiqim_manager_topnav_right_defined()>
  744. <script type="text/javascript" src="/zinc/js/designer_2021031501.js?v=20210603"></script>
  745. <#var onlineStatus = DesignerDao.getDesignerStatus(sessionUser)/>
  746. <#--<div class="takeOrder">
  747. <span>自动接单</span>
  748. <div id="switch-work" style="cursor: pointer;" class="switch <#if onlineStatus gt 0>switch-active</#if>"></div>
  749. </div>-->
  750. </#function>
  751. <!-- 重写我的素材选项-->
  752. <#function zhqim_media_my_material_defined()>
  753. <script>
  754. var allMaterialCatList = Z.J.toObject('${Global.get(MaterialCatCache.class).list()}'); // 素材分类对象
  755. Z.onload(function(){
  756. doQueryUserMaterial("1");
  757. });
  758. function doQueryUserMaterial(page)
  759. {//查询我的素材
  760. var ajax = new Z.Ajax();
  761. ajax.setClassName("UserMaterialPresenter");
  762. ajax.setMethodName("doQueryUserMaterial");
  763. ajax.addParam("page", page);
  764. ajax.setFailureAlert();
  765. ajax.setSuccess(function()
  766. {
  767. var list = Z.J.toObject(this.responseText);
  768. var ulHtml = "<ul>";
  769. for(var i=0;i<list.length;i++)
  770. {
  771. var data = list[i];
  772. ulHtml += '<li class="userMaterialListItem" onclick=addSvgCodeFromMine("' + data.svgId + '",' + 'doUseUserMaterial); oncontextmenu=\'tagMenuShowMine(event, "' + data.svgId + '");\'>' + data.svgCode;
  773. ulHtml += '</li>';
  774. }
  775. ulHtml += "</ul>";
  776. Z("#collection_result>.result-ul").html("").append(Z(ulHtml));
  777. });
  778. ajax.execute();
  779. }
  780. function doUseUserMaterial(svgId)
  781. {//使用素材
  782. // 主方法,ajax 调用
  783. var ajax = new Z.Ajax();
  784. ajax.setClassName("UserMaterialPresenter");
  785. ajax.setMethodName("getUserMaterialSvg");
  786. ajax.addParam(svgId);
  787. ajax.setFailure(function(){Z.failure(this.responseText);});
  788. ajax.setSuccess(function(){analysisOfResponseMine(this.responseText);});
  789. ajax.execute();
  790. }
  791. function doAddUserMaterial(typeCode, catCode, keywords, svgCode)
  792. {//添加素材
  793. var ajax = new Z.Ajax();
  794. ajax.setClassName("UserMaterialPresenter");
  795. ajax.setMethodName("doAddUserMaterial");
  796. ajax.addParam("typeCode", typeCode);
  797. ajax.addParam("catCode", catCode);
  798. ajax.addParam("keywords", keywords);
  799. ajax.addParam("svgCode", svgCode);
  800. ajax.setFailureAlert();
  801. ajax.setSuccess(function()
  802. {
  803. Z.alert("添加成功", function(){doQueryUserMaterial("1");});
  804. });
  805. ajax.execute();
  806. }
  807. function doDelUserMaterial(elem)
  808. {//删除个人素材
  809. var svgId = Z(elem).attr("data-svgid");
  810. var ajax = new Z.Ajax();
  811. ajax.setClassName("UserMaterialPresenter");
  812. ajax.setMethodName("doDelUserMaterial");
  813. ajax.addParam(svgId);
  814. ajax.setFailure(function(){Z.failure(this.responseText);});
  815. ajax.setSuccess(function(){doQueryUserMaterial("1");});
  816. ajax.execute();
  817. }
  818. /** 标签右键菜单 **/
  819. function tagMenuShowMine(event, svgId)
  820. {
  821. Z.E.forbidden(event);
  822. createContextMenu({
  823. "event": event,
  824. "elemId": "tagUserMaterialMenu",
  825. "editItem": [
  826. ["删除素材","doDelUserMaterial(this)"]
  827. ]
  828. });
  829. Z("#tagUserMaterialMenu ul:nth-child(1)>li:first-child").attr("data-svgid",svgId);
  830. }
  831. </script>
  832. <style>
  833. .userMaterialListItem{padding:5px;}
  834. .userMaterialListItem > svg{height:auto;}
  835. .
  836. </style>
  837. <div class="side-btnList">
  838. <span class="side-btnSelect active" data-type="0">全部</span>
  839. <span class="side-btnSelect" data-type="1" style="pointer-events:none;opacity:.7;">文字</span>
  840. <span class="side-btnSelect" data-type="2" style="pointer-events:none;opacity:.7;">图片</span>
  841. <span class="side-btnSelect" data-type="3" style="pointer-events:none;opacity:.7;">形状</span>
  842. <span class="side-btnSelect" data-type="4" style="pointer-events:none;opacity:.7;">二维码</span>
  843. </div>
  844. <div class="bjbox">
  845. <div id="collection_result" class="bjimg materialListShow">
  846. <div class="result-ul"></div>
  847. <div class="result-page"><span></span></div>
  848. <div class="result-tips z-text-center z-hide">已经到底了!!</div>
  849. </div>
  850. </div>
  851. </#function>
  852. <#--计算左侧宽高值-->
  853. <#function yangcai_calc_Left_width_height(width, height)>
  854. <script>
  855. function calcLeftWidthHeight()
  856. {
  857. Z("#left").css("width", Z.D.clientWidth() - ${zmr_sidebar_width} - 20 - ${width} - 5);//左20PD,右5PD
  858. Z("#left").css("height", Z.D.clientHeight() - ${zmr_topnav_height} - ${zmr_breadcrumb_height} - 20 - ${height} - 5);//上20PD,下5PD
  859. }
  860. Z.onload(calcLeftWidthHeight);
  861. Z(window).resize(calcLeftWidthHeight);
  862. </script>
  863. </#function>
  864. <#--计算指定元素的宽度-->
  865. <#function yangcai_designer_calc_width(width, containerId)>
  866. <script>
  867. function calcLeftWidthHeight()
  868. {
  869. Z("#${containerId}").css("width", Z.D.clientWidth() - ${zmr_sidebar_width} - 20 - ${width} - 5);//左20PD,右5PD
  870. }
  871. Z.onload(calcLeftWidthHeight);
  872. Z(window).resize(calcLeftWidthHeight);
  873. </script>
  874. </#function>
  875. <#function sweet_alert_reuse_method()>
  876. ${Scripts.src("/zinc/js/sweetalert2.min.js")}
  877. <link rel="stylesheet" href="/zinc/css/sweetalert2.min.css">
  878. </#function>
  879. <#function Mydome()>
  880. <link rel="stylesheet" href="/zinc/css/dome.css">
  881. </#function>