m0_70156489 1 giorno fa
parent
commit
f4bb393830

+ 11 - 24
application/admin/controller/Procuremen.php

@@ -5763,34 +5763,13 @@ class Procuremen extends Backend
     }
     }
 
 
     /**
     /**
+     * 确认页截止时间已只读:不再根据 POST 覆盖写库,仅沿用订单已有截止时间
+     *
      * @param array{ccydh?:string,pos:array,merge_rows:array} $bundle
      * @param array{ccydh?:string,pos:array,merge_rows:array} $bundle
      * @return array{ccydh?:string,pos:array,merge_rows:array}
      * @return array{ccydh?:string,pos:array,merge_rows:array}
      */
      */
     protected function applyAuditSysRqPostToBundle(array $bundle, string $sysRqPost): array
     protected function applyAuditSysRqPostToBundle(array $bundle, string $sysRqPost): array
     {
     {
-        $sysRqPost = trim($sysRqPost);
-        if ($sysRqPost === '') {
-            return $bundle;
-        }
-        $sysRqDb = $this->parseProcuremenSysRqInput($sysRqPost, true);
-        $pos = $bundle['pos'] ?? [];
-        foreach ($pos as $poRow) {
-            if (!is_array($poRow)) {
-                continue;
-            }
-            $sid = (int)($poRow['scydgy_id'] ?? 0);
-            if (!$this->isValidScydgyRowId($sid)) {
-                continue;
-            }
-            Db::table('purchase_order')->where('scydgy_id', $sid)->update(['sys_rq' => $sysRqDb]);
-        }
-        foreach ($pos as $i => $poRow) {
-            if (is_array($pos[$i])) {
-                $pos[$i]['sys_rq'] = $sysRqDb;
-            }
-        }
-        $bundle['pos'] = $pos;
-
         return $bundle;
         return $bundle;
     }
     }
 
 
@@ -7239,7 +7218,12 @@ class Procuremen extends Backend
             $this->error('所选供应商不在本单报价列表中');
             $this->error('所选供应商不在本单报价列表中');
         }
         }
 
 
-        $sysRqDb = $this->parseProcuremenSysRqInput(trim((string)$this->request->post('sys_rq', '')), true);
+        $sysRqDb = $this->formatProcuremenSysRqForInput($this->resolveBundleSysRq($bundle));
+        if ($sysRqDb === '') {
+            $sysRqDb = $this->parseProcuremenSysRqInput(trim((string)$this->request->post('sys_rq', '')), true);
+        } else {
+            $sysRqDb = $this->parseProcuremenSysRqInput($sysRqDb, true);
+        }
         if (!$this->isProcuremenBidOpenVerifiedForBundle($bundle)) {
         if (!$this->isProcuremenBidOpenVerifiedForBundle($bundle)) {
             $this->error('请先完成开标双重验证后再确认供应商');
             $this->error('请先完成开标双重验证后再确认供应商');
         }
         }
@@ -7925,6 +7909,9 @@ class Procuremen extends Backend
             );
             );
         }
         }
         $this->view->assign('sysRqDisplay', $sysRqDisplay);
         $this->view->assign('sysRqDisplay', $sysRqDisplay);
+        $this->view->assign('sysRq', $isPurchaseConfirm
+            ? $this->formatProcuremenSysRqForInput($this->resolveBundleSysRq(['pos' => $confirmBundle['pos'] ?? []]))
+            : '');
         $this->view->assign('requiredSidListJson', json_encode(array_values($requiredSidList), JSON_UNESCAPED_UNICODE));
         $this->view->assign('requiredSidListJson', json_encode(array_values($requiredSidList), JSON_UNESCAPED_UNICODE));
         $this->view->assign('allDetailsBySidJson', json_encode($allDetailsBySid, JSON_UNESCAPED_UNICODE));
         $this->view->assign('allDetailsBySidJson', json_encode($allDetailsBySid, JSON_UNESCAPED_UNICODE));
 
 

+ 13 - 5
application/admin/view/procuremen/audit_issue.html

@@ -130,6 +130,14 @@
         font-weight: 600;
         font-weight: 600;
         line-height: 32px;
         line-height: 32px;
     }
     }
+    .audit-issue-wrap .procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-date,
+    .audit-issue-wrap .procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-hour,
+    .audit-issue-wrap .procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-minute {
+        background-color: #f5f5f5;
+        color: #333;
+        cursor: default;
+        pointer-events: none;
+    }
     .audit-issue-wrap .audit-op-cell {
     .audit-issue-wrap .audit-op-cell {
         white-space: nowrap;
         white-space: nowrap;
     }
     }
@@ -251,15 +259,15 @@
         <input type="hidden" id="audit-bid-open-verified" value="{$bidOpenVerified|default=0}"/>
         <input type="hidden" id="audit-bid-open-verified" value="{$bidOpenVerified|default=0}"/>
         <input type="hidden" id="audit-order-ccydh" value="{$orderCcydh|default=''|htmlentities}"/>
         <input type="hidden" id="audit-order-ccydh" value="{$orderCcydh|default=''|htmlentities}"/>
         <div class="audit-deadline-row">
         <div class="audit-deadline-row">
-            <span class="audit-field-label">截止时间:<span class="text-danger">*</span></span>
-            <div class="audit-deadline-input-wrap procuremen-sys-rq-split" id="audit-sys-rq-wrap">
+            <span class="audit-field-label">截止时间:</span>
+            <div class="audit-deadline-input-wrap procuremen-sys-rq-split is-readonly" id="audit-sys-rq-wrap" title="仅查看,不可修改">
                 <input type="hidden" id="audit-sys-rq" name="sys_rq" value="{$sysRq|default=''|htmlentities}"/>
                 <input type="hidden" id="audit-sys-rq" name="sys_rq" value="{$sysRq|default=''|htmlentities}"/>
                 <div class="procuremen-sys-rq-fields">
                 <div class="procuremen-sys-rq-fields">
-                    <input type="date" class="form-control procuremen-sys-rq-date" title="截止日期"/>
+                    <input type="date" class="form-control procuremen-sys-rq-date" title="截止日期" readonly="readonly" disabled="disabled" tabindex="-1"/>
                     <div class="procuremen-sys-rq-time-group">
                     <div class="procuremen-sys-rq-time-group">
-                        <select class="form-control procuremen-sys-rq-hour" title="时"></select>
+                        <select class="form-control procuremen-sys-rq-hour" title="时" disabled="disabled" tabindex="-1"></select>
                         <span class="procuremen-sys-rq-colon">:</span>
                         <span class="procuremen-sys-rq-colon">:</span>
-                        <select class="form-control procuremen-sys-rq-minute" title="分"></select>
+                        <select class="form-control procuremen-sys-rq-minute" title="分" disabled="disabled" tabindex="-1"></select>
                     </div>
                     </div>
                     {if $bidOpenVerified}
                     {if $bidOpenVerified}
                     <span class="audit-bid-open-verified-tag"><i class="fa fa-check-circle"></i> 已开标验证</span>
                     <span class="audit-bid-open-verified-tag"><i class="fa fa-check-circle"></i> 已开标验证</span>

+ 45 - 10
application/admin/view/procuremen/outward_detail.html

@@ -111,17 +111,43 @@
         white-space: nowrap;
         white-space: nowrap;
         margin: 0;
         margin: 0;
     }
     }
-    .outward-confirm-deadline-input {
-        width: 200px;
-        max-width: 100%;
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split .procuremen-sys-rq-fields {
+        display: flex;
+        flex-wrap: wrap;
+        align-items: center;
+        gap: 8px;
+    }
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split .procuremen-sys-rq-date {
+        width: 148px;
+        min-width: 132px;
         height: 32px;
         height: 32px;
-        padding: 4px 10px;
+        padding: 4px 8px;
         font-size: 13px;
         font-size: 13px;
-        color: #333;
+    }
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split .procuremen-sys-rq-time-group {
+        display: inline-flex;
+        align-items: center;
+        gap: 4px;
+    }
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split .procuremen-sys-rq-hour,
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split .procuremen-sys-rq-minute {
+        width: 62px;
+        height: 32px;
+        padding: 4px 6px;
+        font-size: 13px;
+    }
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split .procuremen-sys-rq-colon {
+        color: #666;
+        font-weight: 600;
+        line-height: 32px;
+    }
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-date,
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-hour,
+    .outward-confirm-deadline-wrap.procuremen-sys-rq-split.is-readonly .procuremen-sys-rq-minute {
         background-color: #f5f5f5;
         background-color: #f5f5f5;
-        border: 1px solid #ddd;
-        border-radius: 3px;
+        color: #333;
         cursor: default;
         cursor: default;
+        pointer-events: none;
         box-shadow: none;
         box-shadow: none;
     }
     }
     .outward-confirm-company-table.outward-confirm-readonly tbody tr {
     .outward-confirm-company-table.outward-confirm-readonly tbody tr {
@@ -232,9 +258,18 @@
     {/if}
     {/if}
 
 
     <div class="outward-confirm-deadline-row">
     <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="仅查看,不可修改"/>
+        <label class="deadline-label">截止时间:</label>
+        <div class="outward-confirm-deadline-wrap procuremen-sys-rq-split is-readonly" id="outward-confirm-sys-rq-wrap" title="仅查看,不可修改">
+            <input type="hidden" id="outward-confirm-sys-rq" name="sys_rq" value="{$sysRq|default=''|htmlentities}"/>
+            <div class="procuremen-sys-rq-fields">
+                <input type="date" class="form-control procuremen-sys-rq-date" title="截止日期" readonly="readonly" disabled="disabled" tabindex="-1"/>
+                <div class="procuremen-sys-rq-time-group">
+                    <select class="form-control procuremen-sys-rq-hour" title="时" disabled="disabled" tabindex="-1"></select>
+                    <span class="procuremen-sys-rq-colon">:</span>
+                    <select class="form-control procuremen-sys-rq-minute" title="分" disabled="disabled" tabindex="-1"></select>
+                </div>
+            </div>
+        </div>
     </div>
     </div>
 
 
     <p class="audit-notify-tip">
     <p class="audit-notify-tip">

+ 15 - 4
public/assets/js/backend/procuremen.js

@@ -232,11 +232,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         return procuremenDefaultSysRqValue();
         return procuremenDefaultSysRqValue();
     }
     }
 
 
-    /** 截止时间:日期 + 时下拉 + 分下拉 + 快捷按钮(替代整段 datetimepicker) */
-    function procuremenInitSysRqSplit($wrap, eventNs) {
+    /** 截止时间:日期 + 时下拉 + 分下拉(options.readonly 时仅展示不可改) */
+    function procuremenInitSysRqSplit($wrap, eventNs, options) {
         if (!$wrap || !$wrap.length) {
         if (!$wrap || !$wrap.length) {
             return;
             return;
         }
         }
+        options = options || {};
+        var readonly = !!options.readonly;
         var $hidden = $wrap.find('input[type="hidden"][id$="-sys-rq"]');
         var $hidden = $wrap.find('input[type="hidden"][id$="-sys-rq"]');
         var $date = $wrap.find('.procuremen-sys-rq-date');
         var $date = $wrap.find('.procuremen-sys-rq-date');
         var $hour = $wrap.find('.procuremen-sys-rq-hour');
         var $hour = $wrap.find('.procuremen-sys-rq-hour');
@@ -278,11 +280,19 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         };
         };
 
 
         syncFromHidden($hidden.val());
         syncFromHidden($hidden.val());
-        if (!$date.val()) {
+        if (!$date.val() && !readonly) {
             syncFromHidden(procuremenDefaultSysRqValue());
             syncFromHidden(procuremenDefaultSysRqValue());
             syncToHidden();
             syncToHidden();
         }
         }
 
 
+        if (readonly) {
+            $wrap.addClass('is-readonly');
+            $date.prop({disabled: true, readonly: true}).attr('tabindex', '-1');
+            $hour.prop('disabled', true).attr('tabindex', '-1');
+            $minute.prop('disabled', true).attr('tabindex', '-1');
+            return;
+        }
+
         $date.add($hour).add($minute)
         $date.add($hour).add($minute)
             .off('change.' + eventNs + ' input.' + eventNs)
             .off('change.' + eventNs + ' input.' + eventNs)
             .on('change.' + eventNs + ' input.' + eventNs, syncToHidden);
             .on('change.' + eventNs + ' input.' + eventNs, syncToHidden);
@@ -1752,6 +1762,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         },
         },
         outward_detail: function () {
         outward_detail: function () {
             Controller.api.bindevent();
             Controller.api.bindevent();
+            procuremenInitSysRqSplit($('#outward-confirm-sys-rq-wrap'), 'outwardConfirm', {readonly: true});
             var $wrap = $('.outward-detail-wrap');
             var $wrap = $('.outward-detail-wrap');
             if (!$wrap.length || !$('#btn-pod-purchase-confirm').length) {
             if (!$wrap.length || !$('#btn-pod-purchase-confirm').length) {
                 return;
                 return;
@@ -2944,7 +2955,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 return data;
                 return data;
             }
             }
 
 
-            procuremenInitSysRqSplit($('#audit-sys-rq-wrap'), 'auditIssue');
+            procuremenInitSysRqSplit($('#audit-sys-rq-wrap'), 'auditIssue', {readonly: true});
 
 
             function auditIssueBidOpenVerified() {
             function auditIssueBidOpenVerified() {
                 return parseInt($('#audit-bid-open-verified').val(), 10) === 1;
                 return parseInt($('#audit-bid-open-verified').val(), 10) === 1;