|
|
|
|
@ -33,16 +33,21 @@
|
|
|
|
|
<view v-if="relateTask && taskId" class="form-field">
|
|
|
|
|
<text class="form-label">{{ t('productInbound.product') }}<text class="required-star">*</text></text>
|
|
|
|
|
<view class="task-product-search-row">
|
|
|
|
|
<input
|
|
|
|
|
id="product-inbound-task-product-scan-input"
|
|
|
|
|
v-model="taskProductScanInput"
|
|
|
|
|
class="task-product-scan-input"
|
|
|
|
|
type="text"
|
|
|
|
|
:placeholder="t('productInbound.selectProduct')"
|
|
|
|
|
confirm-type="done"
|
|
|
|
|
@input="onTaskProductScanInput"
|
|
|
|
|
@confirm="onTaskProductScanConfirm"
|
|
|
|
|
/>
|
|
|
|
|
<view class="scan-input-wrap">
|
|
|
|
|
<input
|
|
|
|
|
id="product-inbound-task-product-scan-input"
|
|
|
|
|
v-model="taskProductScanInput"
|
|
|
|
|
class="task-product-scan-input"
|
|
|
|
|
type="text"
|
|
|
|
|
:placeholder="t('productInbound.selectProduct')"
|
|
|
|
|
confirm-type="done"
|
|
|
|
|
@input="onTaskProductScanInput"
|
|
|
|
|
@confirm="onTaskProductScanConfirm"
|
|
|
|
|
/>
|
|
|
|
|
<view class="scan-input-icon">
|
|
|
|
|
<uni-icons type="scan" size="20" color="#9ca3af"></uni-icons>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="task-product-select-field" @click="goSelectTaskProduct">
|
|
|
|
|
<text class="task-product-select-text">{{ t('productInbound.selectProductTitle') }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
@ -52,16 +57,21 @@
|
|
|
|
|
<view v-if="!relateTask" class="form-field">
|
|
|
|
|
<text class="form-label">{{ t('productInbound.product') }}<text class="required-star">*</text></text>
|
|
|
|
|
<view class="task-product-search-row">
|
|
|
|
|
<input
|
|
|
|
|
id="product-inbound-product-scan-input"
|
|
|
|
|
v-model="productScanInput"
|
|
|
|
|
class="task-product-scan-input"
|
|
|
|
|
type="text"
|
|
|
|
|
:placeholder="t('productInbound.selectProduct')"
|
|
|
|
|
confirm-type="done"
|
|
|
|
|
@input="onProductScanInput"
|
|
|
|
|
@confirm="onProductScanConfirm"
|
|
|
|
|
/>
|
|
|
|
|
<view class="scan-input-wrap">
|
|
|
|
|
<input
|
|
|
|
|
id="product-inbound-product-scan-input"
|
|
|
|
|
v-model="productScanInput"
|
|
|
|
|
class="task-product-scan-input"
|
|
|
|
|
type="text"
|
|
|
|
|
:placeholder="t('productInbound.selectProduct')"
|
|
|
|
|
confirm-type="done"
|
|
|
|
|
@input="onProductScanInput"
|
|
|
|
|
@confirm="onProductScanConfirm"
|
|
|
|
|
/>
|
|
|
|
|
<view class="scan-input-icon">
|
|
|
|
|
<uni-icons type="scan" size="20" color="#9ca3af"></uni-icons>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="task-product-select-field" @click="goSelectProduct">
|
|
|
|
|
<text class="task-product-select-text">{{ t('productInbound.selectProductTitle') }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
@ -112,16 +122,21 @@
|
|
|
|
|
<text v-if="selectedPallets.length" class="label-tip">{{ t('productInbound.selectedPalletCount', { count: selectedPallets.length }) }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="task-product-search-row">
|
|
|
|
|
<input
|
|
|
|
|
id="product-inbound-pallet-scan-input"
|
|
|
|
|
v-model="palletScanInput"
|
|
|
|
|
class="task-product-scan-input"
|
|
|
|
|
type="text"
|
|
|
|
|
:placeholder="palletCode || t('productInbound.selectPallet')"
|
|
|
|
|
confirm-type="done"
|
|
|
|
|
@input="onPalletScanInput"
|
|
|
|
|
@confirm="onPalletScanConfirm"
|
|
|
|
|
/>
|
|
|
|
|
<view class="scan-input-wrap">
|
|
|
|
|
<input
|
|
|
|
|
id="product-inbound-pallet-scan-input"
|
|
|
|
|
v-model="palletScanInput"
|
|
|
|
|
class="task-product-scan-input"
|
|
|
|
|
type="text"
|
|
|
|
|
:placeholder="palletCode || t('productInbound.selectPallet')"
|
|
|
|
|
confirm-type="done"
|
|
|
|
|
@input="onPalletScanInput"
|
|
|
|
|
@confirm="onPalletScanConfirm"
|
|
|
|
|
/>
|
|
|
|
|
<view class="scan-input-icon">
|
|
|
|
|
<uni-icons type="scan" size="20" color="#9ca3af"></uni-icons>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="task-product-select-field" @click="goSelectPallet">
|
|
|
|
|
<text class="task-product-select-text">{{ t('productInbound.selectPalletTitle') }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
@ -784,7 +799,9 @@ onShow(async () => {
|
|
|
|
|
.select-placeholder { font-size: 28rpx; color: #9ca3af; }
|
|
|
|
|
.select-subtext { font-size: 24rpx; color: #6b7280; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
|
|
|
.task-product-search-row { display: flex; align-items: center; gap: 16rpx; }
|
|
|
|
|
.task-product-scan-input { flex: 1; min-width: 0; height: 70rpx; padding: 0 22rpx; background: #f8fafc; border: 1rpx solid #e5e7eb; border-radius: 14rpx; box-sizing: border-box; font-size: 28rpx; color: #1f2937; }
|
|
|
|
|
.scan-input-wrap { position: relative; flex: 1; min-width: 0; }
|
|
|
|
|
.task-product-scan-input { width: 100%; height: 70rpx; padding: 0 64rpx 0 22rpx; background: #f8fafc; border: 1rpx solid #e5e7eb; border-radius: 14rpx; box-sizing: border-box; font-size: 28rpx; color: #1f2937; }
|
|
|
|
|
.scan-input-icon { position: absolute; right: 20rpx; top: 0; bottom: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; }
|
|
|
|
|
.task-product-select-field { flex-shrink: 0; width: 160rpx; min-height: 70rpx; padding: 0 18rpx; background: #1f4b79; border-radius: 14rpx; box-sizing: border-box; display: flex; align-items: center; justify-content: center; }
|
|
|
|
|
.task-product-select-text { flex: 1; min-width: 0; font-size: 26rpx; font-weight: 600; color: #ffffff; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
|
|
|
.info-panel { margin-top: 22rpx; padding: 20rpx; background: #f8fafc; border: 1rpx solid #e8eef6; border-radius: 16rpx; }
|
|
|
|
|
|