allOrderDetail.zml 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863
  1. ${Styles.htmlOverflowYAuto()}
  2. ${Scripts.src(zhiqim_uploadlarge.js)}
  3. <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
  4. <script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
  5. <script>
  6. <!--
  7. var attaList = ${attaList};
  8. Z.onload(function()
  9. {
  10. for(var i=0; i<attaList.length; i++)
  11. {
  12. var obj = attaList[i];
  13. if ("file" == obj.type && obj.isAdd)
  14. {
  15. initUploader(obj.id, obj.savePath);
  16. }
  17. if ("file" == obj.type)
  18. {
  19. Z("#fileType_Text_"+obj.id).click();//默认选中
  20. }
  21. }
  22. //成品尺寸判断
  23. var getPrintWidth=${order.getPrintWidth()}
  24. var width = 0;
  25. var height = 0;
  26. if(getPrintWidth>0){
  27. $('#finished-size').html(${order.getPrintWidth()}+'mm X '+${order.getPrintHeight()}+'mm')
  28. }else{
  29. width = ${order.getDesignWidth()}-(${designType.getBleeding()}*2);
  30. height = ${order.getDesignHeight()}-(${designType.getBleeding()}*2);
  31. $('#finished-size').html(width+'mm X '+height+'mm')
  32. }
  33. operationFlow()
  34. $(document).on('mouseenter mouseleave','.manuscript-list',function(event){
  35. if (event.type === "mouseenter") {
  36. $(this).find('.file-popup').show()
  37. }else{
  38. $(this).find('.file-popup').hide()
  39. }
  40. })
  41. var content1 = '${content}';
  42. if (!content1) {
  43. // content 为空
  44. }else{
  45. document.getElementById('editor-container').innerHTML = content1;
  46. }
  47. });
  48. $(function(){
  49. if(!window.name){
  50. window.name = 'test';
  51. window.location.reload();
  52. }
  53. })
  54. //操作流程逻辑
  55. function operationFlow(){
  56. var designStatus = "${order.getStatus()}";
  57. if(designStatus>=40){
  58. $('#first-draft-audit').addClass('operation-active')
  59. $('#first-draft-time').html("${Sqls.toDateTimeString(order.getDesignDraftTime())}")
  60. }
  61. if(designStatus>=50){
  62. $('#first-draft-end').addClass('operation-active')
  63. }
  64. if(designStatus>=52){
  65. $('#finalize-draft-audit').addClass('operation-active')
  66. $('#finalize-draft-time').html("${Sqls.toDateTimeString(order.getDesignEndTime())}")
  67. }
  68. if(designStatus>=55){
  69. $('#finalize-draft-end').addClass('operation-active')
  70. $('.onBack').click(function(){
  71. Z.Location.href('designOrderFinish.htm');
  72. })
  73. $('.design-btn').hide()
  74. $('#goTemplate').hide()
  75. }
  76. if(designStatus>55){
  77. $('#printing-audit').addClass('operation-active')
  78. $('#check-time').html("${Sqls.toDateTimeString(order.getCheckTime())}")
  79. }
  80. if(designStatus==70){
  81. $('#design-complete').addClass('operation-active')
  82. $('#modify-time').html("${Sqls.toDateTimeString(order.getModifyTime())}")
  83. }
  84. }
  85. //前往设计
  86. function toDesign()
  87. {
  88. var designId = Z("#designId").val();
  89. var prdType = "${order.getTypeId()}";
  90. var targetUrl = "/templatePreview.htm?designId="+designId;
  91. var targetCardUrl = "/templateCardPreview.htm?designId="+designId+"&src=design";
  92. var ajax = new Z.Ajax();
  93. ajax.setClassName("DesignOrderPresenter");
  94. ajax.setMethodName("doDesignerOrderTemplate");
  95. ajax.addParam("designId", designId);
  96. if(prdType == "2023207561256")
  97. {
  98. ajax.addParam("validateUrl", targetCardUrl);
  99. }
  100. else
  101. {
  102. ajax.addParam("validateUrl", targetUrl);
  103. }
  104. ajax.setFailureAlert();
  105. ajax.setSuccessLocationResponse();
  106. ajax.execute();
  107. }
  108. //前往编辑器
  109. function toEditor(editorUrl)
  110. {
  111. var hurl = window.location.href;
  112. var position = hurl.indexOf("?");
  113. var result = hurl.substr(0, position);
  114. var designId = Z("#designId").val();
  115. editorUrl = "${editorUrl}"+ "&callbackUrl="+ result + "?" + designId;
  116. window.open(editorUrl);
  117. //window.location.href=editorUrl;
  118. }
  119. function doDownFile(attaIds)
  120. {//文件下载
  121. var designId = Z("#designId").val();
  122. if (Z.V.isEmpty(designId))
  123. {
  124. parent.Z.alert("请选择一条订单");
  125. return;
  126. }
  127. if (Z.V.isEmpty(attaIds))
  128. {
  129. parent.Z.alert("请选择需要下载的文件");
  130. return false;
  131. }
  132. if(${checkeds}){
  133. parent.Z.alert("选中多条订单不支持下载,请重新选择");
  134. return;
  135. }
  136. var ajax = new Z.Ajax();
  137. ajax.setClassName("UploadFilePresenter");
  138. ajax.setMethodName("doDownloadFile");
  139. ajax.addParam("attaId", attaIds);
  140. ajax.setFailure(function(){
  141. Z.alert(this.responseText,null, {width:320});
  142. });
  143. ajax.setSuccess(function(){
  144. var prefix = Z.l.protocol + "//" + Z.l.host ;
  145. Z.L.href(prefix+"/downFile.htm?attaId=" + attaIds, zCallFrame);
  146. });
  147. ajax.setLoading(document);
  148. ajax.execute();
  149. }
  150. function materialDoDownFile(type)
  151. {//客户素材下载
  152. var designId = Z("#designId").val();
  153. var attaIds = Z.FM.getCheckBoxValue("str_" + type, "");
  154. if (Z.V.isEmpty(designId))
  155. {
  156. parent.Z.alert("请选择一条订单");
  157. return;
  158. }
  159. if (Z.V.isEmpty(attaIds))
  160. {
  161. parent.Z.alert("请选择需要下载的文件");
  162. return false;
  163. }
  164. if(${checkeds}){
  165. parent.Z.alert("选中多条订单不支持下载,请重新选择");
  166. return;
  167. }
  168. var ajax = new Z.Ajax();
  169. ajax.setClassName("UploadFilePresenter");
  170. ajax.setMethodName("doDownloadFile");
  171. ajax.addParam("attaId", attaIds);
  172. ajax.setFailure(function(){
  173. Z.alert(this.responseText,null, {width:320});
  174. });
  175. ajax.setSuccess(function(){
  176. var prefix = Z.l.protocol + "//" + Z.l.host ;
  177. Z.L.href(prefix+"/downFile.htm?attaId=" + attaIds, zCallFrame);
  178. });
  179. ajax.setLoading(document);
  180. ajax.execute();
  181. }
  182. function doDesignOrderDraft()
  183. {//完成初稿
  184. var designId = Z("#designId").val();
  185. var ajax = new Z.Ajax();
  186. ajax.setClassName("DesignOrderPresenter");
  187. ajax.setMethodName("doQueryStatus");
  188. ajax.addParam(designId);
  189. ajax.addParam("SUMBIT");
  190. ajax.setFailureAlert();
  191. ajax.setSuccess(function()
  192. {
  193. var dialog = new Z.Dialog();
  194. dialog.title = "完成初稿截图(截屏后粘贴(CTRL+V)到输入框中)";
  195. dialog.url = "/designOrderDraft.htm?designId=" + designId;
  196. dialog.width = 600;
  197. dialog.height = 400;
  198. dialog.execute();
  199. })
  200. ajax.setLoading("orderToDraft", '正在处理', {disabled:true});
  201. ajax.execute();
  202. }
  203. function doDraftOrderToComplete()
  204. {//完成定稿
  205. var designId = Z("#designId").val();
  206. var draftType = "${order.getDraftType()}";
  207. if(draftType == 0)
  208. {//自来稿订单
  209. var ajax1 = new Z.Ajax();
  210. ajax1.setClassName("DesignOrderPresenter");
  211. ajax1.setMethodName("doEasyDraftOrderToComplete");
  212. ajax1.addParam(designId);
  213. ajax1.setFailureAlert();
  214. ajax1.setSuccess(function(){Z.success("定稿成功", function(){location.reload();});});
  215. ajax1.setLoading("orderToComplete", '正在提交', {disabled:true});
  216. ajax1.execute();
  217. }
  218. else
  219. {
  220. var ajax = new Z.Ajax();
  221. ajax.setClassName("DesignOrderPresenter");
  222. ajax.setMethodName("doDraftOrderToComplete");
  223. ajax.addParam(designId);
  224. ajax.setFailureAlert();
  225. ajax.setSuccess(function(){Z.success("提交定稿成功", function(){location.reload();});});
  226. ajax.setLoading("orderToComplete", '正在提交', {disabled:true});
  227. ajax.execute();
  228. }
  229. }
  230. //快捷联系人
  231. function quickContact()
  232. {
  233. var designId = Z("#designId").val();
  234. if (Z.V.isEmpty(designId))
  235. {
  236. Z.alert("请选择一条订单");
  237. return;
  238. }
  239. var ajax = new Z.Ajax();
  240. ajax.setClassName("OrderPresenter");
  241. ajax.setMethodName("quickContact");
  242. ajax.addParam("designId", designId);
  243. ajax.setFailureAlert();
  244. ajax.setSuccess(function(){
  245. var obj = Z.J.toObject(this.responseText);
  246. var resultHtml = obj.resultHtml;
  247. if (!Z("#quickContact_dialog")[0])
  248. {
  249. var dialog = new Z.Dialog();
  250. dialog.title = '<span id="quickContact_title" class="z-bold"></span>';
  251. dialog.text = '<div id="quickContact_dialog"></div>';
  252. dialog.width = 750;
  253. dialog.height = 400;
  254. dialog.shadow = false;
  255. dialog.execute();
  256. dialog.$background.remove();
  257. }
  258. Z("#quickContact_dialog").htmlc(resultHtml);
  259. Z("#quickContact_title").htmlc(Z("#title_content").html());
  260. });
  261. ajax.setLoading("quickContactBtn", '正在查询', {disabled:true});
  262. ajax.execute();
  263. }
  264. function initUploader(fileType, path)
  265. {//文件上传
  266. var designId = Z("#designId").val();
  267. if (Z.Validates.isEmpty(designId))
  268. return;
  269. var upload = new Z.UploadLarge();
  270. upload.elem = "upload_" + fileType;
  271. upload.showResult = false;
  272. upload.fileMd5Target = 1;
  273. upload.fileCopy = true;
  274. upload.maxSizeMiB = 500;
  275. upload.contextPath = "${context.getContextPath()}";
  276. upload.setFileDir(path);
  277. upload.onSelected = function(fileName, fileLength)
  278. {
  279. var ajax = new Z.Ajax();
  280. ajax.setSync();
  281. ajax.setClassName("UploadFilePresenter");
  282. ajax.setMethodName("doCheckFileName");
  283. ajax.addParam(designId);
  284. ajax.addParam(fileType);
  285. //if ("EndFile" != fileType)
  286. // ajax.addParam(designId + "-" + fileName);
  287. //else
  288. ajax.addParam(fileName);
  289. ajax.execute();
  290. if (ajax.responseStatus != 0)
  291. {
  292. Z.alert(ajax.responseText);
  293. return false;
  294. }
  295. //if ("EndFile" != fileType)
  296. // this.setFileName(designId + "-" + fileName);
  297. //else
  298. this.setFileName(fileName);
  299. };
  300. upload.onCompleted = function(fileId){
  301. var ajax = new Z.Ajax();
  302. ajax.setClassName("UploadFilePresenter");
  303. ajax.setMethodName("doUplaodFile");
  304. ajax.addParam(designId);
  305. ajax.addParam(fileId);
  306. ajax.addParam(fileType);
  307. ajax.setFailureAlert();
  308. ajax.setSuccess(function()
  309. {
  310. var dataMap = Z.J.toObject(this.responseText);
  311. Z("#div_" + fileType).html("");//清除;
  312. var html = "";
  313. var items = dataMap.attaList;
  314. for(var i=0;i<items.length;i++)
  315. {
  316. var obj = items[i];
  317. html += '<div class="manu-list" id="paper_'+obj.attaId+'">'
  318. html += '<div class="manuscript-list"><img src="zinc/images/'+obj.fileType+'.png">';
  319. html += '<div class="file-popup" style="display: none;">';
  320. html += '<div class="download-btn" onclick="doDownFile('+obj.attaId+');">下载</div>';
  321. html += '<div class="del-btn" onclick="doDeleteFile('+obj.attaId+');">删除</div>';
  322. html += '</div>';
  323. html += '</div>';
  324. html += '<p title="'+obj.fileName+'">'+obj.fileName+'</p>';
  325. html += '</div>';
  326. }
  327. Z("#div_" + fileType).htmlc(html);
  328. });
  329. ajax.setLoading(document);
  330. ajax.execute();
  331. };
  332. upload.execute();
  333. }
  334. function doDeleteFile(attaIds)
  335. {//删除文件
  336. var designId = Z("#designId").val();
  337. if (Z.V.isEmpty(designId))
  338. {
  339. parent.Z.alert("请选择一条订单");
  340. return;
  341. }
  342. if (Z.V.isEmpty(attaIds))
  343. {
  344. parent.Z.alert("请选择需要删除的文件");
  345. return ;
  346. }
  347. if(${checkeds}){
  348. parent.Z.alert("选中多条订单不支持删除,请重新选择");
  349. return;
  350. }
  351. Z.confirm("确认删除此文件吗?", function()
  352. {
  353. var ajax = new Z.Ajax();
  354. ajax.setClassName("UploadFilePresenter");
  355. ajax.setMethodName("doDeleteFile");
  356. ajax.addParam(attaIds);
  357. ajax.setFailure(function(){Z.alert(this.responseText,null, {width:320});});
  358. ajax.setSuccess(function(){
  359. $('#paper_'+attaIds).remove();
  360. });
  361. ajax.execute();
  362. }, {width:320});
  363. }
  364. function showLargeImg(thisImg)
  365. {
  366. var dialog = new parent.Z.Dialog();
  367. dialog.shadow = true;
  368. dialog.title = "图片预览";
  369. dialog.fixed = true;
  370. dialog.url = "showLargeImg.htm?imgpath="+thisImg.src;
  371. dialog.width = parent.Z.D.clientWidth()-600;
  372. dialog.height = parent.Z.D.clientHeight()-400;
  373. dialog.execute();
  374. dialog.$background.remove();
  375. }
  376. //复制名称
  377. function doCopyProductInfo(copyType)
  378. {
  379. var orderText = "${order.getOrderText()}";
  380. if (copyType == 1)
  381. {//复制文件名
  382. var designId = "${order.getDesignId()}";
  383. var buyerNick = "${order.getBuyerNick()}";
  384. //var fileName = designId+ "-" +buyerNick;
  385. var fileName = orderText;
  386. if (fileName == "-")
  387. return;
  388. Z.copy(fileName);
  389. top.Z.tips("复制成功");
  390. }
  391. else
  392. {//复制信息
  393. if (Z("#copy_content").length == 0)
  394. return;
  395. Z.copy(Z("#copy_content").text());
  396. top.Z.tips("复制成功");
  397. }
  398. }
  399. var dialog = new Z.Dialog();
  400. function aa() {
  401. dialog.close();
  402. location.reload();
  403. }
  404. var progress = 0;
  405. var total = 100;
  406. function toSyncFile()
  407. {//同步文件
  408. var designId = Z("#designId").val();
  409. var templateId = "${designOrder.getTemplateId()}";
  410. var ajax = new Z.Ajax();
  411. ajax.setClassName("DesignOrderPresenter");
  412. ajax.setMethodName("toSyncFile");
  413. ajax.addParam("designId", designId);
  414. ajax.addParam("templateId", templateId);
  415. ajax.setFailureAlert();
  416. ajax.setSuccess(function(){
  417. dialog.title = "同步文件中";
  418. dialog.text = "<table class='z-table z-w100p z-h100p'><tr><td class='z-text-center'><div class='progress-bar'> "+
  419. "<div class='progress-bar-fill'></div> "+
  420. "</div></td></tr>" +
  421. "<tr><td> <button class='add-sync-draft' style='margin-left:200px;color:white;' onclick=''>继续等待</button> <button class='add-sync-draft' style='margin-left:10px;color:white;' onclick='aa()'>后台渲染</button> </td></tr>" +
  422. "</table>";
  423. //<i style='float: left;margin-left: 20px;margin-top: -45px;' class='z-ico z-success'></i>
  424. dialog.width = 700;
  425. dialog.height = 200;
  426. dialog.fixed = true;
  427. dialog.execute();
  428. progress = 0;
  429. // 每隔1秒增加进度条的进度隐居宫主客栈老板医师
  430. setInterval(function() {
  431. if (progress < total) {
  432. progress++;
  433. var progressBarFill = document.querySelector('.progress-bar-fill');
  434. progressBarFill.style.width = progress + '%';
  435. } else {
  436. clearInterval(); // 完成进度条后停止定时器
  437. aa();
  438. }
  439. }, 500);
  440. });
  441. ajax.setLoading(document);
  442. ajax.execute();
  443. }
  444. //代编
  445. function daiEditor()
  446. {
  447. var daiEditorUrl = "${daiEditorUrl}";
  448. var designId = Z("#designId").val();
  449. var ajax = new Z.Ajax();
  450. ajax.setClassName("DesignOrderPresenter");
  451. ajax.setMethodName("delEditorFile");
  452. ajax.addParam("designId", designId);
  453. ajax.setFailureAlert();
  454. ajax.setSuccess(function(){
  455. location.reload();
  456. });
  457. ajax.setLoading(document);
  458. ajax.execute();
  459. window.open(daiEditorUrl);
  460. //window.location.href=daiEditorUrl;
  461. }
  462. //绑定客户模板文件id
  463. function updateTemplateId(){
  464. var designId = Z("#designId").val();
  465. var templateId = "${designOrder.getTemplateId()}";
  466. var dialog = new Z.Dialog();
  467. dialog.title = "修改模板文件id";
  468. dialog.url = "/manager/updateTemplateId.htm?designId=" + designId + "&templateId=" + templateId;
  469. dialog.width = 530;
  470. dialog.height = 220;
  471. dialog.fixed = true;
  472. dialog.execute();
  473. }
  474. </script>
  475. <input name="designId" id="designId" value="${order.getDesignId()}" type="hidden">
  476. <input name="designStatus" id="designStatus" value="${order.getStatus()}" type="hidden">
  477. <div class="orderDetail">
  478. <div class="detail-title clear">
  479. <div class="onBack" onclick="Z.Location.href('designOrder.htm');"><img src="zinc/images/back.png" ><span>返回</span></div>
  480. <span class="title-text">订单详情</span>
  481. </div>
  482. <div class="order-box clear">
  483. <div class="order-box-left">
  484. <div class="operation">
  485. <div class="operation-box clear">
  486. <div class="operation-list operation-active">
  487. <div class="order-icon"><img src="zinc/images/order-icon01.png" ></div>
  488. <div class="order-step">第1步</div>
  489. <div class="order-text"><h3>任务接单</h3><p><span>${Sqls.toDateTimeString(order.getDesignBeginTime())}</span></p></div>
  490. </div>
  491. <div class="operation-list" id="first-draft-audit">
  492. <div class="order-icon"></div>
  493. <div class="order-step">第2步</div>
  494. <div class="order-text"><h3>完成初稿</h3><p><span id="first-draft-time"></span></p></div>
  495. </div>
  496. <#-- <div class="operation-btn" id="first-draft-end">完成初稿</div> -->
  497. <div class="operation-list" id="finalize-draft-audit">
  498. <div class="order-icon"></div>
  499. <div class="order-step">第3步</div>
  500. <div class="order-text"><h3>定稿审核</h3><p><span id="finalize-draft-time"></span></p></div>
  501. </div>
  502. <div class="operation-btn" id="finalize-draft-end">完成定稿</div>
  503. <div class="operation-list" id="printing-audit">
  504. <div class="order-icon"></div>
  505. <div class="order-step">第4步</div>
  506. <div class="order-text"><h3>印前审核</h3><p><span id="check-time"></span></p></div>
  507. </div>
  508. <div class="operation-list" id="design-complete">
  509. <div class="order-icon"></div>
  510. <div class="order-step">第5步</div>
  511. <div class="order-text"><h3>订单完成</h3><p><span id="modify-time"></span></p></div>
  512. </div>
  513. </div>
  514. </div>
  515. <div class="operation">
  516. <div class="operation-title">产品信息<div class="describe"><span class="text-blue" onclick="doCopyProductInfo(1);">复制文件名</span><!--<span onclick="doCopyProductInfo();" class="text-yellow">复制信息</span>--></div></div>
  517. <div class="product-box clear">
  518. <div class="product-info"><span id="copy_content">${order.getOrderText()}</span><br>
  519. <#if !order.isOnlyDesign()>
  520. <span style="color:#077df9;">收货信息:${order.getReceiverName()} ${order.getUserMobile()} ${order.getReceiverState()} ${order.getReceiverCity()} ${order.getReceiverDistrict()} ${order.getReceiverAddress()}</span>
  521. </#if>
  522. </div>
  523. </div>
  524. </div>
  525. <div class="operation">
  526. <div class="operation-title">设计师文件<div class="describe" id="goTemplate">
  527. <#if checkToken != "">
  528. <#if designOrder.getTemplateId() != 0>
  529. <span class="text-blue" onclick="toEditor()">重新设计</span>
  530. <#else>
  531. <!--<span class="text-blue" onclick="toEditor()">开始设计</span> -->
  532. </#if>
  533. <span class="text-blue" onclick="updateTemplateId()">绑定客户模板文件</span>
  534. <#else>
  535. <span class="text-red">渲染服务器出问题了,拿不到数据,请联系管理员处理</span>
  536. </#if>
  537. <!--<span class="text-blue" onclick="toDesign();">前往模板设计</span>-->
  538. </div></div>
  539. <div class="design-btn clear">
  540. <#if order.getDraftType() != 0>
  541. <button class="add-first-draft" id="orderToDraft" onclick="doDesignOrderDraft()">提交初稿</button>
  542. </#if>
  543. <button class="add-last-draft" id="orderToComplete" onclick="doDraftOrderToComplete()">提交定稿</button>
  544. <#if designOrder.getTemplateId() != 0 && checkToken != "">
  545. <button class="add-sync-draft" style="margin-left:10px;" onclick="toSyncFile()">同步文件</button>
  546. <button class="add-editor-draft" style="margin-left:10px;" onclick="daiEditor()">修改设计</button>
  547. </#if>
  548. </div>
  549. <div class="product-table">
  550. <table style="margin:20px 0 0 0;">
  551. <#for item : attaList>
  552. <#if order.isOnlyDesign()>
  553. <tr style="<#if item.getId() != "DesginFile" && item.getId() != "TbzFile" >display:none</#if>">
  554. <td width="200" align="center" style="color:#8e8e8e;">
  555. <div class="manuscript-title">${item.getName()}</div>
  556. <div class="manuscript-p">
  557. <#if item.getId()=="TbzFile" && checkToken != "">
  558. 编辑器文件</br>(注:不要随意删除,文件删除后必须点击代编修改保存后才可重新同步)
  559. <#else>
  560. 请上传设计稿件</br>(支持稿件类型:${designType.getDesignFileType()})
  561. </#if>
  562. </div>
  563. </td>
  564. <td style="padding:12px 0 12px 10px;">
  565. <button class="add-manuscript ${zmr_color_class}" id="upload_${item.getId()}" <#if !item.isAdd()>disabled=true</#if>><img src="zinc/images/add-manuscript.png" ></button>
  566. <div class="manuscript-box" id="div_${item.getId()}">
  567. <#if designOrder.getTemplateId() != 0 && item.getId()=="DesginFile" && checkToken != "" && order.getStatus() lt 55 >
  568. <button class="add-editor-draft" style="margin-left: 10px;margin-top: 20px;color: white;" onclick="daiEditor()">修改设计</button>
  569. </#if>
  570. <#for atta : fileList>
  571. <#if checkToken != "" && Validates.isEqual(atta.getAttaModul(), item.getId())>
  572. <div class="manu-list" id="paper_${atta.getAttaId()}">
  573. <div class="manuscript-list" >
  574. <img src="zinc/images/${atta.getFileType()}.png" onerror="javascript:this.src='zinc/images/error.png'" >
  575. <div class="file-popup">
  576. <div class="download-btn" onclick="doDownFile('${atta.getAttaId()}');">下载</div>
  577. <button class="del-btn" onclick="doDeleteFile('${atta.getAttaId()}');" <#if !item.isDel()>disabled=true</#if>>删除</button>
  578. </div>
  579. </div>
  580. <p title="${atta.getFileName()}">${atta.getFileName()}</p>
  581. </div>
  582. </#if>
  583. </#for>
  584. </div>
  585. </td>
  586. </tr>
  587. <#elseif item.getType() == "file" && item.getId() != "CustomFile">
  588. <tr style="<#if item.getId() == "AftersaleFile">display:none</#if>">
  589. <td width="200" align="center" style="color:#8e8e8e;">
  590. <div class="manuscript-title">${item.getName()}</div>
  591. <div class="manuscript-p">
  592. <#if item.getId()=="DesginFile">请上传设计稿件</br>(支持稿件类型:${designType.getDesignFileType()})
  593. <#elseif item.getId()=="EndFile">请根据产品格式要求上传定稿转曲印刷文件</br>(支持稿件类型:${designType.getPrintingFileType()})
  594. <#elseif item.getId()=="WorkFile">请将带后加工产品详细工艺标示出来,并在图片上备注清楚
  595. <#elseif item.getId()=="TbzFile" && checkToken != "">编辑器文件</br>(注:不要随意删除,文件删除后必须点击代编修改保存后才可重新同步)
  596. </#if>
  597. </div>
  598. </td>
  599. <td style="padding:12px 0 12px 10px;">
  600. <button class="add-manuscript ${zmr_color_class}" id="upload_${item.getId()}" <#if !item.isAdd()>disabled=true</#if>><img src="zinc/images/add-manuscript.png" ></button>
  601. <div class="manuscript-box" id="div_${item.getId()}">
  602. <#for atta : fileList>
  603. <#if checkToken != "" && Validates.isEqual(atta.getAttaModul(), item.getId())>
  604. <div class="manu-list" id="paper_${atta.getAttaId()}">
  605. <div class="manuscript-list" >
  606. <img src="zinc/images/${atta.getFileType()}.png" >
  607. <div class="file-popup">
  608. <div class="download-btn" onclick="doDownFile('${atta.getAttaId()}');">下载</div>
  609. <button class="del-btn" onclick="doDeleteFile('${atta.getAttaId()}');" <#if !item.isDel()>disabled=true</#if>>删除</button>
  610. </div>
  611. </div>
  612. <p title="${atta.getFileName()}">${atta.getFileName()}</p>
  613. </div>
  614. </#if>
  615. </#for>
  616. <#if checkToken != "" && designOrder.getTemplateId() != 0 && item.getId()=="DesginFile" && order.getStatus() lt 55>
  617. <button class="add-editor-draft" style="margin-left: 10px;margin-top: 20px;color: white;" onclick="daiEditor()">修改设计</button>
  618. </#if>
  619. </div>
  620. </td>
  621. </tr>
  622. </#if>
  623. </#for>
  624. <tr>
  625. <td width="200" align="center" style="color:#8e8e8e;">
  626. <div class="manuscript-title">初稿缩略图</div>
  627. </td>
  628. <td style="padding:12px 0 12px 10px;">
  629. <div class="manuscript-box">
  630. <#if order != null>
  631. <div class="thumbnail"><img src="${order.getDesignId()}-FristThumFile.png" onerror="javascript:this.src='zinc/images/frist-error.png'" onclick='showLargeImg(this)' ></div>
  632. </#if>
  633. </div>
  634. </td>
  635. </tr>
  636. </table>
  637. </div>
  638. </div>
  639. </div>
  640. <div class="order-box-right">
  641. <div class="operation">
  642. <div class="operation-title">联系客户</div>
  643. <div class="contact-annotation">注意:如果客户问你是哪个店铺的设计师,请告诉客户你是【领淘设计】的设计师</div>
  644. <div class="material clear">
  645. <div class="material-list" style="background:#e3f0ff;">
  646. <div class="material-list-t">联系方式</div>
  647. <div class="material-list-c">
  648. <button id="quickContactBtn" onclick="quickContact();">快捷联系方式</button>
  649. </div>
  650. </div>
  651. <div class="material-list">
  652. <div class="material-list-t">客户资料</div>
  653. <div class="material-list-c">${order.getUserText()}</div>
  654. </div>
  655. <div class="material-list">
  656. <div class="material-list-t">客户素材</div>
  657. <div class="matter-list-c clear" style="text-align: right;">
  658. <div class="check-all">
  659. <div style="float:left; padding:2px 0 0 0;">
  660. <input type="checkbox" id="box_CustomFile" onclick="Z.FM.doSelectCheckBox('str_CustomFile', this.checked);" class="z-checkbox z-mg-l2" data-role="z-checkbox" data-class="${zmr_color_class}" >
  661. <span style="font-size:14px; line-height:28px;" id="fileType_Text_CustomFile" class="z-pointer" onclick=" Z(this).parent().find('zcover>i.z-checkbox').click();">全选</span>
  662. </div>
  663. <button id="download_CustomFile" style="margin:0 10px 0 0;" class="z-button z-orange z-pd3" onclick="materialDoDownFile('CustomFile');">下载</button>
  664. </div>
  665. <#for atta : fileList>
  666. <!--CustomFile-->
  667. <#if atta.getAttaModul() == "CustomFile">
  668. <div class="matter-list" style="text-align:left;" title="${atta.getFileName()}">
  669. <input name="str_CustomFile" type="checkbox" data-attaId="${atta.getAttaId()}" data-attaUrl="${atta.getOssUrl()}" data-fileName="${atta.getFileName()}" class="z-checkbox" data-role="z-checkbox" data-class="${zmr_color_class}" value ="${atta.getAttaId()}">
  670. <span class="z-pd6" onclick="Z(this).parent().find('zcover>i.z-checkbox').click();">${atta.getFileName()}</span>
  671. </div>
  672. </#if>
  673. </#for>
  674. </div>
  675. </div>
  676. <#if Validates.isNotEmptyBlank(order.getPrintSpecial())>
  677. <div class="material-list">
  678. <div class="material-list-t">特殊工艺</div>
  679. <div class="material-list-c">${order.getPrintSpecial()}</div>
  680. </div>
  681. </#if>
  682. <#if Validates.isNotEmptyBlank(order.getServicesMessage())>
  683. <div class="material-list">
  684. <div class="material-list-t">客服备注</div>
  685. <div class="material-list-c">${order.getServicesMessage()}</div>
  686. </div>
  687. </#if>
  688. </div>
  689. </div>
  690. <div class="operation product-table" style="padding:0 20px 20px 20px;">
  691. <div class="operation-title" style="padding:20px 0 20px 0;">交稿规范</div>
  692. <div id="editor-container">
  693. </div>
  694. </div>
  695. </div>
  696. </div>
  697. </div>
  698. </div>
  699. <style>
  700. html {overflow-x: hidden; overflow-y: hidden;}
  701. body{ background:#e6e9f2; height:100%;}
  702. .matter-list{ width:100%; float:left; padding:0 10px 0 0;}
  703. .matter-list input{ float:left; margin:3px 6px 0 0;}
  704. .matter-list span{ float:left; line-height:24px; font-size:12px; padding:0; width:80%; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
  705. .matter-list button{ float:right; background-color:#fff!important; border:none!important; color:#077df9!important;}
  706. .matter-list-c{ padding:8px 0 8px 10px; min-height:100px; width:calc(100% - 100px); color:#333; font-size:14px;}
  707. .clear:after{content:'';display:block;clear:both;height:0;overflow:hidden;visibility:hidden;}
  708. .clear{zoom:1;}
  709. #editor-container {
  710. width: 100%; /* 容器宽度为100% */
  711. height: 400px; /* 容器高度,根据需要设置 */
  712. overflow-y: auto; /* 内容超出时允许垂直滚动 */
  713. border: 1px solid #ccc; /* 为了视觉效果,给容器添加边框 */
  714. position: relative; /* 如果需要定位内部元素,可以设置为relative */
  715. }
  716. .ql-tooltip {
  717. display: none;
  718. }
  719. .detail-title{ background:#fff; height:48px; color:#85858d; font-size:16px; line-height:48px; border-bottom:1px solid #e1e1e1;}
  720. .onBack img{ width:14px; display: inline-block; vertical-align: middle; margin:0 12px;}
  721. .onBack span{ display: inline-block; vertical-align: middle;}
  722. .onBack{ float:left; font-size:14px; padding:0 20px 0 0; position: relative; height:48px; line-height:46px; cursor: pointer;}
  723. .onBack::after{ content:''; display: block; border-right:1px solid #e1e1e1; position: absolute; top:10px; right:0; height:28px;}
  724. .title-text{ float: left; padding:0 0 0 20px;}
  725. .order-box-left{ float: left; width:70%;}
  726. .order-box-right{ width:30%; float: right; padding:0 0 0 20px; box-sizing: border-box;}
  727. .operation-active .order-icon{ background:#077df9;}
  728. .operation-active .order-step{ background:#1182fc; border:1px solid #1182fc; color:#fff;}
  729. .operation-active .order-text h3{ color:#1182fc;}
  730. .operation{ background:#fff; padding:0 0 20px 0; margin:0 0 14px 0;}
  731. .order-icon{ width:54px; height:54px; border-radius: 54px; background:#dfe1ed; margin:16px 0 14px 30px;}
  732. .order-icon img{ width:24px; height:24px; margin:15px 0 0 15px;}
  733. .operation-box{ padding:0 0 0 4%;}
  734. .operation-list{ float: left; width:186px; padding:0 35px 0 35px; position: relative;}
  735. .operation-btn{ float: left; font-size:13px; border:1px solid #dddddd; margin:86px 0 0 0; color:#333; padding:0 12px; line-height:30px; border-radius:4px;}
  736. .operation-list::before{ content:''; display: block; border-top:1px solid #dddddd; width:34px; position: absolute; left:0; top:100px;}
  737. .operation-list::after{ content:''; display: block; border-top:1px solid #dddddd; width:33px; position: absolute; right:0; top:100px;}
  738. .operation-list:first-child::before{ content:none;}
  739. .operation-list:last-child::after{ content:none;}
  740. .order-step{ width:100%; font-size:12px; background:#fff; color:#49494b; border:1px solid #dddddd; text-align: center; line-height:30px; border-radius:4px;}
  741. .order-text{ text-align: center; padding:0 0 18px 0;}
  742. .order-text span{ width:100%; display: inline-block;}
  743. .order-text h3{ color:#666; line-height:24px; font-size:14px; padding:10px 0 0 0; margin:0;}
  744. .order-text p{ color:#9d9ca1; font-size:12px; line-height:20px;}
  745. .operation-title{ color:#333; font-size:18px; font-weight: bold; padding:20px 0 20px 20px; position: relative;}
  746. .product-box{ padding:0 20px;}
  747. .product-info{ background:#edeff3; line-height:30px; color:#333; font-size:14px; border-left:1px solid #3081dc; padding:16px 0 16px 20px;}
  748. .table-title{ font-size:14px; color:#646975; line-height:42px; font-weight: bold; padding:10px 0 0 0;}
  749. .product-table{ padding:0 20px; color:#333;}
  750. .product-table table{border-top:1px solid #efefef; border-left:1px solid #efefef; width:100%;}
  751. .product-table table td{ border-right:1px solid #efefef; border-bottom:1px solid #efefef; height:40px; padding:0 20px; color:#333;}
  752. .describe{ position: absolute; top:0; right:0; padding:24px 20px 0 0; cursor: pointer;}
  753. .describe span{ font-size:16px; font-weight:400; margin:0 0 0 20px;}
  754. .text-blue{ color:#077df9;}
  755. .text-yellow{ color:#e0b66e;}
  756. .a-text-blue{ float: right; color:#077df9;}
  757. .design-btn{ padding:0 0 0 20px; color:#fff;}
  758. .add-first-draft{ background:#eaa03d; padding:10px 28px; border-radius:4px; float: left; margin:0 10px 0 0; border:none;}
  759. .add-last-draft{ background:#1081ff; padding:10px 28px; border-radius:4px; float: left; border:none;}
  760. .add-sync-draft{ background:#50a14f; padding:10px 28px; border-radius:4px; float: left; border:none;}
  761. .add-editor-draft{ background:#a626a4; padding:10px 28px; border-radius:4px; float: left; border:none;}
  762. .manu-list{ width:108px; float:left; margin:0 12px 0 0;}
  763. .manu-list p{ line-height:30px; height:30px; width:100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
  764. .manuscript-list{ position: relative; width:108px; height:64px; background:#dce2ee; padding:12px 0 0 0; box-sizing: border-box; float:left;}
  765. .manuscript-list img{ width:38px; height:38px; margin:0 auto; display: block;}
  766. .file-popup{ display:none; position: absolute; top:0; left:0; background: rgba(0,0,0,.3); width:100%; height:100%; padding:8px 0 0 0; }
  767. .del-btn{ background:#ff5a56; border:none; cursor: pointer; color:#fff; width:52px; height:22px; text-align: center; font-size:12px; margin:4px 0 0 30px; line-height:20px;}
  768. .download-btn{ background:#077df9; cursor: pointer; color:#fff; width:52px; height:22px; text-align: center; font-size:12px; margin:0 0 0 30px; line-height:22px;}
  769. .manuscript-list p{ width:90%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin:6px 0 0 5%; font-size:12px; color:#787c88;}
  770. .manuscript-box{ float: left;}
  771. .add-manuscript{ width:86px; height:86px; border:1px dashed #e2e2e2; float:left; margin:0 12px 0 0;}
  772. .add-manuscript img{ width:32px; height:32px;}
  773. .thumbnail{ width:86px; height:86px;}
  774. .thumbnail img{ width:100%; height:100%; cursor: pointer;}
  775. .manuscript-title{ font-size:16px; font-weight: bold; color:#333; line-height:30px;}
  776. .manuscript-p{ font-size:12px; color:#b2b3b8; line-height:20px;}
  777. .material{ margin:0 20px; }
  778. .material-list{ float:left; overflow:auto; display: flex; border-radius:4px; margin:0 0 4px 0; width:100%; border:1px solid #e1e1e1;}
  779. .material-list-t{ background:#b7d9fe; color:#077df9; width:100px; justify-content: center; align-items:center; display: flex;}
  780. .material-list-c{ padding:8px 0 8px 10px; min-height:100px; width:calc(100% - 100px); color:#333; font-size:14px; align-items:center; display: flex;}
  781. .material-list-c img{ width:130px; height:130px;}
  782. .material-list-c button{ color:#077df9; text-decoration: underline; cursor: pointer; background:none; border:none;}
  783. .contact-annotation{ background:#eaf4ff; line-height:24px; border:1px solid #cfdbe7; margin:0 20px 10px 20px; color:#077df9; font-size:14px; padding:10px; box-sizing: border-box;}
  784. .logs-list{ width: 100%; float: left; border-left:1px solid #c9d0d6; padding:0 0 24px 0; margin:0 0 0 6px; position: relative;}
  785. .logs-list::after{ content:''; display: block; width:12px; height:12px; border-radius:12px; background:#077df9; position: absolute; top:0; left:-6px;}
  786. .order-state{ float: left; color:#077df9; margin:0 20px 0 20px;}
  787. .logs-box{ float: left; color:#4c4a55;}
  788. .logs-box p{ color:#8f9092;}
  789. .mainbody {height: calc(100% - 66px); min-height: 500px; overflow-y: scroll;}
  790. .orderDetail{ height:100%; padding:20px;}
  791. .operation-active.operation-btn{ background:#077df9; color:#fff;}
  792. .operation-active::before{ border-top:1px solid #1182fc;}
  793. .operation-active::after{ border-top:1px solid #1182fc;}
  794. #first-draft-audit .order-icon{ background:#dfe1ed url(zinc/images/order-icon02.png) no-repeat 15px 15px; background-size:24px 24px;}
  795. #finalize-draft-audit .order-icon{ background:#dfe1ed url(zinc/images/order-icon03.png) no-repeat 15px 15px; background-size:24px 24px;}
  796. #printing-audit .order-icon{ background:#dfe1ed url(zinc/images/order-icon04.png) no-repeat 15px 15px; background-size:24px 24px;}
  797. #design-complete .order-icon{ background:#dfe1ed url(zinc/images/order-icon05.png) no-repeat 15px 15px; background-size:24px 24px;}
  798. #first-draft-audit.operation-active .order-icon{ background:#077df9 url(zinc/images/order-icon02-active.png) no-repeat 15px 15px; background-size:24px 24px;}
  799. #finalize-draft-audit.operation-active .order-icon{ background:#077df9 url(zinc/images/order-icon03-active.png) no-repeat 15px 15px; background-size:24px 24px;}
  800. #printing-audit.operation-active .order-icon{ background:#077df9 url(zinc/images/order-icon04-active.png) no-repeat 15px 15px; background-size:24px 24px;}
  801. #design-complete.operation-active .order-icon{ background:#077df9 url(zinc/images/order-icon05-active.png) no-repeat 15px 15px; background-size:24px 24px;}
  802. .order-text p{ position: absolute; bottom:0;}
  803. .check-all{ width:100%; float:left; padding:0 0 6px 0;}
  804. .progress-bar {
  805. width: 500px;
  806. background-color: #f3f3f3;
  807. height: 20px;
  808. border-radius: 5px;
  809. overflow: hidden;
  810. margin-left:100px;
  811. margin-top:40px;
  812. }
  813. .progress-bar-fill {
  814. height: 100%;
  815. background-color: #3498db;
  816. width: 0;
  817. transition: width 0.5s ease;
  818. }
  819. </style>