yyb
2026-05-21 b014cdaf7fcf42cd2b310968f9d47d4420444a6a
src/pages/oa/ApproveManage/approve-list/index.vue
@@ -73,20 +73,22 @@
            </view>
            <view class="detail-row">
              <text class="detail-label">申请时间</text>
              <text class="detail-value">{{ item.applyTime || "-" }}</text>
              <text class="detail-value">{{ formatDateTime(item.applyTime) }}</text>
            </view>
            <view v-if="item.finishTime"
                  class="detail-row">
              <text class="detail-label">完成时间</text>
              <text class="detail-value">{{ item.finishTime }}</text>
              <text class="detail-value">{{ formatDateTime(item.finishTime) }}</text>
            </view>
          </view>
          <view v-if="canEdit(item) || item.isApprove"
          <view v-if="canModify(item) || item.isApprove"
                class="action-buttons">
            <up-button v-if="canEdit(item)"
            <up-button v-if="canModify(item)"
                       class="action-btn"
                       size="small"
                       @click.stop="goEdit(item)">
                       type="warning"
                       plain
                       @click.stop="goModify(item)">
              编辑
            </up-button>
            <up-button v-if="item.isApprove"
@@ -123,6 +125,7 @@
  import { listApprovalInstancePage } from "@/api/oa/approvalInstance.js";
  import { OA_NAV } from "@/config/oaPaths.js";
  import useUserStore from "@/store/modules/user";
  import { parseTime } from "@/utils/ruoyi";
  const EDIT_STORAGE_KEY = "oa_approve_instance_edit_row";
  const userStore = useUserStore();
@@ -160,6 +163,27 @@
    if (level == null || level === "") return "-";
    return `第 ${level} 级`;
  };
  const formatDateTime = val => {
    if (!val) return "-";
    return parseTime(val, "{y}-{m}-{d} {h}:{i}:{s}") || String(val);
  };
  /** 是否本人发起的审批(兼容列表未返回 applicantId) */
  const isOwnApplication = item => {
    const uid = userStore.id;
    if (item?.applicantId != null && uid != null && uid !== "") {
      return String(item.applicantId) === String(uid);
    }
    const loginName = userStore.nickName || userStore.name;
    if (loginName && item?.applicantName) {
      return String(item.applicantName).trim() === String(loginName).trim();
    }
    return false;
  };
  /** 仅「进行中」且本人发起时可编辑(已通过/已驳回不显示编辑) */
  const canModify = item => item?.status === "PENDING" && isOwnApplication(item);
  const currentApproverName = item => {
    const tasks = item?.tasks;
@@ -243,11 +267,11 @@
    uni.navigateTo({ url: OA_NAV.approveListTemplateSelect });
  };
  const canEdit = item =>
    item?.status === "PENDING" &&
    String(item.applicantId) === String(userStore.id);
  const goEdit = item => {
  const goModify = item => {
    if (!canModify(item)) {
      uni.showToast({ title: "仅进行中的本人申请可编辑", icon: "none" });
      return;
    }
    if (!item?.id) return;
    uni.setStorageSync(EDIT_STORAGE_KEY, item);
    uni.navigateTo({