m0_70156489 1 周之前
父節點
當前提交
d187c99e21

+ 18 - 0
application/admin/controller/Procuremen.php

@@ -5084,6 +5084,17 @@ class Procuremen extends Backend
         return ($ts !== false && $ts > 0) ? date('Y-m-d H:i:s', $ts) : $sr;
     }
 
+    protected function formatProcuremenSysRqForDisplay($sysRq): string
+    {
+        $sr = $this->formatProcuremenSysRqForInput($sysRq);
+        if ($sr === '') {
+            return '—';
+        }
+        $ts = strtotime($sr);
+
+        return ($ts !== false && $ts > 0) ? date('Y/m/d H:i', $ts) : $sr;
+    }
+
     /**
      * @param array{ccydh?:string,pos:array,merge_rows:array} $bundle
      * @return array{ccydh?:string,pos:array,merge_rows:array}
@@ -6978,6 +6989,13 @@ class Procuremen extends Backend
         $this->view->assign('confirmPickGroups', $confirmPickGroups);
         $this->view->assign('confirmPickCount', count($confirmPickGroups));
         $this->view->assign('pickedCompanyName', $pickedCompanyName);
+        $sysRqDisplay = '—';
+        if ($isPurchaseConfirm) {
+            $sysRqDisplay = $this->formatProcuremenSysRqForDisplay(
+                $this->resolveBundleSysRq(['pos' => $confirmBundle['pos'] ?? []])
+            );
+        }
+        $this->view->assign('sysRqDisplay', $sysRqDisplay);
         $this->view->assign('requiredSidListJson', json_encode(array_values($requiredSidList), JSON_UNESCAPED_UNICODE));
         $this->view->assign('allDetailsBySidJson', json_encode($allDetailsBySid, JSON_UNESCAPED_UNICODE));
 

+ 66 - 7
application/admin/view/procuremen/outward_detail.html

@@ -13,13 +13,20 @@
         color: #333;
     }
     .outward-detail-table-wrap,
-    .outward-confirm-process-wrap,
+    .outward-confirm-process-wrap {
+        overflow-x: auto;
+        overflow-y: auto;
+        max-height: min(200px, 32vh);
+        -webkit-overflow-scrolling: touch;
+        margin-bottom: 10px;
+        border: 1px solid #e5e5e5;
+    }
     .outward-confirm-company-wrap {
         overflow-x: auto;
         overflow-y: auto;
-        max-height: min(280px, 42vh);
+        max-height: min(560px, 62vh);
         -webkit-overflow-scrolling: touch;
-        margin-bottom: 12px;
+        margin-bottom: 10px;
         border: 1px solid #e5e5e5;
     }
     .outward-detail-table-wrap {
@@ -81,6 +88,52 @@
         font-size: 13px;
         color: #333;
     }
+    .outward-confirm-meta-row {
+        display: flex;
+        align-items: center;
+        flex-wrap: wrap;
+        gap: 6px 12px;
+        margin: 0 0 10px;
+        font-size: 13px;
+        line-height: 1.5;
+    }
+    .outward-confirm-deadline-row {
+        display: flex;
+        align-items: center;
+        flex-wrap: wrap;
+        gap: 8px 12px;
+        margin: 0 0 10px;
+        font-size: 13px;
+    }
+    .outward-confirm-deadline-row .deadline-label {
+        font-weight: 600;
+        color: #333;
+        white-space: nowrap;
+        margin: 0;
+    }
+    .outward-confirm-deadline-input {
+        width: 200px;
+        max-width: 100%;
+        height: 32px;
+        padding: 4px 10px;
+        font-size: 13px;
+        color: #333;
+        background-color: #f5f5f5;
+        border: 1px solid #ddd;
+        border-radius: 3px;
+        cursor: default;
+        box-shadow: none;
+    }
+    .outward-confirm-company-table.outward-confirm-readonly tbody tr {
+        cursor: default;
+    }
+    .outward-confirm-company-table.outward-confirm-readonly .pod-company-pick-cb {
+        pointer-events: none;
+        cursor: default;
+    }
+    .outward-confirm-company-table.outward-confirm-readonly label {
+        cursor: default;
+    }
     .outward-confirm-company-table td label {
         margin: 0;
         font-weight: normal;
@@ -131,7 +184,7 @@
     }
 </style>
 
-<div class="panel panel-default panel-intro outward-detail-wrap" style="border:0;box-shadow:none;"
+<div class="panel panel-default panel-intro outward-detail-wrap outward-confirm-readonly" style="border:0;box-shadow:none;"
      data-scydgy-id="{$scydgyId|htmlentities}"
      data-purchase-order-id="{$purchaseOrderId|default=0}"
      data-confirm-process-count="{$confirmProcessCount|default=1}"
@@ -178,15 +231,21 @@
     </div>
     {/if}
 
+    <div class="outward-confirm-deadline-row">
+        <label class="deadline-label" for="outward-confirm-sys-rq">截止时间:</label>
+        <input type="text" id="outward-confirm-sys-rq" class="outward-confirm-deadline-input" readonly="readonly" tabindex="-1"
+               value="{$sysRqDisplay|default='—'|htmlentities}" title="仅查看,不可修改"/>
+    </div>
+
     <p class="audit-notify-tip">
         审批通过:将向中标供应商发送「已通过」短信、向未中标供应商发送「未通过」短信。
     </p>
     <p class="outward-confirm-block-title">供应商({$confirmPickCount|default=0} 家)</p>
     <div class="outward-confirm-company-wrap">
-        <table class="table table-bordered table-condensed outward-confirm-company-table">
+        <table class="table table-bordered table-condensed outward-confirm-company-table outward-confirm-readonly">
             <thead>
             <tr>
-                <th class="text-center" style="width:42px;">选择</th>
+                <th class="text-center" style="width:52px;">选定</th>
                 <th style="min-width:140px;">供应商名称</th>
                 <th style="width:88px;">姓名</th>
                 <th style="min-width:160px;">邮箱</th>
@@ -204,7 +263,7 @@
                 {if $lk == 1}
                 <td class="text-center"{if condition="$co.display_rowspan gt 1"} rowspan="{$co.display_rowspan}"{/if} style="vertical-align:middle;">
                     <label>
-                        <input type="checkbox" class="pod-company-pick-cb" name="pod_company_pick[]" value="{$k-1}"
+                        <input type="checkbox" class="pod-company-pick-cb" name="pod_company_pick[]" value="{$k-1}" disabled="disabled" tabindex="-1"
                                data-detail-picks="{$co.detail_picks_json|htmlentities}"
                                {if condition="$pickedCompanyName neq '' && $pickedCompanyName eq $co.name"} checked="checked"{/if}/>
                     </label>

+ 5 - 33
public/assets/js/backend/procuremen.js

@@ -661,8 +661,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             return '';
                         }
                         var areaDetails = ' data-area=\'["92%","88%"]\'';
-                        var areaAudit = ' data-area=\'["92%","88%"]\'';
-                        var areaConfirmOutward = ' data-area=\'["96%","85%"]\'';
+                        var areaAudit = ' data-area=\'["96%","88%"]\'';
+                        var areaConfirmOutward = ' data-area=\'["96%","88%"]\'';
                         var parts = [];
                         if (tab === 'pick') {
                             return '';
@@ -1445,7 +1445,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         }
                         var winA = window;
                         if (winA.Backend && winA.Backend.api) {
-                            winA.Backend.api.open(auditUrl, '供应商报价明细', {area: ['92%', '88%']});
+                            winA.Backend.api.open(auditUrl, '供应商报价明细', {area: ['96%', '88%']});
                         }
                         return;
                     }
@@ -1748,35 +1748,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             }
 
             $wrap.off('.procuremenPurchaseConfirm');
-            $wrap.on('change.procuremenPurchaseConfirm', '.pod-company-pick-cb', function () {
-                if (!this.checked) {
-                    return;
-                }
-                var $self = $(this);
-                var myPicks = parseDetailPicks($self);
-                var mySids = picksSidSet(myPicks);
-                $wrap.find('.pod-company-pick-cb').not(this).each(function () {
-                    if (!this.checked) {
-                        return;
-                    }
-                    var otherSids = picksSidSet(parseDetailPicks($(this)));
-                    if (sidSetsOverlap(mySids, otherSids)) {
-                        $(this).prop('checked', false);
-                    }
-                });
-            });
-            $wrap.on('click.procuremenPurchaseConfirm', '.outward-confirm-company-table tbody tr', function (e) {
-                if ($(e.target).closest('input.pod-company-pick-cb,label').length) {
-                    return;
-                }
-                var idx = $(this).attr('data-supplier-idx');
-                var $cb = idx !== undefined && idx !== ''
-                    ? $wrap.find('.pod-company-pick-cb[value="' + idx + '"]').first()
-                    : $(this).find('.pod-company-pick-cb').first();
-                if ($cb.length) {
-                    $cb.prop('checked', !$cb.prop('checked')).trigger('change');
-                }
-            });
+            $wrap.find('.pod-company-pick-cb').prop('disabled', true);
 
             function procuremenOutwardFastRef() {
                 if (typeof Fast !== 'undefined' && Fast.api) {
@@ -1825,7 +1797,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 }
                 var $checked = $wrap.find('.pod-company-pick-cb:checked');
                 if (!$checked.length) {
-                    procuremenOutwardToast('请至少勾选一家供应商');
+                    procuremenOutwardToast('未指定中标供应商,无法审批通过');
                     return;
                 }