| | |
| | | <!-- <el-image |
| | | style="width: 95%; height: 90%" |
| | | :src="pdfimg" |
| | | :preview-src-list="pdfimgsrcList" --> |
| | | > |
| | | :preview-src-list="pdfimgsrcList" |
| | | > --> |
| | | <el-image |
| | | ref="imagePreview" |
| | | style="width: 95%; height: 90%" |
| | |
| | | exportReimbursement, |
| | | getdownload, |
| | | checkfund, |
| | | fundSubmit |
| | | fundSubmit, |
| | | listbypowerone |
| | | } from "@/api/project/reimbursement"; |
| | | import { |
| | | addReimbursementdetail, |
| | |
| | | import { listReportname, listUser } from "@/api/project/organization"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import debounce from "lodash/debounce"; |
| | | import { moneySum, moneyAdd, moneyRound } from "@/utils/money"; |
| | | export default { |
| | | components: { |
| | | Treeselect, |
| | |
| | | flowconclusion: null, |
| | | fundid: null |
| | | }, |
| | | //连续审批:待审批列表 |
| | | pendingList: [], |
| | | jurisdiction: false, |
| | | |
| | | //保存按钮控制 |
| | |
| | | if (tempStr == "杭州") { |
| | | row.otherexpense = ""; |
| | | } else if ( |
| | | tempStr == "杭州-桐庐" || |
| | | tempStr == "杭州-建德" || |
| | | tempStr == "杭州-淳安" |
| | | tempStr.includes("桐庐") || |
| | | tempStr.includes("建德") || |
| | | tempStr.includes("淳安") |
| | | ) { |
| | | row.otherexpense = (parseInt(row.days) * 60).toString(); |
| | | } else { |
| | |
| | | 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; |
| | |
| | | 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) { |
| | |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | // 获取当前用户待审批列表(用于连续审批) |
| | | 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); |
| | | }, |
| | | |
| | | /** 提交保存按钮 */ |
| | |
| | | }, |
| | | |
| | | //计算一行合计 |
| | | //计算当前行报销内容费用合计 |
| | | //计算当前行报销内容费用合计(金额一律走精确运算) |
| | | sumRowFee(row) { |
| | | let totalFee = 0; |
| | | if (!isNaN(parseFloat(row.trafficexpense))) { |
| | | totalFee += parseFloat(row.trafficexpense); |
| | | } |
| | | if (!isNaN(parseFloat(row.cityfee))) { |
| | | totalFee += parseFloat(row.cityfee); |
| | | } |
| | | if (!isNaN(parseFloat(row.hotelexpense))) { |
| | | totalFee += parseFloat(row.hotelexpense); |
| | | } |
| | | if (!isNaN(parseFloat(row.otherexpense))) { |
| | | totalFee += parseFloat(row.otherexpense); |
| | | } |
| | | if (!isNaN(parseFloat(row.foodexpenses))) { |
| | | totalFee += parseFloat(row.foodexpenses); |
| | | } |
| | | if (!isNaN(parseFloat(row.foodallowance))) { |
| | | totalFee += parseFloat(row.foodallowance); |
| | | } |
| | | if (!isNaN(parseFloat(row.otherfeeamount))) { |
| | | totalFee += parseFloat(row.otherfeeamount); |
| | | } |
| | | row.total = totalFee.toFixed(2); |
| | | const totalFee = moneySum([ |
| | | row.trafficexpense, |
| | | row.cityfee, |
| | | row.hotelexpense, |
| | | row.otherexpense, |
| | | row.foodexpenses, |
| | | row.foodallowance, |
| | | row.otherfeeamount |
| | | ]); |
| | | row.total = moneyRound(totalFee).toFixed(2); |
| | | |
| | | /* |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].trafficexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[rowIndex].trafficexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].cityfee))) { |
| | | totalFee += parseFloat(this.rbDetails[rowIndex].cityfee); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].hotelexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[rowIndex].hotelexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].otherexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[rowIndex].otherexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].foodexpenses))) { |
| | | totalFee += parseFloat(this.rbDetails[rowIndex].foodexpenses); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].foodallowance))) { |
| | | totalFee += parseFloat(this.rbDetails[rowIndex].foodallowance); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].otherfeeamount))) { |
| | | totalFee += parseFloat(this.rbDetails[rowIndex].otherfeeamount); |
| | | } |
| | | this.rbDetails[rowIndex].total = parseFloat(totalFee).toFixed(2); |
| | | this.$set(this.rbDetails, rowIndex, this.rbDetails[rowIndex]); |
| | | */ |
| | | //重新计算整个报销单的合计 |
| | | this.sumTotalFee(); |
| | | }, |
| | | |
| | | //计算费用合计 |
| | | sumTotalFee() { |
| | | let allSum = 0; |
| | | |
| | | //捐献者家属费用 |
| | | if (!isNaN(parseFloat(this.form.donoramount))) { |
| | | allSum += parseFloat(this.form.donoramount); |
| | | } |
| | | |
| | | //报销明细费用 |
| | | try { |
| | | for (let i = 0; i < this.rbDetails.length; i++) { |
| | | /* |
| | | let totalFee = 0; |
| | | //计算当前报销内容费用合计 |
| | | if (!isNaN(parseFloat(this.rbDetails[i].total))) { |
| | | totalFee += parseFloat(this.rbDetails[i].total); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].cityfee))) { |
| | | totalFee += parseFloat(this.rbDetails[i].cityfee); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].hotelexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[i].hotelexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].otherexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[i].otherexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].foodexpenses))) { |
| | | totalFee += parseFloat(this.rbDetails[i].foodexpenses); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].foodallowance))) { |
| | | totalFee += parseFloat(this.rbDetails[i].foodallowance); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].otherfeeamount))) { |
| | | totalFee += parseFloat(this.rbDetails[i].otherfeeamount); |
| | | } |
| | | this.rbDetails[i].total = parseFloat(totalFee).toFixed(2); |
| | | this.$set(this.rbDetails, i, this.rbDetails[i]); |
| | | */ |
| | | |
| | | if (!isNaN(parseFloat(this.rbDetails[i].total))) { |
| | | allSum += parseFloat(this.rbDetails[i].total); |
| | | } |
| | | } |
| | | |
| | | this.form.amountrequested = allSum.toFixed(2); |
| | | this.form.amountrequested = moneyAdd( |
| | | moneySum(this.rbDetails, "total"), |
| | | this.form.donoramount |
| | | ).toFixed(2); |
| | | this.form.bigstrmoney = this.convertCurrency(this.form.amountrequested); |
| | | } catch { } |
| | | }, |