WXL
3 天以前 5e093dcc9f4177bfd5f9ab2927914d2bf852770b
连续审批
已修改2个文件
159 ■■■■■ 文件已修改
src/views/project/fund/applyDetail/index.vue 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/travelexpenseapply/travelexpensedetail/index.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/applyDetail/index.vue
@@ -735,7 +735,8 @@
  getdownloadBX,
  addorupdateFund,
  ManualCalculation,
  getdetailsByItemId
  getdetailsByItemId,
  listbypower
} from "@/api/project/fund";
import {
@@ -813,7 +814,7 @@
    "sys_professionaltitle"
  ],
  data() {
  data() {
    // 自定义身份证号校验器
    const validateIdCard = (rule, value, callback) => {
      // 1. 如果为空,交给 required 规则去处理,这里直接放行
@@ -1029,6 +1030,8 @@
        flowconclusion: null,
        fundid: null
      },
      // 连续审批:待审批单据列表
      pendingList: [],
      // 查询参数
      queryParams: {
@@ -1385,6 +1388,14 @@
    handleCheck() {
      this.isopen = 0;
      this.reset();
      // 重置审批信息,避免上一单的审批结果带入下一单
      this.checkObj = {
        flowlevelone: null,
        flowconclusion: null,
        fundid: null
      };
      // 连续审批:加载当前业务类型下的待审批列表
      this.getPendingList();
      getFund(this.curId).then(response => {
        this.form = response.data;
@@ -1760,6 +1771,66 @@
      this.Savenow();
      console.log("保存并审批");
    },
    // 连续审批:获取当前业务类型下的待审批列表
    getPendingList() {
      return listbypower({
        pageNum: 1,
        pageSize: 1000,
        CHECKFLAG: 1,
        APPLYTYPE: this.businessType
      })
        .then(res => {
          this.pendingList = res.rows || [];
        })
        .catch(() => {
          this.pendingList = [];
        });
    },
    // 连续审批:审批完成后询问是否继续审批下一单
    continueOrExit() {
      // 重新拉取待审批列表(当前单据已审批完成被移出列表)
      this.getPendingList().then(() => {
        const list = this.pendingList || [];
        const next = list[0] || null;
        if (next) {
          this.$confirm("审批已完成,是否继续审批下一张待审批单据?", "提示", {
            confirmButtonText: "继续审批",
            cancelButtonText: "返回列表",
            type: "info"
          })
            .then(() => {
              // 在当前页面直接加载下一张待审批单据
              this.curId = next.id;
              this.handleCheck();
              // 同步更新地址栏,避免刷新后回到上一单
              this.$router
                .replace({
                  path: this.$route.path,
                  query: {
                    id: next.id,
                    businessType: this.businessType,
                    operationType: "check"
                  }
                })
                .catch(() => {});
            })
            .catch(() => {
              this.exitToPage();
            });
        } else {
          this.$modal.msgSuccess("已无待审批单据,返回列表");
          this.exitToPage();
        }
      });
    },
    // 返回列表页
    exitToPage() {
      this.$store.dispatch("tagsView/delView", this.$route);
      this.$router.go(-1);
    },
    // 取消按钮
@@ -2270,8 +2341,8 @@
                    //关闭窗口
                    this.$modal.closeLoading();
                    this.$modal.msgSuccess("审核完成!");
                    this.$store.dispatch("tagsView/delView", this.$route);
                    this.$router.go(-1);
                    // 连续审批:询问是否继续审批下一单
                    this.continueOrExit();
                  } else {
                    this.$modal.closeLoading();
src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -1282,7 +1282,8 @@
  exportReimbursement,
  getdownload,
  checkfund,
  fundSubmit
  fundSubmit,
  listbypowerone
} from "@/api/project/reimbursement";
import {
  addReimbursementdetail,
@@ -1492,6 +1493,8 @@
        flowconclusion: null,
        fundid: null
      },
      //连续审批:待审批列表
      pendingList: [],
      jurisdiction: false,
      //保存按钮控制
@@ -2575,7 +2578,15 @@
      this.reset();
      this.open = true;
      const id = ids || this.ids;
      this.checkObj.fundid = id;
      // 重置审批信息,避免上一单的审批结果带入下一单
      this.checkObj = {
        flowlevelone: null,
        flowconclusion: null,
        fundid: id
      };
      // 连续审批:加载当前用户的待审批列表
      this.getPendingList();
      getReimbursement(id).then(response => {
        this.form = response.data;
@@ -2665,9 +2676,8 @@
        if (res.code == 200) {
          this.$modal.closeLoading();
          this.$modal.msgSuccess("提交审核成功!");
          // 关闭窗口
          this.$store.dispatch("tagsView/delView", this.$route);
          this.$router.go(-1);
          // 连续审批:询问是否继续审批下一单
          this.continueOrExit();
        } else {
          this.$modal.closeLoading();
          if (res.msg) {
@@ -2679,6 +2689,66 @@
      });
    },
    // 获取当前用户待审批列表(用于连续审批)
    getPendingList() {
      listbypowerone({
        pageNum: 1,
        pageSize: 1000,
        CHECKFLAG: 1
      })
        .then(res => {
          this.pendingList = res.rows || [];
        })
        .catch(() => {
          this.pendingList = [];
        });
    },
    // 审批完成后:询问是否继续审批下一单
    continueOrExit() {
      const list = this.pendingList || [];
      const curId = String(this.checkObj.fundid);
      const idx = list.findIndex(item => String(item.id) === curId);
      let next = null;
      if (idx > -1 && idx + 1 < list.length) {
        next = list[idx + 1];
      } else {
        // 当前已是末位(或从中间开始),取剩余列表中第一条非当前单据
        next = list.find(item => String(item.id) !== curId) || null;
      }
      if (next) {
        this.$confirm("审批已完成,是否继续审批下一张待审批单据?", "提示", {
          confirmButtonText: "继续审批",
          cancelButtonText: "返回列表",
          type: "info"
        })
          .then(() => {
            // 直接在当前页面加载下一张待审批单据
            this.handleCheck(next.id);
            // 同步更新地址栏,避免刷新后回到上一单
            this.$router
              .replace({
                path: this.$route.path,
                query: { id: next.id, pos: 4 }
              })
              .catch(() => {});
          })
          .catch(() => {
            this.exitToPage();
          });
      } else {
        this.$modal.msgSuccess("已无待审批单据,返回列表");
        this.exitToPage();
      }
    },
    // 返回列表页
    exitToPage() {
      this.$store.dispatch("tagsView/delView", this.$route);
      this.$router.go(-1);
    },
    /** 提交保存按钮 */
    submitForm: debounce(function (data) {
      this.$refs["form"].validate(valid => {