spring
16 小时以前 a1131357b9e38c86e734816bae42d2fafcd48222
src/pages/inventoryManagement/stockManagement/subtract.vue
@@ -19,48 +19,10 @@
      </view>
      <view class="form-section">
        <view class="section-title">出库/过磅信息</view>
        <view class="section-title">出库信息</view>
        <view class="form-row">
          <text class="form-label">车牌号</text>
          <up-input v-model="form.licensePlateNo" placeholder="请输入车牌号" />
        </view>
        <view class="form-row">
          <text class="form-label">毛重(吨)</text>
          <up-input
            v-model="form.grossWeight"
            type="digit"
            placeholder="请输入毛重"
          />
        </view>
        <view class="form-row">
          <text class="form-label">皮重(吨)</text>
          <up-input
            v-model="form.tareWeight"
            type="digit"
            placeholder="请输入皮重"
          />
        </view>
        <view class="form-row">
          <text class="form-label">净重(吨)</text>
          <up-input
            v-model="form.netWeight"
            type="digit"
            disabled
            placeholder="自动计算"
          />
        </view>
        <view class="form-row">
          <text class="form-label">过磅日期</text>
          <view class="selector-trigger" @click="openWeighingDatePicker">
            <text class="selector-text" :class="{ placeholder: !form.weighingDate }">
              {{ form.weighingDate || '请选择过磅日期' }}
            </text>
            <up-icon name="calendar" size="16" color="#999"></up-icon>
          </view>
        </view>
        <view class="form-row">
          <text class="form-label">过磅员</text>
          <up-input v-model="form.weighingOperator" placeholder="请输入过磅员" />
          <text class="form-label">出库数量</text>
          <up-input v-model="form.stockOutNum" type="number" :placeholder="'最大' + (form.unLockedQuantity ?? 0)" />
        </view>
        <view class="form-row">
          <text class="form-label">备注</text>
@@ -72,24 +34,12 @@
    <view class="bottom-bar">
      <view class="btn-submit" @click="handleSubmit">出库</view>
    </view>
    <!-- 过磅日期选择器 -->
    <up-popup :show="showWeighingDatePicker" mode="bottom" @close="showWeighingDatePicker = false">
      <up-datetime-picker
        :show="true"
        v-model="weighingDateValue"
        mode="datetime"
        @confirm="onWeighingDateConfirm"
        @cancel="showWeighingDatePicker = false"
      />
    </up-popup>
  </view>
</template>
<script setup>
import { ref, reactive, watch, computed } from 'vue'
import { ref, reactive, computed } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import dayjs from 'dayjs'
import PageHeader from '@/components/PageHeader.vue'
import { subtractStockInventory } from '@/api/inventoryManagement/stockInventory.js'
@@ -113,19 +63,12 @@
  createTime: '',
  updateTime: '',
  version: undefined,
  // 出库/过磅信息
  licensePlateNo: '',
  grossWeight: '',
  tareWeight: '',
  netWeight: '',
  weighingDate: '',
  weighingOperator: '',
  // 出库信息
  stockOutNum: '',
  remark: ''
})
const type = ref('0') // 固定合格库存
const showWeighingDatePicker = ref(false)
const weighingDateValue = ref(Date.now())
onLoad((options) => {
  type.value = '0'
@@ -143,44 +86,22 @@
  }
})
// 净重 = 毛重 - 皮重
const computeNetWeight = () => {
  const gross = Number(form.grossWeight)
  const tare = Number(form.tareWeight)
  if (!isNaN(gross) && !isNaN(tare)) {
    const net = Number((gross - tare).toFixed(2))
    form.netWeight = net > 0 ? net : 0
  } else {
    form.netWeight = ''
  }
}
watch(
  () => [form.grossWeight, form.tareWeight],
  () => {
    computeNetWeight()
  }
)
const openWeighingDatePicker = () => {
  weighingDateValue.value = form.weighingDate
    ? dayjs(form.weighingDate, 'YYYY-MM-DD HH:mm:ss').valueOf()
    : Date.now()
  showWeighingDatePicker.value = true
}
const onWeighingDateConfirm = (e) => {
  const ts = e?.value ?? weighingDateValue.value
  form.weighingDate = dayjs(ts).format('YYYY-MM-DD HH:mm:ss')
  showWeighingDatePicker.value = false
}
const handleSubmit = () => {
  if (!form.id) {
    uni.showToast({ title: '记录信息缺失,无法出库', icon: 'none' })
    return
  }
  const payload = { ...form }
  const outNum = Number(form.stockOutNum)
  const max = Number(form.unLockedQuantity ?? 0)
  if (!outNum || outNum <= 0 || outNum > max) {
    uni.showToast({ title: `请输入 1~${max} 之间的数量`, icon: 'none' })
    return
  }
  const payload = {
    id: form.id,
    stockOutNum: outNum,
    remark: form.remark
  }
  subtractStockInventory(payload)
    .then(() => {
      uni.showToast({ title: '出库成功', icon: 'success' })