yyb
5 天以前 0fd269224211075e9657d6cb285b10805cd5d24f
src/pages/sales/salesAccount/out.vue
@@ -1,7 +1,7 @@
<template>
  <view class="receipt-payment-detail">
    <!-- 使用通用页面头部组件 -->
    <PageHeader title="发货状态"
    <PageHeader title="产品明细"
                @back="goBack" />
    <!-- 统计信息 -->
    <view class="summary-info">
@@ -37,16 +37,48 @@
        <up-divider></up-divider>
        <view class="item-details">
          <view class="detail-row">
            <text class="detail-label">楼层编号</text>
            <text class="detail-value">{{ dv(item.floorCode) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">产品大类</text>
            <text class="detail-value">{{ item.productCategory }}</text>
            <text class="detail-value">{{ dv(item.productCategory) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">规格型号</text>
            <text class="detail-value">{{ item.specificationModel }}</text>
            <text class="detail-value">{{ dv(item.specificationModel) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">单位</text>
            <text class="detail-value">{{ item.unit }}</text>
            <text class="detail-label">厚度</text>
            <text class="detail-value">{{ dv(item.thickness) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">宽(mm)</text>
            <text class="detail-value">{{ dv(item.width) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">高(mm)</text>
            <text class="detail-value">{{ dv(item.height) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">周长(cm)</text>
            <text class="detail-value">{{ dv(item.perimeter) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">总面积(cm²)</text>
            <text class="detail-value">{{ dv(item.actualTotalArea) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">加工要求</text>
            <text class="detail-value">{{ dv(item.processRequirement) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">备注</text>
            <text class="detail-value">{{ dv(item.remark) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">重箱</text>
            <text class="detail-value">{{ dv(item.heavyBox) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">产品状态</text>
@@ -56,17 +88,12 @@
                  class="detail-value danger">不足</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">发货状态</text>
            <u-tag size="mini"
                   :type="getShippingStatusType(item)">{{ getShippingStatusText(item) }}</u-tag>
          </view>
          <view class="detail-row">
            <text class="detail-label">快递公司</text>
            <text class="detail-value">{{ item.expressCompany }}</text>
            <text class="detail-value">{{ dv(item.expressCompany) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">快递单号</text>
            <text class="detail-value">{{ item.expressNumber }}</text>
            <text class="detail-value">{{ dv(item.expressNumber) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">发货车牌</text>
@@ -79,36 +106,28 @@
          </view>
          <view class="detail-row">
            <text class="detail-label">发货日期</text>
            <text class="detail-value">{{ item.shippingDate || '-' }}</text>
            <text class="detail-value">{{ dv(item.shippingDate) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">数量</text>
            <text class="detail-value">{{ item.quantity }}</text>
            <text class="detail-value">{{ dv(item.quantity) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">税率(%)</text>
            <text class="detail-value">{{ item.taxRate }}</text>
            <text class="detail-label">税率(%)</text>
            <text class="detail-value">{{ dv(item.taxRate) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">含税单价(元)</text>
            <text class="detail-value">{{ item.taxInclusiveUnitPrice }}</text>
            <text class="detail-label">含税单价(元)</text>
            <text class="detail-value">{{ dv(item.taxInclusiveUnitPrice) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">含税总价(元)</text>
            <text class="detail-value">{{ item.taxInclusiveTotalPrice }}</text>
            <text class="detail-label">含税总价(元)</text>
            <text class="detail-value">{{ dv(item.taxInclusiveTotalPrice) }}</text>
          </view>
          <view class="detail-row">
            <text class="detail-label">不含税总价(元)</text>
            <text class="detail-value">{{ item.taxExclusiveTotalPrice }}</text>
            <text class="detail-label">不含税总价(元)</text>
            <text class="detail-value">{{ dv(item.taxExclusiveTotalPrice) }}</text>
          </view>
          <up-divider></up-divider>
          <u-button class="detail-button"
                    size="small"
                    type="primary"
                    :disabled="!canShip(item)"
                    @click="goout(item)">
            发货
          </u-button>
        </view>
      </view>
    </view>
@@ -120,7 +139,7 @@
</template>
<script setup>
  import { ref, computed, onMounted } from "vue";
  import { ref, onMounted } from "vue";
  import { productList } from "@/api/salesManagement/salesLedger";
  // 客户信息
@@ -129,63 +148,15 @@
  // 表格数据
  const tableData = ref([]);
  const dv = v =>
    v === null || v === undefined || v === "" ? "-" : v;
  // 返回上一页
  const goBack = () => {
    uni.removeStorageSync("supplierId");
    uni.navigateBack();
  };
  const getShippingStatusType = row => {
    // 如果已发货(有发货日期或车牌号),显示绿色
    if (row.shippingDate || row.shippingCarNumber) {
      return "success";
    }
    // 获取发货状态字段
    const status = row.shippingStatus;
    // 如果状态为空或未定义,默认为灰色(待发货)
    if (status === null || status === undefined || status === "") {
      return "info";
    }
    // 状态是字符串
    const statusStr = String(status).trim();
    const typeTextMap = {
      待发货: "info",
      待审核: "info",
      审核中: "warning",
      审核拒绝: "danger",
      审核通过: "success",
      已发货: "success",
    };
    return typeTextMap[statusStr] || "info";
  };
  const getShippingStatusText = row => {
    // 如果已发货(有发货日期或车牌号),显示"已发货"
    if (row.shippingDate || row.shippingCarNumber) {
      return "已发货";
    }
    // 获取发货状态字段
    const status = row.shippingStatus;
    // 如果状态为空或未定义,默认为"待发货"
    if (status === null || status === undefined || status === "") {
      return "待发货";
    }
    // 状态是字符串
    const statusStr = String(status).trim();
    const statusTextMap = {
      待发货: "待发货",
      待审核: "待审核",
      审核中: "审核中",
      审核拒绝: "审核拒绝",
      审核通过: "审核通过",
      已发货: "已发货",
    };
    return statusTextMap[statusStr] || "待发货";
  };
  // 获取页面参数
  const getPageParams = () => {
    // 从本地存储获取供应商ID
@@ -194,13 +165,6 @@
      supplierId.value = storedSupplierId;
    }
  };
  const goout = item => {
    uni.setStorageSync("goOutData", JSON.stringify(item));
    uni.navigateTo({
      url: "/pages/sales/salesAccount/goOut",
    });
  };
  // 查询列表
  const getList = () => {
    showLoadingToast("加载中...");
@@ -220,25 +184,6 @@
        });
      });
  };
  const canShip = row => {
    // 产品状态必须是充足(approveStatus === 1)
    if (row.approveStatus !== 1) {
      return false;
    }
    // 获取发货状态
    const shippingStatus = row.shippingStatus;
    // 如果已发货(有发货日期或车牌号),不能再次发货
    if (row.shippingDate || row.shippingCarNumber) {
      return false;
    }
    // 发货状态必须是"待发货"或"审核拒绝"
    const statusStr = shippingStatus ? String(shippingStatus).trim() : "";
    return statusStr === "待发货" || statusStr === "审核拒绝";
  };
  // 显示加载提示
  const showLoadingToast = message => {
    uni.showLoading({