@@ -1,6 +1,6 @@
< script setup lang = "ts" >
import { computed , onBeforeUnmount , ref , watch } from 'vue'
import { Box , ClipboardCheck , Pencil , RefreshCw } from '@lucide/vue'
import { ClipboardCheck , Pencil , RefreshCw } from '@lucide/vue'
import { useAccessPreviewStore } from '@/core/access/accessPreview'
import { getApiErrorDetails , type ApiErrorDetails } from '@/shared/api/http'
import ApiErrorMeta from '@/shared/components/ApiErrorMeta.vue'
@@ -103,7 +103,6 @@ onBeforeUnmount(() => {
< header class = "workspace-header" >
< div >
< div class = "workspace-title-row" >
< span class = "workspace-mark" aria -hidden = " true " > < Box :size = "20" / > < / span >
< h2 > 入库码 : { { title } } < / h2 >
< StatusBadge v-if = "detail" :status="statusLabel" / >
< / div >
@@ -135,8 +134,8 @@ onBeforeUnmount(() => {
< InboundSummaryPanel :summary = "detail.summary" :public-remark = "detail.publicRemark" / >
< / el-tab-pane >
< el-tab-pane label = "货品与测量" name = "measurement" lazy >
< div class = "workflow-launch-panel " >
< div > < h3 > 编辑入库测量数据 < / h3 > < p > 核对原单数据 、 确认扫描箱数 , 并查看服务端计算的重量和体积结果 。 < / p > < / div >
< div class = "workflow-action-row " >
< span > 核对原单数据 、 确认扫描箱数 , 并查看服务端计算的重量和体积结果 。 < / span >
< el-button type = "primary" @click ="measurementDialogOpen = true" > < Pencil :size = "16" / > 编辑测量数据 < / el-button >
< / div >
< div class = "measurement-workflow" >
@@ -149,8 +148,8 @@ onBeforeUnmount(() => {
< / div >
< / el-tab-pane >
< el-tab-pane label = "测量审核" name = "review" lazy >
< div v-if = "canViewMeasurement" class="workflow-launch-panel " >
< div > < h3 > 审核入库测量数据 < / h3 > < p > 对照原单 、 设备实测和称重 OCR 结果后作出审核决定 。 < / p > < / div >
< div v-if = "canViewMeasurement" class="workflow-action-row " >
< span > 对照原单 、 设备实测和称重 OCR 结果后作出审核决定 。 < / span >
< el-button type = "primary" @click ="reviewDialogOpen = true" > < ClipboardCheck :size = "16" / > 审核测量数据 < / el-button >
< / div >
< el-alert
@@ -196,7 +195,7 @@ onBeforeUnmount(() => {
v-model = "measurementDialogOpen"
class = "inbound-operation-dialog inbound-measurement-dialog"
title = "编辑入库测量数据"
width = "min(190 0px, calc(100vw - 32px))"
width = "min(124 0px, calc(100vw - 32px))"
top = "4vh"
destroy -on -close
:close-on-click-modal = "false"
@@ -213,7 +212,7 @@ onBeforeUnmount(() => {
< template # footer >
< div class = "inbound-operation-dialog__footer" >
< el-button @click ="measurementDialogOpen = false" > 取消 < / el -button >
< el-button v-if = "measurementPanelRef?.canEdit" type="primary" plain :loading="measurementPanelRef?.saving" :disabled="!measurementPanelRef?.mayMaintain" @click="measurementPanelRef?.saveDraft()" > 保存确认箱数 < / el -button >
< el-button v-if = "measurementPanelRef?.canEdit" type="primary" plain :loading="measurementPanelRef?.saving" :disabled="!measurementPanelRef?.mayMaintain" @click="measurementPanelRef?.saveDraft()" > 保存测量数据 < / el -button >
< el-button v-if = "measurementPanelRef?.canSubmit" type="primary" :loading="measurementPanelRef?.submitting" :disabled="!measurementPanelRef?.maySubmit" @click="measurementPanelRef?.submitForReview()" > 提交审核 < / el -button >
< / div >
< / template >
@@ -223,7 +222,7 @@ onBeforeUnmount(() => {
v-model = "reviewDialogOpen"
class = "inbound-operation-dialog inbound-review-dialog"
title = "审核入库测量数据"
width = "min(170 0px, calc(100vw - 32px))"
width = "min(124 0px, calc(100vw - 32px))"
top = "4vh"
destroy -on -close
:close-on-click-modal = "false"
@@ -254,7 +253,6 @@ onBeforeUnmount(() => {
. inbound - workspace { min - width : 0 ; }
. workspace - header { display : flex ; align - items : flex - start ; justify - content : space - between ; gap : 20 px ; padding : 18 px 24 px 16 px ; border - bottom : 1 px solid var ( -- cc - border ) ; }
. workspace - title - row { display : flex ; min - width : 0 ; align - items : center ; flex - wrap : wrap ; gap : 10 px ; }
. workspace - mark { display : grid ; width : 36 px ; height : 36 px ; flex : 0 0 36 px ; place - items : center ; border - radius : 8 px ; background : # 1 e293b ; color : # fff ; }
. workspace - title - row h2 { margin : 0 ; overflow - wrap : anywhere ; color : # 172033 ; font - size : 16 px ; line - height : 1.35 ; }
. workspace - header p { margin : 5 px 0 0 ; color : var ( -- cc - muted ) ; font - size : 12 px ; line - height : 1.5 ; }
. workspace - state { margin : 24 px ; }
@@ -266,9 +264,7 @@ onBeforeUnmount(() => {
. workflow - tabs : deep ( . el - tabs _ _item ) { min - height : 44 px ; padding : 0 18 px ; color : # 475467 ; font - size : 13 px ; font - weight : 500 ; }
. workflow - tabs : deep ( . el - tabs _ _item . is - active ) { color : var ( -- cc - primary ) ; font - weight : 650 ; }
. measurement - workflow { display : grid ; min - width : 0 ; gap : 28 px ; }
. workflow - launch - panel { display : flex ; min - width : 0 ; align - items : center ; justify - content : space - between ; gap : 20 px ; padding : 20 px ; border : 1 px solid var ( -- cc - border ) ; border - radius : 8 px ; background : # fff ; }
. workflow - launch - panel h3 { margin : 0 ; color : var ( -- cc - text ) ; font - size : 15 px ; }
. workflow - launch - panel p { margin : 5 px 0 0 ; color : var ( -- cc - muted ) ; font - size : 12 px ; line - height : 1.55 ; }
. workflow - action - row { display : flex ; min - width : 0 ; align - items : center ; justify - content : space - between ; gap : 16 px ; padding : 0 0 14 px ; border - bottom : 1 px solid var ( -- cc - border ) ; color : var ( -- cc - muted ) ; font - size : 12 px ; line - height : 1.5 ; }
. inbound - operation - dialog _ _body { min - width : 0 ; }
. inbound - operation - dialog _ _footer { display : flex ; flex - wrap : wrap ; justify - content : flex - end ; gap : 10 px ; }
. inbound - operation - dialog _ _footer : deep ( . el - button ) { margin - left : 0 ; }
@@ -286,8 +282,8 @@ onBeforeUnmount(() => {
. workflow - tabs { padding : 0 16 px 16 px ; }
. workflow - tabs : deep ( . el - tabs _ _nav - wrap ) { overflow - x : auto ; }
. workflow - tabs : deep ( . el - tabs _ _item ) { min - height : 44 px ; padding - inline : 14 px ; }
. workflow - launch - panel { align - items : stretch ; flex - direction : column ; padding : 16 px ; }
. workflow - launch - panel : deep ( . el - button ) { width : 100 % ; min - height : 44 px ; }
. workflow - action - row { align - items : stretch ; flex - direction : column ; }
. workflow - action - row : deep ( . el - button ) { width : 100 % ; min - height : 44 px ; }
: global ( . inbound - operation - dialog . el - dialog ) { width : calc ( 100 vw - 20 px ) ! important ; max - width : calc ( 100 vw - 20 px ) ; height : 92 vh ; }
: global ( . inbound - operation - dialog . el - dialog _ _header ) { padding : 16 px ; }
: global ( . inbound - operation - dialog . el - dialog _ _body ) { padding : 14 px ; }