zhangwencui
2026-06-30 7a0790d8224db45a039bf33d0ef4e24ae879a243
src/pages/procurementManagement/procurementLedger/index.vue
@@ -46,8 +46,12 @@
          <up-divider></up-divider>
          <view class="item-details">
            <view class="detail-row">
              <text class="detail-label">销售合同号</text>
              <text class="detail-value">{{ item.salesContractNo }}</text>
              <text class="detail-label">入库状态</text>
              <view class="detail-value">
                <u-tag :type="getStockInStatusType(item.stockInStatus)">
                  {{ item.stockInStatus || '--' }}
                </u-tag>
              </view>
            </view>
            <view class="detail-row">
              <text class="detail-label">供应商名称</text>
@@ -76,6 +80,17 @@
                <text class="detail-value">{{ item.entryDate }}</text>
              </view>
            </view>
            <!-- 仅非“审批通过”的台账展示删除按钮 -->
            <view class="detail-row"
                  v-if="item.approvalStatus !== 3 && item.stockInStatus !== '完全入库'"
                  style="justify-content: flex-end; margin-top: 8px;">
              <up-button type="error"
                         size="small"
                         plain
                         @click.stop="handleDelete(item)">
                删除
              </up-button>
            </view>
          </view>
        </view>
      </view>
@@ -99,7 +114,10 @@
  import { onShow } from "@dcloudio/uni-app";
  import useUserStore from "@/store/modules/user";
  import PageHeader from "@/components/PageHeader.vue";
  import { purchaseListPage } from "@/api/procurementManagement/procurementLedger";
  import {
    purchaseListPage,
    delPurchase,
  } from "@/api/procurementManagement/procurementLedger";
  const userStore = useUserStore();
  const approvalStatusText = {
    1: "待审核",
@@ -116,6 +134,14 @@
      4: "error", // 审批失败 - 红色
    };
    return typeMap[status] || "";
  };
  const getStockInStatusType = status => {
    const typeMap = {
      待入库: "info",
      入库中: "warning",
      完全入库: "success",
    };
    return typeMap[status] || "info";
  };
  // 搜索关键词
  const purchaseContractNumber = ref("");
@@ -165,6 +191,7 @@
    try {
      // 设置操作类型
      uni.setStorageSync("operationType", type);
      uni.removeStorageSync("editData");
      // 如果是查看或编辑操作
      if (type !== "add") {
@@ -180,6 +207,13 @@
        // 检查权限:只有录入人才能编辑
        if (row.recorderName != userStore.nickName) {
          // 非录入人跳转到只读详情页面
          uni.setStorageSync("editData", JSON.stringify(row));
          uni.navigateTo({
            url: "/pages/procurementManagement/procurementLedger/view",
          });
          return;
        }
        if (row.stockInStatus === "完全入库") {
          uni.setStorageSync("editData", JSON.stringify(row));
          uni.navigateTo({
            url: "/pages/procurementManagement/procurementLedger/view",
@@ -208,6 +242,64 @@
    }
  };
  // 删除单条采购台账
  const handleDelete = row => {
    if (!row || !row.id) {
      uni.showToast({
        title: "数据有误,无法删除",
        icon: "none",
      });
      return;
    }
    uni.showModal({
      title: "提示",
      content: "选中的内容将被删除,是否确认删除?",
      confirmText: "确认",
      cancelText: "取消",
      success: res => {
        if (res.confirm) {
          delPurchase([row.id])
            .then(result => {
              // 成功:code === 200
              if (result && result.code === 200) {
                uni.showToast({
                  title: "删除成功",
                  icon: "success",
                });
                getList();
                return;
              }
              // 业务失败:优先展示后端返回的 msg(如 CG2026... 不允许删除)
              uni.showToast({
                title: (result && result.msg) || "删除失败",
                icon: "none",
              });
            })
            .catch(error => {
              // 对于 request 封装返回的 '500' 或其他 code,错误提示已经在 request 里 toast 过了,这里不再重复覆盖
              if (error === "500" || typeof error === "number") {
                return;
              }
              // 只有在真正异常时,才在这里兜底提示
              const msg =
                (error && error.msg) ||
                (error &&
                  error.response &&
                  error.response.data &&
                  error.response.data.msg) ||
                (error && error.message) ||
                "删除失败";
              uni.showToast({
                title: msg,
                icon: "none",
              });
            });
        }
      },
    });
  };
  onShow(() => {
    // 页面显示时刷新列表
    getList();