audit_issue.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. <style>
  2. body.is-dialog .audit-issue-wrap {
  3. padding: 12px 14px 0;
  4. max-width: 100%;
  5. box-sizing: border-box;
  6. }
  7. .audit-issue-wrap .audit-block-title {
  8. margin: 0 0 6px;
  9. font-weight: 600;
  10. font-size: 13px;
  11. color: #333;
  12. }
  13. .audit-issue-wrap .audit-notify-tip {
  14. margin: 0 0 10px;
  15. padding: 8px 12px;
  16. font-size: 12px;
  17. line-height: 1.65;
  18. color: #8a6d3b;
  19. background: #fcf8e3;
  20. border: 1px solid #faebcc;
  21. border-radius: 3px;
  22. }
  23. .audit-issue-wrap .audit-table-wrap {
  24. /* 不在表格区域内部滚动,由弹窗页面整体滚动 */
  25. max-height: none;
  26. overflow-x: auto;
  27. overflow-y: visible;
  28. margin-bottom: 12px;
  29. border: 1px solid #e5e5e5;
  30. }
  31. .audit-issue-wrap .audit-process-table {
  32. margin: 0;
  33. font-size: 12px;
  34. table-layout: fixed;
  35. width: 100%;
  36. min-width: 980px;
  37. }
  38. .audit-issue-wrap .audit-process-table col:nth-child(3) {
  39. width: 130px;
  40. }
  41. .audit-issue-wrap .audit-process-table col:nth-child(4) {
  42. width: 80px;
  43. }
  44. .audit-issue-wrap .audit-process-table td.audit-process-name {
  45. white-space: nowrap;
  46. }
  47. .audit-issue-wrap .audit-process-table th {
  48. background: #f5f5f5;
  49. white-space: nowrap;
  50. font-weight: 600;
  51. padding: 6px 8px;
  52. vertical-align: middle;
  53. border: 1px solid #ddd !important;
  54. }
  55. .audit-issue-wrap .audit-process-table th.text-center,
  56. .audit-issue-wrap .audit-process-table td.text-center {
  57. text-align: center;
  58. }
  59. .audit-issue-wrap .audit-process-table td {
  60. padding: 6px 8px;
  61. vertical-align: middle;
  62. word-wrap: break-word;
  63. border: 1px solid #ddd !important;
  64. }
  65. .audit-issue-wrap .audit-table {
  66. margin: 0;
  67. font-size: 12px;
  68. border-collapse: collapse;
  69. }
  70. .audit-issue-wrap .audit-table th {
  71. background: #f5f5f5;
  72. white-space: nowrap;
  73. font-weight: 600;
  74. border: 1px solid #ddd !important;
  75. }
  76. .audit-issue-wrap .audit-table td {
  77. padding: 6px 8px;
  78. vertical-align: middle;
  79. word-wrap: break-word;
  80. border: 1px solid #ddd !important;
  81. }
  82. .audit-issue-wrap .audit-quote-pick-table tbody tr {
  83. cursor: pointer;
  84. }
  85. .audit-issue-wrap .audit-quote-pick-table td label {
  86. margin: 0;
  87. font-weight: normal;
  88. cursor: pointer;
  89. }
  90. .audit-issue-wrap .audit-quote-item {
  91. margin-bottom: 6px;
  92. font-size: 12px;
  93. line-height: 1.5;
  94. }
  95. .audit-issue-wrap .audit-quote-item:last-child {
  96. margin-bottom: 0;
  97. }
  98. .audit-issue-wrap .audit-deadline-row {
  99. display: flex;
  100. align-items: flex-start;
  101. flex-wrap: wrap;
  102. gap: 8px 12px;
  103. margin: 0 0 12px;
  104. font-size: 13px;
  105. position: relative;
  106. z-index: 61;
  107. overflow: visible;
  108. }
  109. .audit-issue-wrap .audit-deadline-row .audit-field-label {
  110. font-weight: 600;
  111. color: #333;
  112. white-space: nowrap;
  113. flex-shrink: 0;
  114. margin: 7px 0 0;
  115. }
  116. .audit-issue-wrap .audit-deadline-input-wrap {
  117. position: relative;
  118. flex: 0 1 auto;
  119. min-width: 0;
  120. z-index: 62;
  121. }
  122. .audit-issue-wrap .procuremen-sys-rq-split .procuremen-sys-rq-fields {
  123. display: flex;
  124. flex-wrap: wrap;
  125. align-items: center;
  126. gap: 8px;
  127. }
  128. .audit-issue-wrap .procuremen-sys-rq-split .procuremen-sys-rq-date {
  129. width: 148px;
  130. min-width: 132px;
  131. height: 32px;
  132. padding: 4px 8px;
  133. }
  134. .audit-issue-wrap .procuremen-sys-rq-split .procuremen-sys-rq-time-group {
  135. display: inline-flex;
  136. align-items: center;
  137. gap: 4px;
  138. }
  139. .audit-issue-wrap .procuremen-sys-rq-split .procuremen-sys-rq-hour,
  140. .audit-issue-wrap .procuremen-sys-rq-split .procuremen-sys-rq-minute {
  141. width: 62px;
  142. height: 32px;
  143. padding: 4px 6px;
  144. }
  145. .audit-issue-wrap .procuremen-sys-rq-split .procuremen-sys-rq-colon {
  146. color: #666;
  147. font-weight: 600;
  148. line-height: 32px;
  149. }
  150. .audit-issue-wrap .procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-date,
  151. .audit-issue-wrap .procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-hour,
  152. .audit-issue-wrap .procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-minute {
  153. background-color: #f5f5f5;
  154. color: #333;
  155. cursor: default;
  156. pointer-events: none;
  157. }
  158. .audit-issue-wrap .audit-op-cell {
  159. white-space: nowrap;
  160. }
  161. .audit-issue-wrap .audit-op-cell .btn {
  162. padding: 2px 7px;
  163. font-size: 12px;
  164. margin: 0 2px 2px 0;
  165. }
  166. .audit-issue-wrap .audit-table-wrap.audit-quote-table-wrap {
  167. max-height: none;
  168. overflow-x: auto;
  169. overflow-y: visible;
  170. }
  171. .audit-issue-wrap .audit-quote-detail-table {
  172. min-width: 1320px;
  173. }
  174. .audit-issue-wrap .audit-quote-detail-table td.audit-quote-empty {
  175. color: #e67e22;
  176. }
  177. .audit-issue-wrap .audit-deadline-row .audit-bid-open-btn {
  178. flex-shrink: 0;
  179. height: 32px;
  180. line-height: 20px;
  181. margin-left: 4px;
  182. }
  183. .audit-issue-wrap .audit-deadline-row .audit-bid-open-verified-tag {
  184. flex-shrink: 0;
  185. height: 32px;
  186. line-height: 32px;
  187. font-size: 15px;
  188. font-weight: 600;
  189. color: #3c763d;
  190. white-space: nowrap;
  191. margin-left: 8px;
  192. }
  193. .audit-issue-wrap .audit-deadline-row .audit-bid-open-verified-tag .fa {
  194. font-size: 16px;
  195. margin-right: 4px;
  196. vertical-align: -1px;
  197. }
  198. .audit-bid-open-modal {
  199. padding: 16px 18px 8px;
  200. font-size: 13px;
  201. }
  202. .audit-bid-open-modal .bid-open-tip {
  203. margin: 0 0 12px;
  204. padding: 8px 10px;
  205. color: #8a6d3b;
  206. background: #fcf8e3;
  207. border: 1px solid #faebcc;
  208. border-radius: 3px;
  209. line-height: 1.6;
  210. }
  211. .audit-bid-open-modal .bid-open-row {
  212. display: flex;
  213. align-items: center;
  214. flex-wrap: wrap;
  215. gap: 8px;
  216. margin-bottom: 10px;
  217. }
  218. .audit-bid-open-modal .bid-open-row label {
  219. width: 72px;
  220. margin: 0;
  221. font-weight: 600;
  222. color: #333;
  223. }
  224. .audit-bid-open-modal .bid-open-row select {
  225. width: 180px;
  226. height: 32px;
  227. }
  228. .audit-bid-open-modal .bid-open-row .bid-open-code {
  229. width: 110px;
  230. height: 32px;
  231. }
  232. .audit-bid-open-modal .bid-open-row .btn-send-code {
  233. min-width: 88px;
  234. }
  235. .audit-issue-wrap .audit-quote-detail-table td.audit-quote-pending {
  236. color: #e67e22;
  237. }
  238. </style>
  239. <div class="audit-issue-wrap">
  240. <div class="audit-table-wrap">
  241. <table class="table table-bordered table-condensed audit-process-table">
  242. <colgroup>
  243. <col style="width:100px"/>
  244. <col style="width:26%"/>
  245. <col style="width:130px"/>
  246. <col style="width:80px"/>
  247. <col style="width:72px"/>
  248. <col style="width:72px"/>
  249. <col style="width:72px"/>
  250. <col style="width:80px"/>
  251. <col/>
  252. </colgroup>
  253. <thead>
  254. <tr>
  255. <th class="text-center">订单号</th>
  256. <th>印件名称</th>
  257. <th>工序名称</th>
  258. <th class="text-center">单位</th>
  259. <th class="text-center">工作量</th>
  260. <th class="text-center">本次数量</th>
  261. <th class="text-center">最高限价</th>
  262. <th class="text-center">订法</th>
  263. <th>备注</th>
  264. </tr>
  265. </thead>
  266. <tbody>
  267. {volist name="processDisplayRows" id="pr"}
  268. <tr>
  269. {if $pr.show_order_cells}
  270. <td class="text-center"{if condition="$pr.order_rowspan gt 1"} rowspan="{$pr.order_rowspan}"{/if}>{$pr.CCYDH|default=''}</td>
  271. <td{if condition="$pr.order_rowspan gt 1"} rowspan="{$pr.order_rowspan}"{/if}>{$pr.CYJMC|default=''}</td>
  272. {/if}
  273. <td class="audit-process-name">{$pr.CGYMC|default=''}</td>
  274. <td class="text-center">{$pr.CDW|default=''}</td>
  275. <td class="text-center">{$pr.NGZL|default=''}</td>
  276. <td class="text-center">{$pr.This_quantity|default=''}</td>
  277. <td class="text-center">{$pr.ceilingPrice|default=''}</td>
  278. <td class="text-center">{$pr.CDF|default=''}</td>
  279. <td>{$pr.MBZ|default=''}</td>
  280. </tr>
  281. {/volist}
  282. </tbody>
  283. </table>
  284. </div>
  285. <form id="audit-issue-form" class="form-horizontal" role="form" style="margin-bottom:0;">
  286. {:token()}
  287. <input type="hidden" name="scydgy_id" value="{$scydgyId|htmlentities}"/>
  288. <input type="hidden" id="audit-quote-groups-json" value="{$quoteGroupsJson|htmlentities}"/>
  289. <input type="hidden" id="audit-bid-open-verified" value="{$bidOpenVerified|default=0}"/>
  290. <input type="hidden" id="audit-order-ccydh" value="{$orderCcydh|default=''|htmlentities}"/>
  291. <div class="audit-deadline-row">
  292. <span class="audit-field-label">截止时间:</span>
  293. <div class="audit-deadline-input-wrap procuremen-sys-rq-split is-readonly" id="audit-sys-rq-wrap" title="仅查看,不可修改">
  294. <input type="hidden" id="audit-sys-rq" name="sys_rq" value="{$sysRq|default=''|htmlentities}"/>
  295. <div class="procuremen-sys-rq-fields">
  296. <input type="date" class="form-control procuremen-sys-rq-date" title="截止日期" readonly="readonly" disabled="disabled" tabindex="-1"/>
  297. <div class="procuremen-sys-rq-time-group">
  298. <select class="form-control procuremen-sys-rq-hour" title="时" disabled="disabled" tabindex="-1"></select>
  299. <span class="procuremen-sys-rq-colon">:</span>
  300. <select class="form-control procuremen-sys-rq-minute" title="分" disabled="disabled" tabindex="-1"></select>
  301. </div>
  302. {if $bidOpenVerified}
  303. <span class="audit-bid-open-verified-tag"><i class="fa fa-check-circle"></i> 已开标验证</span>
  304. {else /}
  305. {if $auth->check('procuremen/bidopenverify') || $auth->check('procuremen/bidopen') || $auth->check('procuremen/auditissue')}
  306. <button type="button" class="btn btn-warning btn-sm audit-bid-open-btn" id="btn-audit-bid-open">
  307. <i class="fa fa-unlock-alt"></i> 开标
  308. </button>
  309. {/if}
  310. {/if}
  311. </div>
  312. </div>
  313. </div>
  314. </form>
  315. <!-- <p class="audit-notify-tip" style="margin-top:-2px;">-->
  316. <!-- <i class="fa fa-shield"></i>-->
  317. <!-- 未开标验证前,供应商单价与交货日期显示「未开标验证」;请点击「开标」完成双重验证后方可查看报价与交期并确认供应商(验证一次后本单可持续操作)。-->
  318. <!-- </p>-->
  319. <p class="audit-notify-tip">
  320. <i class="fa fa-exclamation-triangle"></i>
  321. <strong>重要提示:</strong>可先预选供应商,但点击「确认」前须完成开标验证。确认后将进入采购终审(本步<strong>不发送短信通知</strong>)。
  322. 需再次提醒报价时,请在右侧<strong>操作</strong>列点击「发邮件」或「发短信」。
  323. </p>
  324. <div class="audit-table-wrap audit-quote-table-wrap">
  325. <table class="table table-bordered table-condensed audit-table audit-quote-pick-table audit-quote-detail-table">
  326. <thead>
  327. <tr>
  328. <th class="text-center" style="width:42px;">选定</th>
  329. <th style="min-width:140px;">供应商名称</th>
  330. <th style="width:88px;">姓名</th>
  331. <th style="min-width:160px;">邮箱</th>
  332. <th style="width:120px;">手机号</th>
  333. <th style="width:130px;">工序名称</th>
  334. <th class="text-center" style="width:112px;">单价</th>
  335. <th class="text-center" style="width:118px;">交货日期</th>
  336. <th class="text-center" style="width:100px;">小计</th>
  337. <th class="text-center" style="width:120px;">操作</th>
  338. </tr>
  339. </thead>
  340. <tbody id="audit-quote-tbody">
  341. {volist name="quoteGroups" id="co" key="k"}
  342. {volist name="co.lines" id="ln" key="lk"}
  343. <tr>
  344. {if $lk == 1}
  345. <td class="text-center"{if condition="$co.display_rowspan gt 1"} rowspan="{$co.display_rowspan}"{/if} style="vertical-align:middle;">
  346. <label>
  347. <input type="radio" class="audit-quote-pick" name="audit_quote_pick" value="{$co.name|default=''|htmlentities}"
  348. {if condition="$pickedCompanyName neq '' && $pickedCompanyName eq $co.name"} checked="checked"{/if}/>
  349. </label>
  350. </td>
  351. <td{if condition="$co.display_rowspan gt 1"} rowspan="{$co.display_rowspan}"{/if} style="vertical-align:middle;">{$co.name|default=''|htmlentities}</td>
  352. <td{if condition="$co.display_rowspan gt 1"} rowspan="{$co.display_rowspan}"{/if} style="vertical-align:middle;">{$co.username|default=''|htmlentities}</td>
  353. <td{if condition="$co.display_rowspan gt 1"} rowspan="{$co.display_rowspan}"{/if} style="vertical-align:middle;">{:htmlentities(mask_email(isset($co['email']) ? $co['email'] : ''))}</td>
  354. <td{if condition="$co.display_rowspan gt 1"} rowspan="{$co.display_rowspan}"{/if} style="vertical-align:middle;">{:htmlentities(mask_phone(isset($co['phone']) ? $co['phone'] : ''))}</td>
  355. {/if}
  356. <td>{$ln.cgymc|default=''|htmlentities}</td>
  357. <td class="text-center{if condition="!empty($ln.amount_quote_pending)"} audit-quote-pending{elseif condition="$ln.amount_filled neq 1"} audit-quote-empty{/if}">{$ln.unit_price_text|default='未填写'|htmlentities}</td>
  358. <td class="text-center{if condition="!empty($ln.delivery_quote_pending)"} audit-quote-pending{elseif condition="$ln.delivery_filled neq 1"} audit-quote-empty{/if}">{$ln.delivery_show|default='未填写'|htmlentities}</td>
  359. <td class="text-center{if condition="!empty($ln.amount_quote_pending)"} audit-quote-pending{/if}">{$ln.subtotal_text|default=''|htmlentities}</td>
  360. {if $lk == 1}
  361. <td class="text-center audit-op-cell"{if condition="$co.display_rowspan gt 1"} rowspan="{$co.display_rowspan}"{/if} style="vertical-align:middle;">
  362. {if $auth->check('procuremen/auditresendemail')}
  363. <button type="button" class="btn btn-default btn-xs audit-row-send-email" data-company="{$co.name|default=''|htmlentities}">发邮件</button>
  364. {/if}
  365. {if $auth->check('procuremen/auditresendsms')}
  366. <button type="button" class="btn btn-default btn-xs audit-row-send-sms" data-company="{$co.name|default=''|htmlentities}">发短信</button>
  367. {/if}
  368. </td>
  369. {/if}
  370. </tr>
  371. {/volist}
  372. {if !empty($co.has_remark)}
  373. <tr{if !empty($co.is_void)} class="text-muted"{/if}>
  374. <td><strong>备注</strong></td>
  375. <td colspan="3" class="{if !empty($co.remark_quote_pending)}audit-quote-pending{/if}" style="text-align:left;vertical-align:middle;">{$co.remark|default=''|htmlentities}</td>
  376. </tr>
  377. {/if}
  378. {if !empty($co.has_total)}
  379. <tr class="active">
  380. <td><strong>总计</strong></td>
  381. <td></td>
  382. <td></td>
  383. <td class="text-center"><strong>{$co.total_text|default=''|htmlentities}</strong></td>
  384. </tr>
  385. {/if}
  386. {/volist}
  387. </tbody>
  388. </table>
  389. </div>
  390. <div class="form-group layer-footer">
  391. <div class="row procuremen-audit-issue-footer-row">
  392. <div class="col-xs-12 procuremen-audit-issue-footer-btns">
  393. {if $auth->check('procuremen/auditsubmit')}
  394. <button type="button" style="margin-right: 12px" class="btn btn-primary btn-embossed" id="btn-audit-issue-submit">
  395. <i class="fa fa-check"></i> 确认
  396. </button>
  397. {/if}
  398. <button type="button" class="btn btn-default btn-embossed" id="btn-audit-issue-close">
  399. <i class="fa fa-times"></i> 关闭
  400. </button>
  401. </div>
  402. </div>
  403. </div>
  404. </div>