viewer.vue 3.24 KB
<template>
  <view class="page">
    <scroll-view class="scroll" scroll-y>
      <view class="detail-page">
        <view class="section">
          <text class="row company">{{ form.purchaseOrderName }}</text>
          <view class="row"><text class="label">补货单编号</text><text class="value">{{ form.code }}</text></view>
          <view class="row"><text class="label">分厂</text><text class="value">{{ form.workshopName }}</text></view>
          <view class="row"><text class="label">办事处</text><text class="value">{{ form.deptName }}</text></view>
          <view class="row"><text class="label">区域</text><text class="value">{{ form.regionName }}</text></view>
          <view class="row"><text class="label">购货单位</text><text class="value">{{ form.customerName }}</text></view>
          <view class="row"><text class="label">原计划发货日期</text><text class="value">{{ form.originPlanShipDate }}</text></view>         
        </view>

        <!-- 产品 -->
        <view class="section2">
          <Product mode="view" :list="form.replenishmentOrderLineList"
            :orderDate="form.orderDate"
            :totalQuantity="form.totalQuantity"
            :totalShippedQuantity="form.totalShippedQuantity"
            :totalSupplementaryQuantity="form.totalSupplementaryQuantity"
             />
        </view>
      </view>
    </scroll-view>
  </view>
</template>

<script>
import { getDetailApi } from '@/api/replenishment_order.js'
import Product from './product.vue'

export default {
  name: 'ReplenishmentOrderViewer',
  components: { Product },
  props: { id: { type: [String, Number], default: '' } },
  data() {
    return {
      form: {},
    }
  },
  computed: {
  },
  watch: {
    id: {
      immediate: true,
      handler(val) {
        const v = (val !== undefined && val !== null) ? String(val) : ''
        if (v) this.loadDetail(v)
      }
    }
  },
  onLoad(query) {
  },
  methods: {
    async loadDetail(id) {
      try {
        const res = await getDetailApi(id)
        this.form = res.data || {}
      } catch (e) {
        this.form = {}
      }
    },
  }
}
</script>

<style lang="scss" scoped>
.page {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

.scroll {
  flex: 1;
  background: #f3f3f3;
}

.detail-page {
  padding-bottom: 20rpx;
}

.section {
  padding: 32rpx;
  background: #fff;
  margin-bottom: 20rpx;
  position: relative;

}

.row {
  display: flex;
  margin-bottom: 28rpx;

  &:last-child {
    margin-bottom: 0;
  }

  &.company {
    font-size: 36rpx;
    font-weight: 600;
    color: rgba(0, 0, 0, 0.9);
    padding-top: 10rpx;
    margin-bottom: 32rpx;
    line-height: 50rpx;
  }

  .label {
    width: 240rpx;
    line-height: 32rpx;
    font-size: 28rpx;
    color: rgba(0, 0, 0, 0.6);
  }

  .value {
    flex: 1;
    line-height: 32rpx;
    font-size: 28rpx;
    color: rgba(0, 0, 0, 0.9);
    text-align: right;
    word-break: break-all;
  }
}

.title-header {
  background-color: #fff;
  display: flex;
  align-items: center;
  padding: 32rpx 32rpx 22rpx;
  border-bottom: 1rpx dashed #f0f0f0;

  &_icon {
    width: 32rpx;
    height: 28rpx;
    margin-right: 16rpx;
  }

  span {
    color: rgba(0, 0, 0, 0.9);
    font-size: 32rpx;
    line-height: 44rpx;
    font-weight: 600;
  }
}
</style>