details_fragment.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  1. <style>
  2. html.procuremen-details-dialog,
  3. html.procuremen-details-dialog body.procuremen-details-dialog {
  4. height: auto !important;
  5. min-height: 0 !important;
  6. margin: 0;
  7. overflow-x: hidden;
  8. overflow-y: auto;
  9. -webkit-overflow-scrolling: touch;
  10. background: #fff;
  11. }
  12. body.is-dialog .procuremen-details-wrap {
  13. margin: 0;
  14. padding: 12px 14px 28px;
  15. }
  16. .procuremen-details-wrap .section-title {
  17. font-size: 14px;
  18. font-weight: 600;
  19. margin: 18px 0 10px;
  20. color: #333;
  21. padding-bottom: 6px;
  22. border-bottom: 1px solid #eee;
  23. }
  24. .proc-steps-wrap {
  25. display: flex;
  26. flex-wrap: nowrap;
  27. justify-content: space-between;
  28. align-items: flex-start;
  29. padding: 8px 4px 4px;
  30. overflow-x: auto;
  31. -webkit-overflow-scrolling: touch;
  32. }
  33. .proc-step-item {
  34. flex: 1 1 0;
  35. min-width: 100px;
  36. text-align: center;
  37. position: relative;
  38. padding: 0 4px;
  39. }
  40. .proc-step-item:not(:last-child)::after {
  41. content: '';
  42. position: absolute;
  43. top: 14px;
  44. left: 50%;
  45. width: 100%;
  46. height: 2px;
  47. background: #e0e0e0;
  48. z-index: 0;
  49. }
  50. .proc-step-item.is-done:not(:last-child)::after {
  51. background: #1890ff;
  52. }
  53. .proc-step-circle {
  54. width: 28px;
  55. height: 28px;
  56. line-height: 28px;
  57. border-radius: 50%;
  58. margin: 0 auto 6px;
  59. font-size: 13px;
  60. font-weight: 600;
  61. position: relative;
  62. z-index: 1;
  63. background: #f5f5f5;
  64. color: #999;
  65. border: 2px solid #ddd;
  66. }
  67. .proc-step-item.is-done .proc-step-circle {
  68. background: #1890ff;
  69. border-color: #1890ff;
  70. color: #fff;
  71. }
  72. .proc-step-item.is-current .proc-step-circle {
  73. background: #1890ff;
  74. border-color: #1890ff;
  75. color: #fff;
  76. box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.25);
  77. }
  78. .proc-step-item.is-done .proc-step-circle .fa {
  79. line-height: 24px;
  80. }
  81. .proc-step-title {
  82. font-size: 12px;
  83. color: #333;
  84. line-height: 1.35;
  85. margin-bottom: 2px;
  86. }
  87. .proc-step-sub {
  88. font-size: 11px;
  89. color: #888;
  90. line-height: 1.3;
  91. min-height: 2.6em;
  92. }
  93. .proc-step-time {
  94. font-size: 11px;
  95. color: #aaa;
  96. margin-top: 4px;
  97. white-space: nowrap;
  98. }
  99. .procuremen-details-wrap .procuremen-order-info-block {
  100. border: 1px solid #ddd;
  101. margin-top: 18px;
  102. margin-bottom: 0;
  103. }
  104. .procuremen-details-wrap .procuremen-order-info-head {
  105. background: #f0f0f0;
  106. border-bottom: 1px solid #ddd;
  107. padding: 10px 12px;
  108. font-size: 14px;
  109. font-weight: 700;
  110. color: #222;
  111. margin: 0;
  112. }
  113. .procuremen-details-wrap .procuremen-order-grid {
  114. width: 100%;
  115. border-collapse: collapse;
  116. table-layout: fixed;
  117. font-size: 13px;
  118. margin: 0;
  119. background: #fff;
  120. border: none;
  121. }
  122. .procuremen-details-wrap .procuremen-order-grid td {
  123. border: 1px solid #ddd;
  124. padding: 10px 12px;
  125. vertical-align: middle;
  126. }
  127. .procuremen-details-wrap .procuremen-order-grid .og-label {
  128. width: 14%;
  129. background: #f5f5f5;
  130. color: #333;
  131. text-align: right;
  132. font-weight: normal;
  133. }
  134. .procuremen-details-wrap .procuremen-order-grid .og-value {
  135. width: 36%;
  136. background: #fff;
  137. color: #000;
  138. text-align: left;
  139. font-weight: 700;
  140. word-break: break-word;
  141. }
  142. .procuremen-details-wrap .details-process-table-wrap {
  143. overflow-x: auto;
  144. -webkit-overflow-scrolling: touch;
  145. }
  146. .procuremen-details-wrap .details-process-table {
  147. margin: 0;
  148. font-size: 12px;
  149. table-layout: fixed;
  150. width: 100%;
  151. min-width: 820px;
  152. border-collapse: collapse;
  153. }
  154. .procuremen-details-wrap .details-process-table th {
  155. background: #f5f5f5;
  156. white-space: nowrap;
  157. font-weight: 600;
  158. padding: 8px 10px;
  159. vertical-align: middle;
  160. border: 1px solid #ddd;
  161. }
  162. .procuremen-details-wrap .details-process-table td {
  163. padding: 8px 10px;
  164. vertical-align: middle;
  165. word-wrap: break-word;
  166. border: 1px solid #ddd;
  167. }
  168. .procuremen-details-wrap .details-process-table th.text-center,
  169. .procuremen-details-wrap .details-process-table td.text-center {
  170. text-align: center;
  171. }
  172. .procuremen-details-wrap .procuremen-oper-log {
  173. list-style: none;
  174. margin: 0 0 8px;
  175. padding: 0;
  176. font-size: 13px;
  177. line-height: 1.65;
  178. border: 1px solid #e8e8e8;
  179. border-radius: 4px;
  180. background: #fafafa;
  181. max-height: 280px;
  182. overflow-y: auto;
  183. }
  184. .procuremen-details-wrap .procuremen-oper-log li {
  185. padding: 8px 12px;
  186. border-bottom: 1px solid #eee;
  187. word-break: break-word;
  188. }
  189. .procuremen-details-wrap .procuremen-oper-log li:last-child {
  190. border-bottom: none;
  191. }
  192. .procuremen-details-wrap .procuremen-oper-log .op-user {
  193. font-weight: 700;
  194. color: #000;
  195. }
  196. .procuremen-details-wrap .procuremen-oper-log .op-time {
  197. color: #666;
  198. margin: 0 6px;
  199. }
  200. .procuremen-details-wrap .procuremen-oper-log .op-text {
  201. color: #333;
  202. }
  203. .procuremen-details-wrap .procuremen-oper-log-empty {
  204. font-size: 13px;
  205. color: #999;
  206. padding: 10px 12px;
  207. border: 1px dashed #ddd;
  208. border-radius: 4px;
  209. margin-bottom: 8px;
  210. }
  211. .procuremen-details-wrap .detail-mini {
  212. font-size: 12px;
  213. }
  214. .procuremen-details-wrap .detail-mini th,
  215. .procuremen-details-wrap .detail-mini td {
  216. padding: 6px 8px;
  217. vertical-align: middle;
  218. }
  219. .procuremen-details-wrap .detail-supplier-table {
  220. min-width: 1180px;
  221. }
  222. .procuremen-details-wrap .details-supplier-table-wrap {
  223. overflow-x: auto;
  224. overflow-y: visible;
  225. -webkit-overflow-scrolling: touch;
  226. margin-bottom: 4px;
  227. }
  228. .procuremen-details-wrap .detail-supplier-table td.detail-quote-empty {
  229. color: #e67e22;
  230. }
  231. html.procuremen-details-dialog .procuremen-details-wrap .proc-step-item .proc-step-time:empty {
  232. display: none;
  233. margin: 0;
  234. min-height: 0;
  235. }
  236. </style>
  237. <div class="panel panel-default panel-intro procuremen-details-wrap{if !empty($pdf_export)} procuremen-pdf-inner{/if}" style="border:0;box-shadow:none;">
  238. {notempty name="pdf_export"}
  239. <div class="page-head">
  240. {notempty name="ccydh"}
  241. <table class="proc-pdf-order-no" cellpadding="0" cellspacing="0" style="border-collapse:collapse;margin:0;padding:0;">
  242. <tr>
  243. <td style="font-size:15px;font-weight:700;color:#000;padding:0 8px 0 0;vertical-align:baseline;white-space:nowrap;">订单号</td>
  244. <td style="font-size:15px;font-weight:700;color:#000;vertical-align:baseline;word-break:break-all;">{$ccydh|htmlentities}</td>
  245. </tr>
  246. </table>
  247. {/notempty}
  248. </div>
  249. {/notempty}
  250. <div class="section-title"{if !empty($pdf_export)} style="margin:16px 0 10px;font-size:14px;font-weight:600;color:#333;padding-bottom:6px;border-bottom:1px solid #eee;"{/if}>状态进度</div>
  251. {notempty name="pdf_export"}
  252. <div class="proc-pdf-steps-outer" style="overflow:hidden;margin:0;padding:0;">
  253. <table class="proc-steps-table-pdf" width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;table-layout:fixed;width:100%;margin:0 0 18px;">
  254. <tr>
  255. {volist name="steps" id="st"}
  256. <td style="vertical-align:top;text-align:center;padding:4px 1px 0;border:0 !important;width:16.666%;">
  257. <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;height:152px;margin:0 auto;">
  258. <tr>
  259. <td style="vertical-align:top;padding:0;border:0 !important;">
  260. <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;margin:0 auto 4px;">
  261. <tr style="height:28px;">
  262. <td style="width:50%;padding:0;border:0 !important;vertical-align:middle;height:28px;">
  263. {if $st.pdf_left_bg}
  264. <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;"><tr><td style="padding:0;border:0 !important;height:0;line-height:0;font-size:0;border-top:2px solid {$st.pdf_left_bg};">&#160;</td></tr></table>
  265. {/if}
  266. </td>
  267. <td style="width:28px;padding:0;border:0 !important;vertical-align:middle;text-align:center;height:28px;">
  268. {if $st.done}
  269. <span style="display:inline-block;width:28px;height:28px;line-height:26px;text-align:center;border-radius:14px;border:2px solid #1890ff;background-color:#1890ff;color:#ffffff;font-size:11px;font-weight:bold;">&#10003;</span>
  270. {elseif $st.current /}
  271. <span style="display:inline-block;width:28px;height:28px;line-height:26px;text-align:center;border-radius:14px;border:2px solid #1890ff;background-color:#1890ff;color:#ffffff;font-size:11px;font-weight:bold;">{$i}</span>
  272. {else /}
  273. <span style="display:inline-block;width:28px;height:28px;line-height:26px;text-align:center;border-radius:14px;border:2px solid #dddddd;background-color:#f5f5f5;color:#999999;font-size:11px;font-weight:bold;">{$i}</span>
  274. {/if}
  275. </td>
  276. <td style="width:50%;padding:0;border:0 !important;vertical-align:middle;height:28px;">
  277. {if $st.pdf_right_bg}
  278. <table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;"><tr><td style="padding:0;border:0 !important;height:0;line-height:0;font-size:0;border-top:2px solid {$st.pdf_right_bg};">&#160;</td></tr></table>
  279. {/if}
  280. </td>
  281. </tr>
  282. </table>
  283. </td>
  284. </tr>
  285. <tr>
  286. <td style="vertical-align:top;padding:2px 2px 0;border:0 !important;font-size:12px;color:#333;line-height:1.35;font-weight:600;text-align:center;">{$st.title|htmlentities}</td>
  287. </tr>
  288. <tr>
  289. <td style="vertical-align:top;padding:2px 2px 0;height:44px;border:0 !important;font-size:11px;color:#888;line-height:1.3;text-align:center;overflow:hidden;">{$st.subtitle|default=''|htmlentities}</td>
  290. </tr>
  291. <tr>
  292. <td style="vertical-align:bottom;padding:2px 2px 0;border:0 !important;font-size:11px;color:#aaa;text-align:center;white-space:nowrap;">{$st.time|default=''|htmlentities}</td>
  293. </tr>
  294. </table>
  295. </td>
  296. {/volist}
  297. </tr>
  298. </table>
  299. </div>
  300. {else /}
  301. <div class="proc-steps-wrap">
  302. {volist name="steps" id="st"}
  303. <div class="proc-step-item{if $st.done} is-done{/if}{if $st.current} is-current{/if}">
  304. <div class="proc-step-circle">
  305. {if $st.done}
  306. <i class="fa fa-check"></i>
  307. {else /}
  308. <span>{$i}</span>
  309. {/if}
  310. </div>
  311. <div class="proc-step-title">{$st.title|htmlentities}</div>
  312. <div class="proc-step-sub">{$st.subtitle|default=''|htmlentities}</div>
  313. <div class="proc-step-time">{$st.time|default=''|htmlentities}</div>
  314. </div>
  315. {/volist}
  316. </div>
  317. {/notempty}
  318. <div class="section-title">操作记录</div>
  319. {notempty name="operLogs"}
  320. <ul class="procuremen-oper-log">
  321. {volist name="operLogs" id="lg"}
  322. <li>
  323. <span class="op-user">{$lg.admin_name|default=''|htmlentities}</span>
  324. <span class="op-time">{$lg.createtime_text|default=''|htmlentities}</span>
  325. <span class="op-text">{$lg.content|default=''|htmlentities}</span>
  326. </li>
  327. {/volist}
  328. </ul>
  329. {else /}
  330. <p class="procuremen-oper-log-empty text-muted">暂无操作记录</p>
  331. {/notempty}
  332. <div class="procuremen-order-info-block">
  333. <div class="procuremen-order-info-head">本单工序({$processCount|default='1'} 项)</div>
  334. <div class="details-process-table-wrap">
  335. <table class="table table-bordered table-condensed details-process-table">
  336. <thead>
  337. <tr>
  338. <th class="text-center" style="width:100px;">订单号</th>
  339. <th style="min-width:160px;">印件名称</th>
  340. <th>工序名称</th>
  341. <th class="text-center" style="width:56px;">单位</th>
  342. <th class="text-center" style="width:88px;">本次数量</th>
  343. <th class="text-center" style="width:72px;">最高限价</th>
  344. <th class="text-center" style="width:80px;">订法</th>
  345. <th style="min-width:120px;">备注</th>
  346. </tr>
  347. </thead>
  348. <tbody>
  349. {notempty name="processDisplayRows"}
  350. {volist name="processDisplayRows" id="pr"}
  351. <tr>
  352. {if $pr.show_order_cells}
  353. <td class="text-center"{if condition="$pr.order_rowspan gt 1"} rowspan="{$pr.order_rowspan}"{/if}>{$pr.CCYDH|default=''|htmlentities}</td>
  354. <td{if condition="$pr.order_rowspan gt 1"} rowspan="{$pr.order_rowspan}"{/if}>{$pr.CYJMC|default=''|htmlentities}</td>
  355. {/if}
  356. <td>{$pr.CGYMC|default=''|htmlentities}</td>
  357. <td class="text-center">{$pr.CDW|default=''|htmlentities}</td>
  358. <td class="text-center">{$pr.This_quantity|default=''|htmlentities}</td>
  359. <td class="text-center">{$pr.ceilingPrice|default=''|htmlentities}</td>
  360. <td class="text-center">{$pr.CDF|default=''|htmlentities}</td>
  361. <td>{$pr.MBZ|default=''|htmlentities}</td>
  362. </tr>
  363. {/volist}
  364. {else /}
  365. <tr>
  366. <td colspan="8" class="text-center text-muted" style="padding:14px;">暂无工序数据</td>
  367. </tr>
  368. {/notempty}
  369. </tbody>
  370. </table>
  371. </div>
  372. </div>
  373. <div class="section-title">供应商</div>
  374. <div class="details-supplier-table-wrap table-responsive">
  375. <table class="table table-bordered table-condensed detail-mini detail-supplier-table">
  376. <thead>
  377. <tr>
  378. <th style="min-width:140px;">供应商名称</th>
  379. <th style="width:88px;">姓名</th>
  380. <th style="min-width:160px;">邮箱</th>
  381. <th style="width:120px;">手机号</th>
  382. <th style="min-width:120px;">工序名称</th>
  383. <th class="text-center" style="width:88px;">单价</th>
  384. <th class="text-center" style="width:100px;">交货日期</th>
  385. <th class="text-center" style="width:88px;">小计</th>
  386. <th class="text-center" style="width:88px;">采购确认</th>
  387. <th style="width:140px;">操作时间</th>
  388. </tr>
  389. </thead>
  390. <tbody>
  391. {notempty name="supplierQuoteGroups"}
  392. {volist name="supplierQuoteGroups" id="sg"}
  393. {volist name="sg.lines" id="ln" key="lk"}
  394. <tr{if !empty($sg.is_void)} class="text-muted"{/if}>
  395. {if $lk == 1}
  396. <td{if condition="$sg.display_rowspan gt 1"} rowspan="{$sg.display_rowspan}"{/if} style="vertical-align:middle;">
  397. {$sg.company_name|default=''|htmlentities}
  398. </td>
  399. <td{if condition="$sg.display_rowspan gt 1"} rowspan="{$sg.display_rowspan}"{/if} style="vertical-align:middle;">{$sg.username|default=''|htmlentities}</td>
  400. <td{if condition="$sg.display_rowspan gt 1"} rowspan="{$sg.display_rowspan}"{/if} style="vertical-align:middle;">{:htmlentities(mask_email(isset($sg['email']) ? $sg['email'] : ''))}</td>
  401. <td{if condition="$sg.display_rowspan gt 1"} rowspan="{$sg.display_rowspan}"{/if} style="vertical-align:middle;">{:htmlentities(mask_phone(isset($sg['phone']) ? $sg['phone'] : ''))}</td>
  402. {/if}
  403. <td>{$ln.cgymc|default=''|htmlentities}</td>
  404. <td class="text-center">{$ln.unit_price_text|default=''|htmlentities}</td>
  405. <td class="text-center">{$ln.delivery_ymd|default=''|htmlentities}</td>
  406. <td class="text-center">{$ln.subtotal_text|default=''|htmlentities}</td>
  407. <td class="text-center">
  408. {if !empty($ln.is_void)}
  409. <span class="label label-default">历史</span>
  410. {elseif !empty($ln.is_picked) /}
  411. <span class="label label-success">已选</span>
  412. {else /}
  413. <span class="text-muted"> </span>
  414. {/if}
  415. </td>
  416. <td>{$ln.oper_time_text|default=''|htmlentities}</td>
  417. </tr>
  418. {/volist}
  419. {if !empty($sg.has_total)}
  420. <tr class="active">
  421. <td colspan="3" class="text-right"><strong>总计</strong></td>
  422. <td class="text-center"><strong>{$sg.total_text|default=''|htmlentities}</strong></td>
  423. <td colspan="2"></td>
  424. </tr>
  425. {/if}
  426. {/volist}
  427. {else /}
  428. {notempty name="detailRows"}
  429. {volist name="detailRows" id="dr"}
  430. <tr>
  431. <td>{$dr.company_name|default=''|htmlentities}</td>
  432. <td>{$dr.username|default=''|htmlentities}</td>
  433. <td>{:htmlentities(mask_email(isset($dr['email']) ? $dr['email'] : ''))}</td>
  434. <td>{:htmlentities(mask_phone(isset($dr['phone']) ? $dr['phone'] : ''))}</td>
  435. <td></td>
  436. <td class="text-center">{$dr.amount|default=''|htmlentities}</td>
  437. <td class="text-center">{$dr.delivery_ymd|default=''|htmlentities}</td>
  438. <td class="text-center"></td>
  439. <td class="text-center">
  440. {if isset($dr.is_void) && $dr.is_void}
  441. <span class="label label-default">历史下发</span>
  442. {elseif !empty($dr.is_picked) /}
  443. <span class="label label-success">已选</span>
  444. {else /}
  445. <span class="text-muted"> </span>
  446. {/if}
  447. </td>
  448. <td>{$dr.oper_time_text|default=''|htmlentities}</td>
  449. </tr>
  450. {/volist}
  451. {else /}
  452. <tr>
  453. <td colspan="10" class="text-center text-muted">暂无下发明细</td>
  454. </tr>
  455. {/notempty}
  456. {/notempty}
  457. </tbody>
  458. </table>
  459. </div>
  460. </div>