m0_70156489 1 month ago
parent
commit
3a92bd01dd

+ 6 - 6
application/admin/controller/Procuremen.php

@@ -4790,7 +4790,7 @@ class Procuremen extends Backend
 
             $exists = Db::table('purchase_order')->where('scydgy_id', $ids)->find();
 
-            $data = [
+            $data = $this->normalizePurchaseOrderWritePayload([
                 'scydgy_id'     => $ids,
                 'CCYDH'         => $row['CCYDH'] ?? null,
                 'CYJMC'         => $row['CYJMC'] ?? null,
@@ -4811,7 +4811,7 @@ class Procuremen extends Backend
                 'cywyxm'        => $row['cywyxm'] ?? null,
                 'This_quantity' => $row['This_quantity'] ?? $row['this_quantity'] ?? null,
                 'ceilingPrice'  => $row['ceilingPrice'] ?? $row['ceiling_price'] ?? null,
-            ];
+            ], $row);
             $qtySnap = trim((string)($data['This_quantity'] ?? ''));
             $priceSnap = trim((string)($data['ceilingPrice'] ?? ''));
             $mbzSnap = trim((string)($data['MBZ'] ?? ''));
@@ -4871,7 +4871,7 @@ class Procuremen extends Backend
 
             $exists = Db::table('purchase_order')->where('scydgy_id', $ids)->find();
 
-            $data = [
+            $data = $this->normalizePurchaseOrderWritePayload([
                 'scydgy_id'     => $ids,
                 'CCYDH'         => $row['CCYDH'] ?? null,
                 'CYJMC'         => $row['CYJMC'] ?? null,
@@ -4892,7 +4892,7 @@ class Procuremen extends Backend
                 'cywyxm'        => $row['cywyxm'] ?? null,
                 'This_quantity' => $row['This_quantity'] ?? $row['this_quantity'] ?? null,
                 'ceilingPrice'  => $row['ceilingPrice'] ?? $row['ceiling_price'] ?? null,
-            ];
+            ], $row);
 
             if ($asComplete) {
                 $data['status'] = ProcuremenStatus::PO_COMPLETED;
@@ -8081,7 +8081,7 @@ class Procuremen extends Backend
         $this->ensurePurchaseOrderDeliveryDeadlineColumn();
         $this->ensurePurchaseOrderScoreRuleIdColumn();
         $this->ensurePurchaseOrderCzlyqColumn();
-        $data = [
+        $data = $this->normalizePurchaseOrderWritePayload([
             'scydgy_id'     => $ids,
             'CCYDH'         => $row['CCYDH'] ?? null,
             'CYJMC'         => $row['CYJMC'] ?? null,
@@ -8104,7 +8104,7 @@ class Procuremen extends Backend
             'ceilingPrice'  => $row['ceilingPrice'] ?? $row['ceiling_price'] ?? null,
             'status'        => ProcuremenStatus::PO_IN_PROGRESS,
             'sys_rq'        => $sysRqDb,
-        ];
+        ], $row);
         // 下发未填本次数量时,用工作量落库,确认/审批列表可直接展示
         $qtyUp = trim((string)($data['This_quantity'] ?? ''));
         if ($qtyUp === '') {

+ 21 - 3
application/admin/view/procuremen/index.html

@@ -104,22 +104,40 @@
         z-index: 1;
         float: none !important;
     }
+    /* 手机:必须覆盖上方 nowrap/row !important,否则侧栏占满宽度、主表被挤成 0 宽呈空白 */
     @media (max-width: 767px) {
         #procuremen-layout .procuremen-layout.row {
-            flex-wrap: wrap;
+            flex-direction: column !important;
+            flex-wrap: nowrap !important;
+            min-height: calc(100vh - 120px);
+            align-items: stretch;
         }
         .procuremen-sidebar {
-            flex: 0 0 100%;
+            flex: 0 0 auto !important;
             width: 100% !important;
             min-width: 0 !important;
             max-width: 100% !important;
             border-right: none;
             border-bottom: 1px solid #d9d9d9;
             max-height: 160px;
+            align-self: stretch;
         }
         #procuremen-layout .procuremen-main {
-            flex: 1 1 100%;
+            display: flex !important;
+            flex-direction: column !important;
+            flex: 1 1 auto !important;
             width: 100% !important;
+            min-width: 0 !important;
+            min-height: 280px;
+        }
+        #procuremen-layout .procuremen-main > .tab-content,
+        #procuremen-layout .procuremen-main .tab-pane,
+        #procuremen-layout .procuremen-main .widget-body {
+            flex: 1 1 auto;
+            min-height: 0;
+            min-width: 0;
+            display: flex;
+            flex-direction: column;
         }
     }
     .procuremen-sidebar .year-title {

+ 24 - 0
application/admin/view/procuremen/rfqlist.html

@@ -168,6 +168,30 @@
             padding-left: 8px;
             box-sizing: border-box;
         }
+        /* 手机:侧栏改置顶,避免主表 width:0 在窄屏被挤成空白 */
+        @media (max-width: 767px) {
+            .procuremen-rfqlist-wrap .procuremen-rfq-layout {
+                flex-direction: column !important;
+                flex-wrap: nowrap !important;
+                min-height: calc(100vh - 120px);
+            }
+            .procuremen-rfqlist-wrap .procuremen-sidebar {
+                flex: 0 0 auto;
+                width: 100% !important;
+                min-width: 0 !important;
+                max-width: 100% !important;
+                border-right: none;
+                border-bottom: 1px solid #d9d9d9;
+                max-height: 160px;
+            }
+            .procuremen-rfqlist-wrap .procuremen-rfq-main {
+                flex: 1 1 auto;
+                width: 100% !important;
+                min-width: 0 !important;
+                min-height: 280px;
+                padding-left: 0;
+            }
+        }
     </style>
 
     <div class="panel-body" data-default-ym="{$defaultYm|default=''|htmlentities}">

+ 23 - 1
application/index/controller/Index.php

@@ -1663,6 +1663,22 @@ class Index extends Frontend
         if ($deliveryDeadline !== '' && !preg_match('/^0000-00-00/i', $deliveryDeadline)) {
             $row['delivery_deadline'] = $deliveryDeadline;
         }
+        // 下发备注(purchase_order.MBZ)→ 手机端未提交/已提交/已完成展示
+        $mbz = '';
+        foreach (['mbz', 'MBZ'] as $mk) {
+            if (array_key_exists($mk, $pl) && $pl[$mk] !== null && trim((string)$pl[$mk]) !== '') {
+                $mbz = trim((string)$pl[$mk]);
+                break;
+            }
+            if (array_key_exists($mk, $poRow) && $poRow[$mk] !== null && trim((string)$poRow[$mk]) !== '') {
+                $mbz = trim((string)$poRow[$mk]);
+                break;
+            }
+        }
+        if ($mbz !== '') {
+            $row['MBZ'] = $mbz;
+            $row['mproc_order_remark'] = $mbz;
+        }
     }
 
     /**
@@ -2155,6 +2171,9 @@ class Index extends Frontend
                     continue;
                 }
                 $rm = trim((string)($ln['mproc_remark'] ?? ''));
+                if ($rm === '') {
+                    $rm = trim((string)($ln['mproc_order_remark'] ?? $ln['MBZ'] ?? ''));
+                }
                 if ($rm !== '' && $remark === '') {
                     $remark = $rm;
                 }
@@ -2352,7 +2371,10 @@ class Index extends Frontend
             }
             $row['mproc_fill_hint'] = '';
             $row['mproc_this_quantity_display'] = $this->mprocResolveDisplayThisQuantity($row);
-            $row['mproc_remark'] = $this->mprocResolveDetailRemark($row);
+            // 列表备注:优先下发备注 MBZ,其次供应商明细备注
+            $orderRemark = trim((string)($row['mproc_order_remark'] ?? $row['MBZ'] ?? ''));
+            $detailRemark = $this->mprocResolveDetailRemark($row);
+            $row['mproc_remark'] = $orderRemark !== '' ? $orderRemark : $detailRemark;
         }
         unset($row);
         $rows = array_values(array_filter($rows, function ($r) {

+ 10 - 16
application/index/view/index/index.html

@@ -752,7 +752,7 @@
     {empty name="groups"}
     {notempty name="rows"}
     {volist name="rows" id="r"}
-    <div class="card order-group-card js-order-group{if $mprocFocusEid && $mprocFocusEid == $r.eid && ($mprocFocusTab == '' || $mprocFocusTab == $mprocTab)} mproc-card-highlight{/if}"{notempty name="r.mproc_remark"} data-remark="{$r.mproc_remark|htmlentities}"{/notempty} data-delivery-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$r.mproc_delivery_deadline|default=''|htmlentities}{/eq}" data-bid-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$r.mproc_bid_deadline|default=''|htmlentities}{/eq}" data-bid-open="{eq name='mprocIsRfqTab' value='1'}0{else /}{$r.mproc_bid_open_verified|default=0}{/eq}" data-is-rfq="{$mprocIsRfqTab|default=0}">
+    <div class="card order-group-card js-order-group{if $mprocFocusEid && $mprocFocusEid == $r.eid && ($mprocFocusTab == '' || $mprocFocusTab == $mprocTab)} mproc-card-highlight{/if}" data-remark="{$r.mproc_remark|default=''|htmlentities}" data-delivery-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$r.mproc_delivery_deadline|default=''|htmlentities}{/eq}" data-bid-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$r.mproc_bid_deadline|default=''|htmlentities}{/eq}" data-bid-open="{eq name='mprocIsRfqTab' value='1'}0{else /}{$r.mproc_bid_open_verified|default=0}{/eq}" data-is-rfq="{$mprocIsRfqTab|default=0}">
         <div class="order-group-head">
             <p class="title">{notempty name="r.CCYDH"}<span class="mproc-ord-no">{$r.CCYDH}</span>{/notempty}{$r.CYJMC|default=''}{eq name="mprocStatusTab" value="draft"}{eq name="mprocIsRfqTab" value="1"}<em class="mproc-pick-badge mproc-pick-unquoted">待报价</em>{else /}<em class="mproc-pick-badge mproc-pick-unquoted">未报价</em>{/eq}{/eq}{eq name="mprocStatusTab" value="submitted"}<em class="mproc-pick-badge mproc-pick-quoted">已报价</em>{/eq}{notempty name="r.mproc_done_label"}{eq name="mprocStatusTab" value="done"}<em class="mproc-pick-badge {eq name='r.mproc_pick_result' value='中标'}mproc-pick-win{else /}{eq name='r.mproc_pick_result' value='未中标'}mproc-pick-lose{else /}mproc-pick-expired{/eq}{/eq}">{$r.mproc_done_label|htmlentities}</em>{/eq}{/notempty}</p>
             {eq name="mprocIsRfqTab" value="0"}
@@ -760,6 +760,7 @@
                 <div class="kv"><span>招标截止日期</span>{notempty name="r.mproc_bid_deadline_display"}{$r.mproc_bid_deadline_display|htmlentities}{else /}—{/notempty}</div>
                 <div class="kv"><span>交货截止日期</span>{notempty name="r.mproc_delivery_deadline_display"}{$r.mproc_delivery_deadline_display|htmlentities}{else /}—{/notempty}</div>
             </div>
+            <div class="kv order-group-remark"><span>备注</span>{$r.mproc_remark|default=''|htmlentities}</div>
             {/eq}
         </div>
         <div class="order-line js-line"
@@ -780,9 +781,6 @@
                 <div class="kv"><span>单价</span>{if $r.amount_missing}<span class="kv-miss">未填写</span>{else /}{$r.amount_display|htmlentities}{/if}</div>
             </div>
         </div>
-        {notempty name="r.mproc_remark"}
-        <div class="kv order-group-remark"><span>备注</span>{$r.mproc_remark|htmlentities}</div>
-        {/notempty}
         {eq name="mprocIsRfqTab" value="0"}
         <div class="kv-row order-group-lead-row">
             <div class="kv"><span>工期</span>{if $r.lead_days_missing}<span class="kv-miss">未填写</span>{else /}{$r.lead_days_display|htmlentities}天{/if}</div>
@@ -801,7 +799,7 @@
     {/notempty}
     {else /}
     {volist name="groups" id="g"}
-    <div class="card order-group-card js-order-group{volist name='g.lines' id='_fe'}{if $mprocFocusEid && $mprocFocusEid == $_fe.eid && ($mprocFocusTab == '' || $mprocFocusTab == $mprocTab)} mproc-card-highlight{/if}{/volist}"{notempty name="g.remark"} data-remark="{$g.remark|htmlentities}"{/notempty} data-delivery-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$g.mproc_delivery_deadline|default=''|htmlentities}{/eq}" data-bid-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$g.mproc_bid_deadline|default=''|htmlentities}{/eq}" data-bid-open="{eq name='mprocIsRfqTab' value='1'}0{else /}{$g.mproc_bid_open_verified|default=0}{/eq}" data-is-rfq="{$mprocIsRfqTab|default=0}">
+    <div class="card order-group-card js-order-group{volist name='g.lines' id='_fe'}{if $mprocFocusEid && $mprocFocusEid == $_fe.eid && ($mprocFocusTab == '' || $mprocFocusTab == $mprocTab)} mproc-card-highlight{/if}{/volist}" data-remark="{$g.remark|default=''|htmlentities}" data-delivery-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$g.mproc_delivery_deadline|default=''|htmlentities}{/eq}" data-bid-deadline="{eq name='mprocIsRfqTab' value='1'}{else /}{$g.mproc_bid_deadline|default=''|htmlentities}{/eq}" data-bid-open="{eq name='mprocIsRfqTab' value='1'}0{else /}{$g.mproc_bid_open_verified|default=0}{/eq}" data-is-rfq="{$mprocIsRfqTab|default=0}">
         <div class="order-group-head">
             <p class="title">{notempty name="g.CCYDH"}<span class="mproc-ord-no">{$g.CCYDH}</span>{/notempty}{$g.CYJMC|default=''}{eq name="mprocStatusTab" value="draft"}{eq name="mprocIsRfqTab" value="1"}<em class="mproc-pick-badge mproc-pick-unquoted">待报价</em>{else /}<em class="mproc-pick-badge mproc-pick-unquoted">未报价</em>{/eq}{/eq}{eq name="mprocStatusTab" value="submitted"}<em class="mproc-pick-badge mproc-pick-quoted">已报价</em>{/eq}{notempty name="g.mproc_done_label"}{eq name="mprocStatusTab" value="done"}<em class="mproc-pick-badge {eq name='g.mproc_pick_result' value='中标'}mproc-pick-win{else /}{eq name='g.mproc_pick_result' value='未中标'}mproc-pick-lose{else /}mproc-pick-expired{/eq}{/eq}">{$g.mproc_done_label|htmlentities}</em>{/eq}{/notempty}</p>
             {eq name="mprocIsRfqTab" value="0"}
@@ -809,6 +807,7 @@
                 <div class="kv"><span>招标截止日期</span>{notempty name="g.mproc_bid_deadline_display"}{$g.mproc_bid_deadline_display|htmlentities}{else /}—{/notempty}</div>
                 <div class="kv"><span>交货截止日期</span>{notempty name="g.mproc_delivery_deadline_display"}{$g.mproc_delivery_deadline_display|htmlentities}{else /}—{/notempty}</div>
             </div>
+            <div class="kv order-group-remark"><span>备注</span>{$g.remark|default=''|htmlentities}</div>
             {/eq}
         </div>
         {volist name="g.lines" id="r"}
@@ -831,9 +830,6 @@
             </div>
         </div>
         {/volist}
-        {notempty name="g.remark"}
-        <div class="kv order-group-remark"><span>备注</span>{$g.remark|htmlentities}</div>
-        {/notempty}
         {notempty name="g.lines"}
         {eq name="mprocIsRfqTab" value="0"}
         <?php
@@ -1643,21 +1639,19 @@
                 return parseInt(r.mproc_bid_open_verified, 10) === 1;
             });
         }
-        var remark = pick(g, ['remark', 'Remark']);
+        var remark = pick(g, ['remark', 'Remark', 'mproc_remark', 'MBZ', 'mproc_order_remark']);
         if (!remark && lines.length) {
             for (var ri = 0; ri < lines.length; ri++) {
-                var rmk = pick(lines[ri], ['mproc_remark', 'remark']);
+                var rmk = pick(lines[ri], ['mproc_remark', 'mproc_order_remark', 'MBZ', 'remark']);
                 if (rmk) {
                     remark = rmk;
                     break;
                 }
             }
         }
-        var remarkAttr = remark ? (' data-remark="' + mprocEscAttr(remark) + '"') : '';
-        var remarkHtml = remark
-            ? ('<div class="kv order-group-remark"><span>备注</span>' + mprocEsc(remark) + '</div>')
-            : '';
+        var remarkAttr = ' data-remark="' + mprocEscAttr(remark || '') + '"';
         var isRfq = mprocIsRfqListTab(currentListTab);
+        var remarkHtml = isRfq ? '' : ('<div class="kv order-group-remark"><span>备注</span>' + mprocEsc(remark || '') + '</div>');
         var deadlineHtml = isRfq ? '' : ('<div class="kv-row order-group-deadline-row">'
             + '<div class="kv"><span>招标截止日期</span>' + mprocEsc(bidDl || '—') + '</div>'
             + '<div class="kv"><span>交货截止日期</span>' + mprocEsc(delDlDisp || '—') + '</div>'
@@ -1678,9 +1672,9 @@
             + '<div class="order-group-head">'
             + '<p class="title">' + (ccydh ? ('<span class="mproc-ord-no">' + mprocEsc(ccydh) + '</span>') : '') + mprocEsc(tit) + badgeHtml + '</p>'
             + deadlineHtml
+            + remarkHtml
             + '</div>'
             + linesHtml
-            + remarkHtml
             + mprocPickGroupLeadDeliveryHtml(lines)
             + (canEdit
                 ? '<div class="order-group-foot"><button type="button" class="btn-edit js-open-edit" data-stop="1">'
@@ -1711,7 +1705,7 @@
                 mproc_bid_deadline_display: pick(r, ['mproc_bid_deadline_display']),
                 mproc_delivery_deadline_display: pick(r, ['mproc_delivery_deadline_display']),
                 mproc_delivery_deadline: pick(r, ['mproc_delivery_deadline', 'delivery_deadline']),
-                remark: pick(r, ['mproc_remark', 'remark']),
+                remark: pick(r, ['mproc_remark', 'mproc_order_remark', 'MBZ', 'remark']),
                 can_edit: r.mproc_can_edit,
                 lines: [r]
             }, focusEid, focusTab);