| | |
| | | <template> |
| | | <view class="receipt-payment-detail"> |
| | | <!-- 使用通用页面头部组件 --> |
| | | <PageHeader title="发货状态" |
| | | <PageHeader title="产品明细" |
| | | @back="goBack" /> |
| | | <!-- 统计信息 --> |
| | | <view class="summary-info"> |
| | |
| | | <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> |
| | |
| | | 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> |
| | |
| | | </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> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, computed, onMounted } from "vue"; |
| | | import { ref, onMounted } from "vue"; |
| | | import { productList } from "@/api/salesManagement/salesLedger"; |
| | | |
| | | // 客户信息 |
| | |
| | | // 表格数据 |
| | | 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 |
| | |
| | | supplierId.value = storedSupplierId; |
| | | } |
| | | }; |
| | | const goout = item => { |
| | | uni.setStorageSync("goOutData", JSON.stringify(item)); |
| | | uni.navigateTo({ |
| | | url: "/pages/sales/salesAccount/goOut", |
| | | }); |
| | | }; |
| | | |
| | | // 查询列表 |
| | | const getList = () => { |
| | | showLoadingToast("加载中..."); |
| | |
| | | }); |
| | | }); |
| | | }; |
| | | 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({ |